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

如何将更多文档添加到Excel文件中,excel,getopenfilename,vba,Excel,Getopenfilename,Vba,我想在excel文件中添加更多文件。如果multiselect为false,则此宏可以工作,但是如果我在multiselect=true时尝试此宏,则会在第行中收到一条错误消息: 如果附件=false,则退出sub。类型为错误消息 不匹配 如果选择了任何内容,将multiselect设置为true的GetOpenFilename将返回一个数组。如果未选择任何内容,则返回False。问题是,如果您选择了任何内容,“attachment=false”会导致错误,因为您无法与这样的数组进行比较。这有点

我想在excel文件中添加更多文件。如果multiselect为false,则此宏可以工作,但是如果我在multiselect=true时尝试此宏,则会在第行中收到一条错误消息:

如果附件=false,则退出sub。类型为错误消息 不匹配


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

If IsArray(attachment) = False Then Exit Sub
因为如果选择了任何内容,它将始终是一个数组,如果未选择任何内容,它将不会是数组

还因为它返回一个数组,所以您需要

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”字段设置一些递增值,因为如果不这样,它们将彼此堆叠在一起。

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

If IsArray(attachment) = False Then Exit Sub
因为如果选择了任何内容,它将始终是一个数组,如果未选择任何内容,它将不会是数组

还因为它返回一个数组,所以您需要

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”字段设置一些递增值,因为它们只会堆叠在一起,否则。

附件可能是一个字符串,您正在与布尔值进行比较。如果attachment=”“attachment可能是一个字符串,并且您正在与布尔值进行比较,请重试。如果附件=“谢谢您的帮助和解决方案,请尝试。增加值的好处。我也在想,必须解决这个问题,以避免文件堆叠在一起。感谢您的帮助和解决方案。增加值的好处。我也在想,必须解决这个问题,以避免文件堆叠在一起。