GIÚP ĐỠ! Điều chỉnh macro Thêm hình ảnh trong Excel trên máy Mac
Chào mọi người,
Việc này làm tôi đau đầu quá! Tôi có một macro có thể chèn hình ảnh vào ô, dựa trên giá trị của ô và tên tệp. Nó hoạt động hoàn hảo trên máy tính PC của tôi! Tuy nhiên, nó lại không hoạt động trên máy Mac.
Có ai biết cách chỉnh sửa mã code không ạ? Cảm ơn nhiều!!
Sub AddImage()
Dim i As Long, j As Long, yr As Long
Khai báo CellName là chuỗi, ArtCode là chuỗi, CellCol là kiểu Variant
Dim Pic_Path As String, Pic_Name As String, Pic_WildChar As String
Dim fs As Object
Dim MissList As String
Khi xảy ra lỗi, hãy chuyển đến bài viết tiếp theo.
CellCol = Array("a") 'Thêm (các) cột cần thiết với số hiệu bài viết xuất hiện
ArtCodeCol = "a"
Đặt fs = CreateObject("Scripting.FileSystemObject")
MissList = ""
lLastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Trong khi ActiveSheet.Range(ArtCodeCol & CStr(i)).Value = "*" Và i <= lLastRow
Bỏ qua những hàng đó nếu chúng đã bị ẩn.
Nếu (ActiveSheet.Range(ArtCodeCol & CStr(i)).EntireRow.Hidden <> True) thì
Đối với j = 0 Đến UBound(CellCol)
CellName = CellCol(j)
ArtCode = Trim$(ActiveSheet.Range(CellName & CStr(i)).Value)
Nếu ArtCode <> "" Và Len(ArtCode) <= 16 Và InStr(1, ArtCode, "Total", vbTextCompare) = 0 Và StrComp(Left(ArtCode, 3), "Art", vbTextCompare) <> 0 Thì
Dim aParse, sVariantType
aParse = Split(ArtCode, " ", , vbTextCompare)
Nếu UBound(aParse) - LBound(aParse) + 1 >= 3 thì
'-----------------------------------------------------------------
Được thêm bởi Edmund Chan lúc 08/05/2009
'Để xác định độ dài bài viết nhằm đảm bảo độ dài đạt mức 6'.
'-----------------------------------------------------------------
sVariantType = " "
Đối với z = 1 Đến UBound(aParse)
Nếu aParse(z) <> "" thì
sVariantType = Cắt(aParse(z))
Lối ra
Kết thúc nếu
Kế tiếp
Pic_WildChar = Left(aParse(0) & " ", 6) & sVariantType & Right(ArtCode, 6) & ".jpg"
Khác
Pic_WildChar = Left(ArtCode & " ", 6) & "* *.jpg"
Kết thúc nếu
'Chỉ vào đường dẫn nơi có thể tìm thấy bức tranh'
Đối với yr = Năm(Hiện tại) + 1 Đến năm 2003 Bước -1
Pic_Path = "/Users/Jmi/Desktop/folder1/Macro Pic/"
Tên ảnh = Dir(Đường dẫn ảnh & Ký tự đại diện ảnh)
Nếu Len(Pic_Name) = 0 thì
Pic_Path = "/Users/Jmi/Desktop/folder1/Macro Pic/"
Tên ảnh = Dir(Đường dẫn ảnh & Ký tự đại diện ảnh)
Kết thúc nếu
Nếu Len(Pic_Name) > 0 thì
Lối ra
Kết thúc nếu
Kế tiếp
Nếu Len(Pic_Name) = 0 thì
Pic_Path = "/Users/Jmi/Desktop/folder1/Macro Pic/"
Pic_Name = Dir(Pic_Path & ArtCode & "*.jpg")
Kết thúc nếu
Tên ảnh = Đường dẫn ảnh & Tên ảnh
Nếu fs.FileExists(Pic_Name) thì
Với ActiveSheet.Range(CellName & CStr(i))
Dim p As Object, dScaleFactor As Double
.RowHeight = 50
Đặt p = ActiveSheet.Shapes.AddPicture(Pic_Name, msoFalse, msoCTrue, _
.Bên trái + 10, _
.Top + 18, _
60, _
60)
dScaleFactor = 0.4
p.LockAspectRatio = msoTrue
p.ScaleWidth dScaleFactor, msoTrue
' Office 2003 hoặc các phiên bản trước đó cũng phải sử dụng ScaleHeight() để giữ nguyên tỷ lệ khung hình'
Nếu Application.Version <= 11 thì
p.ScaleHeight dScaleFactor, msoTrue
Kết thúc nếu
.RowHeight = p.Height + 25
.Lựa chọn
Đặt p = Không có gì
Kết thúc bằng
Khác
MissList = MissList & ArtCode & ".jpg" & Chr(13)
Kết thúc nếu
Kết thúc nếu
Kế tiếp
Kết thúc nếu
i = i + 1
Wend
Nếu MissList <> "" thì
MissList = "Bài viết sau thiếu .jpg :" & Chr(13) & MissList
MsgBox MissList, vbOKOnly
Kết thúc nếu
Thoát khỏi Sub
Bài_viết_tiếp_theo:
Tiếp tục
End Sub
Sub RefreshImage()
ActiveSheet.Pictures.Delete
Gọi hàm AddImage
End Sub
Sub DeleteImage()
ActiveSheet.Pictures.Delete
End Sub
Trả lời:
Đừng trả lời số điện thoại hỗ trợ được cung cấp trong thư trả lời, tôi vừa xóa nó đi vì đó là thư rác mà Microsoft đang cố gắng loại bỏ.
__________
Tuyên bố miễn trừ trách nhiệm:
Những câu hỏi, thảo luận, ý kiến, phản hồi và câu trả lời mà tôi tạo ra hoàn toàn là của riêng tôi và không phản ánh quan điểm của tôi với tư cách là Người điều hành tình nguyện.
Trả lời:
Lưu ý: Vấn đề của bạn nằm ở việc mã của bạn sử dụng các lệnh Active-X. Office Mac không tương thích với Active-X.
__________
Tuyên bố miễn trừ trách nhiệm:
Những câu hỏi, thảo luận, ý kiến, phản hồi và câu trả lời mà tôi tạo ra hoàn toàn là của riêng tôi và không phản ánh quan điểm của tôi với tư cách là Người điều hành tình nguyện.
Trả lời:
Dòng mã nào gây ra lỗi? Thông báo lỗi là gì?
Comments
Post a Comment