如何将更多文档添加到 Excel 文件中

How to add more documents into Excel file

我想将更多文件添加到我的 excel 文件中。如果 multiselect 为 false,则此宏有效,但是如果我尝试使用 multiselect = true,我会在行中收到一条错误消息:

if attachment = false then exit sub. An error message was type mismatch.

Sub insertObject()

Dim attachment As Variant

'open more files, but not from specific folder    
attachment = Application.GetOpenFilename(FileFilter:="All Files (*.*), *.*",     MultiSelect:=True) 

'if attachment is missing then end macro
If attachment = False Then Exit Sub

'my try with OLEobjects
ActiveSheet.OLEObjects.Add(Filename:=attachment, Link:=False,  DisplayAsIcon:=True, IconFileName:="C:\WINDOWS\system32\packager.dll", IconIndex:=1, IconLabel:=attachment).Select

End Sub

GetOpenFilename 将多选设置为 true returns 如果选择了任何内容,则为一个数组。如果没有选择它 returns False。问题是,如果您选择了任何内容,"attachment = false" 会导致错误,因为您无法与这样的数组进行比较。这有点懒惰,但如果这总是一个 multi-select 对话框,你可以这样做

If IsArray(attachment) = False Then Exit Sub

因为如果选择了任何内容,它将始终是一个数组,如果没有选择,则不会。

还因为它 returns 一个数组,你需要有类似

的东西
For i = LBound(attachment) To UBound(attachment)
    ActiveSheet.OLEObjects.Add Filename:=attachment(i), Link:=False, DisplayAsIcon:=True, IconFileName:="C:\WINDOWS\system32\packager.dll", IconIndex:=1, IconLabel:=attachment(i)
Next

添加您的所有文件。附件数组中的每个值都是一个完整的文件路径,因此您可能还想为 IconLabel 字段解析文件名。并且还为 OLEObject.Add 方法中的 "top" 或 "left" 字段设置了一些增量值,否则它们只会堆叠在 each-other 之上。