如何将更多的文件添加到Excel文件

我想添加更多的文件到我的Excel文件。 这个macros在multiselect为false的情况下工作,但是如果我用multiselect = true来尝试,我会在行中得到一个错误信息:

如果attachment = false,则退出sub。 错误消息是types不匹配。

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 

如果select了任何内容,则将multislect设置为true的GetOpenFilename将返回一个数组。 如果没有select,则返回False。 问题是如果你select了任何东西,“attachment = false”会导致错误,因为你不能像这样做一个数组比较。 这是一种懒惰,但如果这总是将是一个多选对话框,你可以做

 If IsArray(attachment) = False Then Exit Sub 

因为如果select了任何东西,它将永远是一个数组,如果没有任何东西,它将不会是。

也因为它返回一个数组,你将需要有类似的东西

 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 

要添加所有文件。 附件数组中的每个值都是一个完整的文件path,因此您可能也想为IconLabel字段parsing文件名。 并且在OLEObject.Add方法中为“top”或“left”字段设置一些递增值,否则它们将叠加在另一个之上。