[Hlep] Xóa ảnh theo tên và kích thước (3 người xem)

  • Thread starter Thread starter Luong24
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

Luong24

Thành viên mới
Tham gia
9/9/22
Bài viết
22
Được thích
2
Em cần xóa ảnh trong file excel với 2 điều kiện là 1 cùng tên, 2 cùng kích thước thì sẽ xóa.
Ví dụ: Ảnh tên A và có kích thước Width = 0.01, Height = 0.01
Mong các bác giúp đỡ.
Em cảm ơn ạ!
 
Em cần xóa ảnh trong file excel với 2 điều kiện là 1 cùng tên, 2 cùng kích thước thì sẽ xóa.
Ví dụ: Ảnh tên A và có kích thước Width = 0.01, Height = 0.01
Mong các bác giúp đỡ.
Em cảm ơn ạ!
Khuyên bạn Hỏi bài thì Bạn NÊN có file giả định đính kèm thì mới biết thế nào chứ, Không ai có thời gian để giúp bạn lập file giả định và code và bởi họ không biết ý bạn cụ thể là thế nào, code rồi lại phải sửa đi sửa lại.
 
Upvote 0
Khuyên bạn Hỏi bài thì Bạn NÊN có file giả định đính kèm thì mới biết thế nào chứ, Không ai có thời gian để giúp bạn lập file giả định và code và bởi họ không biết ý bạn cụ thể là thế nào, code rồi lại phải sửa đi sửa lại.
Dạ vâng, e gửi file lên đây ạ
Bổ sung thêm ý là các ảnh cần xóa đều có kích thước 0.01*0.01 nhưng trong file có các ảnh khác cần giữ lại, nên không thể chọn hết các ảnh và bấm xóa được, và hơn nữa là số lượng ảnh quá nhiều, bấm xóa hết thì lại rất lâu, nên là xóa theo tên trùng và kích thước thì sẽ bớt đơ và nhanh hơn ạ
việc kiểm tra cả tên và kích thước để tránh trường hợp có ảnh khác cũng trùng tên mà lại bị xóa nhầm ạ
 

File đính kèm

Upvote 0
Dạ vâng, e gửi file lên đây ạ
Bổ sung thêm ý là các ảnh cần xóa đều có kích thước 0.01*0.01 nhưng trong file có các ảnh khác cần giữ lại, nên không thể chọn hết các ảnh và bấm xóa được, và hơn nữa là số lượng ảnh quá nhiều, bấm xóa hết thì lại rất lâu, nên là xóa theo tên trùng và kích thước thì sẽ bớt đơ và nhanh hơn ạ
việc kiểm tra cả tên và kích thước để tránh trường hợp có ảnh khác cũng trùng tên mà lại bị xóa nhầm ạ
Bạn tham khảo code sau:
Mã:
Option Explicit
Dim Shp As Shape
Sub LietKeAnh()
Dim t&
Dim KQ(1 To 100000, 1 To 4)
With Sheets("Sheet1")

For Each Shp In .Shapes
    t = t + 1
'    .Range("A" & t) = t
'    .Range("B" & t) = Shp.Name
'    .Range("C" & t) = Shp.Width
'    .Range("D" & t) = Shp.Height
KQ(t, 1) = t
   KQ(t, 2) = Shp.Name
   KQ(t, 3) = Shp.Width
   KQ(t, 4) = Shp.Height
Next
.Range("A1").Resize(100000, 4).ClearContents
.Range("A1").Resize(t, 4) = KQ
End With
End Sub

Sub XoaAnh()

With Sheets("Sheet1")

For Each Shp In .Shapes
If Shp.Width = 0.75 And Shp.Height = 0.75 Then Shp.Delete

Next
End With
End Sub
Bạn chạy sub LietKeAnh() để xem trong Sheet1 của bạn có bao nhiêu ảnh và kích thước cụ thể từng ảnh thế nào. Sau đó lựa chọn để chạy Sub XoaAnh()
Trong Sub XoaAnh() tôi đang để là Xóa hết tất cả các shape có kích thước là Shp.Width = 0.75 And Shp.Height = 0.75 (vì trong Sheet1 này có 4256 shape thì có 3634 Shape A và 621 Shape B có kích thước như vậy , chỉ duy nhất có 1 Shape A có kích thước khác)
 

File đính kèm

Upvote 0
Bạn tham khảo code sau:
Mã:
Option Explicit
Dim Shp As Shape
Sub LietKeAnh()
Dim t&
Dim KQ(1 To 100000, 1 To 4)
With Sheets("Sheet1")

For Each Shp In .Shapes
    t = t + 1
'    .Range("A" & t) = t
'    .Range("B" & t) = Shp.Name
'    .Range("C" & t) = Shp.Width
'    .Range("D" & t) = Shp.Height
KQ(t, 1) = t
   KQ(t, 2) = Shp.Name
   KQ(t, 3) = Shp.Width
   KQ(t, 4) = Shp.Height
Next
.Range("A1").Resize(100000, 4).ClearContents
.Range("A1").Resize(t, 4) = KQ
End With
End Sub

Sub XoaAnh()

With Sheets("Sheet1")

For Each Shp In .Shapes
If Shp.Width = 0.75 And Shp.Height = 0.75 Then Shp.Delete

Next
End With
End Sub
Bạn chạy sub LietKeAnh() để xem trong Sheet1 của bạn có bao nhiêu ảnh và kích thước cụ thể từng ảnh thế nào. Sau đó lựa chọn để chạy Sub XoaAnh()
Trong Sub XoaAnh() tôi đang để là Xóa hết tất cả các shape có kích thước là Shp.Width = 0.75 And Shp.Height = 0.75 (vì trong Sheet1 này có 4256 shape thì có 3634 Shape A và 621 Shape B có kích thước như vậy , chỉ duy nhất có 1 Shape A có kích thước khác)
dạ cảm ơn bác ạ
bác cho e hỏi chút là em kiểm tra kích thước ảnh trong file excel thì ghi là Height = 0.01 và Width = 0.01
nhưng khi viết công thức macro thì lại phải để là 0.75 *0.75. Chỗ này e chưa hiểu lắm, chia theo tỉ lệ nào hay công thức nào ạ?
 

File đính kèm

  • 1.JPG
    1.JPG
    8.9 KB · Đọc: 0
Upvote 0
dạ cảm ơn bác ạ
bác cho e hỏi chút là em kiểm tra kích thước ảnh trong file excel thì ghi là Height = 0.01 và Width = 0.01
nhưng khi viết công thức macro thì lại phải để là 0.75 *0.75. Chỗ này e chưa hiểu lắm, chia theo tỉ lệ nào hay công thức nào ạ?
Bạn đã chạy thử code chưa?
Bạn có thấy code thống kê ra được hơn 4000 shape không và có các kích thước như đã mô ta không? Nếu máy bạn cũng ra các kích thước là 0,75*0,75 thì có thể không phải do độ phân giải màn hình mà có thể là khác đơn vị tính (ví dụ cm và insh)
 
Upvote 0
Bạn đã chạy thử code chưa?
Bạn có thấy code thống kê ra được hơn 4000 shape không và có các kích thước như đã mô ta không? Nếu máy bạn cũng ra các kích thước là 0,75*0,75 thì có thể không phải do độ phân giải màn hình mà có thể là khác đơn vị tính (ví dụ cm và insh)
dạ e chạy thử code rồi ạ
kết quả ra kích thước là 0.75*0.75 đúng như mô tả, code hoạt động OK đúng yêu cầu ạ
nhưng e muốn hỏi thêm cái phần xác định kích thức của các shape ấy ạ, để sau này thay đổi vận dụng phù hợp với từng tình huống gặp phải
khi e xem chi tiết kích thước của các shape trong excel thì thấy excel để kích thước là 0.01*0.01, lúc viết code để là như vậy thì không xóa được mà phải điền là 0.75*0.75 thì mới chạy được
vậy giờ dựa vào đâu để biết được kích thước để quy đổi ạ
 
Upvote 0
dạ e chạy thử code rồi ạ
kết quả ra kích thước là 0.75*0.75 đúng như mô tả, code hoạt động OK đúng yêu cầu ạ
nhưng e muốn hỏi thêm cái phần xác định kích thức của các shape ấy ạ, để sau này thay đổi vận dụng phù hợp với từng tình huống gặp phải
khi e xem chi tiết kích thước của các shape trong excel thì thấy excel để kích thước là 0.01*0.01, lúc viết code để là như vậy thì không xóa được mà phải điền là 0.75*0.75 thì mới chạy được
vậy giờ dựa vào đâu để biết được kích thước để quy đổi ạ
Có một đơn vị của máy tính - Nó như kiểu kích cõ font chữ hay độ dãn dòng 14pt, 30pt ,..... Vậy giờ bạn cứ quy ước là 0,01 tương đương với 0,75pt chẳng hạn và ngược lại.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom