РЕДАКТИРОВАТЬ:
Я запустил новую книгу и разорвал оригинальный код для тестирования в свободной среде sh. Кажется, что ни один из методов OLEObjects.add не работает даже в этой очищенной среде. Я начинаю думать, что этот метод и параметры в основном делают что-то отличное от того, что, я думаю, они делают, основываясь на их документации. Я включил анализируемый код ниже вместе с изображением того, что прикрепляет a. PDF-файл выглядит так.
Sub AttachDocument()
'create cell location string
Dim celllocation As String
celllocation = ("D6")
'Select the cell in which you want to place the attachment
Range(celllocation).Select
'Get file path
'fpath = Application.GetOpenFilename("All Files,*.*", Title:="Select file")
'If LCase(fpath) = "false" Then Exit Sub
fpath = "C:\Users\Username\Desktop\2019W2.pdf"
'Insert file
Worksheets("Sheet1").OLEObjects.Add Filename:=fpath, Link:=False, DisplayAsIcon:=True, IconFileName:="EXCEL.EXE"
End Sub
enter image description here">
Я просто не понимаю, почему параметры не работают. Любая помощь приветствуется.
Исходное сообщение:
У меня есть код, который добавляет объект OLEObject на лист в указанной ячейке c. Это работает, но я не могу получить параметры для метода OLEObjects.add, чтобы сделать что-нибудь. Единственное, что, кажется, работает - «Имя файла». Независимо от того, как я определяю какие-либо другие параметры, поведение макроса не изменяется; Я даже не уверен, что параметр «Связан» работает, и значок всегда зависит от типа загружаемого файла, но не ведет себя должным образом (например, документы Word не отображают значок слова, вместо этого большой пустой / белый квадрат). В конечном счете, я хочу установить значок на общий значок и определить его размер. Что я тут не так делаю?
Sub AttachDocument()
'Check to make sure there is a selection for table row, if not end macro, also check for selection greater than the number of rows in the table, if yes end macro
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("RenewablesTable")
If Range("M3").Value < 1 Then
ElseIf Range("M3").Value > tbl.DataBodyRange.Rows.Count Then
Else
'create cell location string
Dim cellnum As Integer, celllocation As String
cellnum = Range("M3").Value + 8
celllocation = ("M" & cellnum)
'Select the cell in which you want to place the attachment
Range(celllocation).Select
'check if cell already has an object if it does end macro
If CheckCellforObject(celllocation) > 0 Then
Else
'Get file path
fpath = Application.GetOpenFilename("All Files,*.*", Title:="Select file")
If LCase(fpath) = "false" Then Exit Sub
'Insert file
Worksheets("Renewable Energy").Unprotect "password"
Worksheets("Renewable Energy").OLEObjects.Add Filename:=fpath, Link:=False, DisplayAsIcon:=True, IconFileName:="excel.exe"
Worksheets("Renewable Energy").Protect "password"
End If
End If
End Sub