РЕДАКТИРОВАТЬ:
Я начал новую книгу и разорвал исходный код для тестирования в новой среде. Кажется, что ни один из методов OLEObjects.add не работает даже в этой очищенной среде. Я начинаю думать, что этот метод и параметры в основном делают что-то иное, чем то, что, как я думаю, они делают на основе их документации. Я включил проанализированный код ниже вместе с изображением того, как выглядит прикрепление файла .pdf.
Sub AttachDocument () 'создать строку расположения ячейкиDim celllocation As Stringcelllocation = ("D6") 'Выберите ячейку, в которую вы хотите поместить attachmentRange (celllocation). Select'Get file path'fpath = Application.GetOpenFilename ("All Files, *. *", Title: = "Select file") 'Если LCase (fpath) = "false", то выйдите из Subfpath = "C: Users Username Desktop 2019W2.pdf"' 'Вставьте fileWorksheets ("Sheet1"). OLEObjects.Add Filename: = fpath, Link: = False, DisplayAsIcon: = True, IconFileName: = "EXCEL.EXE" End Sub
Я просто не понимаю, почему не работают параметры. Любая помощь приветствуется.
Исходное сообщение:
У меня есть код, который добавляет OLEObject на лист в определенной ячейке. Он работает, но я не могу получить параметры для метода OLEObjects.add, чтобы что-либо сделать. Единственное, что кажется работающим, — это «Имя файла». Независимо от того, как я определяю какие-либо другие параметры, поведение макроса не меняется; Я даже не уверен, что параметр «Связанный» работает, а значок всегда зависит от типа загруженного файла, но ведет себя не так, как ожидалось (например, в документах Word не отображается значок слова, а большой пустой/белый квадрат). В конечном счете, я хочу установить для значка общий значок и определить его размер. Что я здесь делаю не так?
Sub AttachDocument () 'Убедитесь, что выделена строка таблицы, если не конец макроса, также проверьте выделение больше, чем количество строк в таблице, если да, конец макроса Dim tbl As ListObject Set tbl = ActiveSheet.ListObjects ("RenewablesTable") Если Range ("M3"). Value tbl. DataBodyRange.Rows.Count Then Else 'создать строку расположения ячейки Dim cellnum As Integer, celllocation As String cellnum = Range ("M3"). Value + 8 celllocation = ("M" & cellnum)' Выберите ячейку, в которой вы хотите поместите вложение Range (celllocation) .Select 'проверьте, есть ли в ячейке объект, если он завершает макрос If CheckCellforObject (celllocation)> 0 Then Else' Получить путь к файлу fpath = Application.GetOpenFilename ("All Files, *. *", Заголовок: = "Выбрать файл") Если LCase (fpath) = "false", затем выйти из подпрограммы 'Вставить рабочие листы («Возобновляемая энергия»). Снять защиту «паролей» рабочих листов («Возобновляемые источники энергии»). OLEObjects. Добавьте имя файла: = fpath, Link: = False, DisplayAsIcon: = True, IconFileName: = "excel.exe" Рабочие листы ("Возобновляемые источники энергии"). Защитите "пароль" End If End IfEnd Sub