Xóa hết các đối tượng trên sheet

Liên hệ QC

nguyennb

Thành viên hoạt động
Tham gia
23/10/07
Bài viết
103
Được thích
32
Trong một sheet mình insert nhiều đối tượng như ảnh từ file, các đối tượng của Autoshape, các vòng tròn, hình vuông... Khi bôi đen cả sheet rồi ấn nút xóa thì các đối tượng này không bị xóa theo. Có cách nào xóa hết chúng không (sử dụng VBA). Thank
 
Bạn dùng công cụ Select Object nằm trên thanh Drawing, kéo vùng để chọn các đối tượng rồi nhấn phím Delete là được.
 
Upvote 0
Tác giả yêu cầu dùng VBA anh Cọp ơi
 
Upvote 0
Mình thử đoạn code sau xóa sạch trơn các sharpe, control, picture... Bạn xem thử nếu loại nào chưa xóa được thì bổ xung nhé

Mã:
Sub xoadt()
Dim obj As OLEObject
Dim sha As Shape
For Each sha In Sheet1.Shapes
sha.Delete
Next
For Each obj In Sheet1.OLEObjects
obj.Delete
Next
End Sub
 
Upvote 0
Bạn thử cái này xem.

PHP:
Sub DelDrawingObjects()
    ActiveSheet.DrawingObjects.Select
    Selection.Delete
End Sub
Nếu có đối tượng nào đó không xoá được thì bạn nhấn vào nút Design Mode (hình eke trong thanh công cụ Visual Basic) và chạy lại lệnh này.
 
Upvote 0
Bạn thử cái này xem.

PHP:
Sub DelDrawingObjects()
    ActiveSheet.DrawingObjects.Select
    Selection.Delete
End Sub
Nếu có đối tượng nào đó không xoá được thì bạn nhấn vào nút Design Mode (hình eke trong thanh công cụ Visual Basic) và chạy lại lệnh này.

Code này bạn có thể rút ngắn lại chút nữa đấy!
PHP:
Sub DelDrawingObjects()
    ActiveSheet.DrawingObjects.Delete
End Sub
Thao tác đơn giản nhất mà hiệu quả nhất là không cần code, hoặc nếu muốn viết code thì bạn có thể record macro thao tác này, như sau:

Tại sheet hiện hành, ấn Ctrl+G (Goto) --> Chọn Special --> Chọn Objects --> ấn OK --> Ấn phím Delete --> Xong
 
Upvote 0
Bạn thử cái này xem.

PHP:
Sub DelDrawingObjects()
    ActiveSheet.DrawingObjects.Select
    Selection.Delete
End Sub
Nếu có đối tượng nào đó không xoá được thì bạn nhấn vào nút Design Mode (hình eke trong thanh công cụ Visual Basic) và chạy lại lệnh này.
Tôi nghĩ cũng không cần phải bấm nút Design mode gì cả anh à ---> Nó xóa được tuốt đấy (thử rồi)
Ngoài ra anh nên rút gọn code như ca_dafi vừa trình bày ở trên ---> Nói chung sau khi ta recode macro hay viết code thì cũng nên chăm chút lại tí xíu, cái nào bỏ được cứ bỏ (bằng cách thí nghiệm và rút ra kết luận)... nhất là mấy cái Select ... bỏ tuốt anh à (đương nhiên loại trừ trường hợp bất khả kháng) ---> Rồi anh sẽ thấy code anh dần dần "đẹp" lên như 1 bài thơ hay... Ẹc.. Ẹc...
 
Upvote 0
Mình làm được rồi. Cảm ơn mọi người nhé
 
Upvote 0
Xóa picture khi file đang đóng

Mình có trường hợp nhờ các bạn giúp đỡ :
Trong foder có nhiều file , mình muốn xóa hết picture (đối tượng khác thì không) mà không cần mở từng file ra .
Cảm ơn trước
 
Upvote 0
Mình có trường hợp nhờ các bạn giúp đỡ :
Trong foder có nhiều file , mình muốn xóa hết picture (đối tượng khác thì không) mà không cần mở từng file ra .
Cảm ơn trước
Không mở file làm sao mà xóa hả bạn?
Dùng code ta cũng sẽ mở file lên, xóa xong rồi đóng file lại (lưu file khi đóng)
Vậy thôi!
Code để duyệt file trong 1 Folder có đầy trên GPE rồi, thiết nghĩ không cần đưa thêm lên nữa ---> Bạn tự tìm đi
 
Upvote 0
Mình có trường hợp nhờ các bạn giúp đỡ :
Trong foder có nhiều file , mình muốn xóa hết picture (đối tượng khác thì không) mà không cần mở từng file ra .
Cảm ơn trước

Mở file ra dò các sheet có chứa object nào là hình thì xóa, lưu và đóng file đó lại, tiếp tục mở file mới....

Bạn dùng code sau nhé:
Mã:
Sub XoaHinh()
On Error Resume Next
Dim sh As Worksheet
Dim shp As Shape
Dim FileS As FileSearch
    Dim Wb, Wb1 As Workbook
    Dim F As Variant
    Application.ScreenUpdating = False
    Set Wb = ThisWorkbook
    FPath = Wb.Path
    Set FileS = Application.FileSearch
    With FileS
        .NewSearch
        .Filename = "*.xls"
        .LookIn = Wb.Path
        .SearchSubFolders = False
        .Execute
    End With
    For Each F In Application.FileSearch.FoundFiles
        If F = Wb.FullName Then GoTo NextFile
        Workbooks.Open F
        Set Wb1 = Workbooks(Replace(F, Wb.Path & "\", ""))
        Wb1.Activate
     For Each sh In Sheets
        For Each shp In sh.Shapes
           If shp.Type = msoLinkedPicture Or shp.Type = msoPicture Then
             shp.Delete
           End If
        Next shp
     Next sh
Wb1.Close True
NextFile:
    Next F
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Bạn thử cái này xem.

PHP:
Sub DelDrawingObjects()
ActiveSheet.DrawingObjects.Select
Selection.Delete
End Sub
Nếu có đối tượng nào đó không xoá được thì bạn nhấn vào nút Design Mode (hình eke trong thanh công cụ Visual Basic) và chạy lại lệnh này.

Có cách nào chỉ xóa picture thôi không bạn, đừng xóa command button và control.

Cám ơn
 
Upvote 0
Web KT
Back
Top Bottom