chèn ảnh theo toạ độ mình muốn (1 người xem)

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

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

phucymvn

Thành viên mới
Tham gia
11/7/07
Bài viết
37
Được thích
6
Chào các anh, bạn trong diễn đàn,
Sau một thời gian nhờ các anh, thầy giúp đỡ tôi đã viết được chương trình chèn ảnh vào sheet mình cần.
Nhưng file đó có nhược điểm sau:
1. Theo kiểu comment picture thì file quá nặng.
2. Chèn theo thứ tự ( như macros 3 tôi gửi file) thì chèn ảnh đầu tiên theo toạ độ định sẵn và làn lượt từ trên xuống.
CHính vì vậy tôi muốn nhờ các thầy, anh, các cao thủ giúp tôi.
Khi tôi click chuột vào ô nào đó thì bấm chạy chương trình của tôi ảnh sẽ bắt đầu tính từ vị trí đó.
Thanks
 

File đính kèm

Khi tôi click chuột vào ô nào đó thì bấm chạy chương trình của tôi ảnh sẽ bắt đầu tính từ vị trí đó.

Vẫn dùng hàm CommPic và sửa Sub Test3 của bạn thành vầy:
Mã:
Sub Test3()
  Dim fileName As Variant, ws As Worksheet, i As Integer, imgCell As Range, ret
  Const imgFilter As String = "Image Files(*.jpg),*.jpg," & "Image Files(*.jpeg),*.jpeg," & "Image Files(*.bmp),*.bmp," & "Image Files(*.png),*.png"
  Set ws = ActiveSheet
  fileName = Application.GetOpenFilename(FileFilter:=imgFilter, FilterIndex:=1, Title:="Chon anh", MultiSelect:=True)
  Set imgCell = ActiveCell
  If IsArray(fileName) Then
    For i = LBound(fileName) To UBound(fileName)
      ret = CommPic(fileName(i), imgCell)
      Set imgCell = imgCell.Offset(1)
    Next i
  End If
End Sub
Lưu ý: hàm CommPic đã có cải tiến lại rất nhiều
 

File đính kèm

Upvote 0
cám ơn thầy đã gợi ý code.
Em vẫn dùng cách chèn ảnh của em. Hóa ra mỗi lệnh lấy tọa độ là "Set imgCell = ActiveCell"

Mã:
Sub chenanhtoado() Dim fileName As Variant, ws As Worksheet, i As Integer, imgCell As Range
Const imgCol As Integer = 7
Const imgFilter As String = "Image Files(*.jpg),*.jpg," & "Image Files(*.jpeg),*.jpeg," & "Image Files(*.bmp),*.bmp," & "Image Files(*.png),*.png"

Set ws = ActiveSheet

fileName = Application.GetOpenFilename(FileFilter:=imgFilter, FilterIndex:=1, Title:="Chon anh", MultiSelect:=True)
If Not IsArray(fileName) Then Exit Sub
Set imgCell = ActiveCell
For i = LBound(fileName) To UBound(fileName)

With ws.Pictures.Insert(fileName(i))
With .ShapeRange
.LockAspectRatio = msoTrue
.Width = imgCell.Width
End With
.Left = imgCell.Left
.Top = imgCell.Top
End With
Set imgCell = imgCell.Offset(1)
Next i
End Sub
 
Upvote 0
cám ơn thầy đã gợi ý code.
Em vẫn dùng cách chèn ảnh của em.

Tôi khuyên bạn dùng Comment thay vì chèn ảnh trực tiếp là có lý do... dùng thời gian lâu dài bạn mới thấy
Ít nhất, với Comment thì việc quản lý sẽ vô cùng dễ dàng. Bởi comment luôn "dính" vào 1 cell nào đó nên ta chỉ cần "quản" cell là ra comment. Với ảnh chèn trực tiếp lại khác, nó là 1 object "tự do trôi nổi" trên bảng tính nên để quản lý nó không phải chuyện dễ: Phải mất công đánh dấu (bằng cách đặt tên) để khi chèn ảnh mới ta biết đường mà xóa ảnh cũ
Với comment, khi ta xóa cell thì comment cũng "bay" luôn còn với ảnh chèn trực tiếp thì điều này.. chưa chắc
vân.. vân.. và.. mây.. mây
Đây chỉ là kinh nghiệm bản thân tôi trong thời gian dài "cày" với các shapes, pictures... mà đúc kết ra. Còn bạn thích dùng cách gì vẫn là chuyện của bạn!
 
Upvote 0
cám ơn thầy. Em sẽ làm quen dần dần.
Do em thấy chèn ảnh dạng comment thì file dung lượng quá lớn và gửi mail cho đối tác lại không đọc được.
 
Upvote 0

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

Back
Top Bottom