首先,我在这里做的事情合乎逻辑吗?其次,我在开始我的文件路径的单引号上不断出现错误。
stuff = Workbooks('\\public\Documents\Amazon Retail\Analysis\[US Retail Quick Reference.xlsx]').Sheets("Quick Reference").Range("A1")
假设您有一个 Excel 实例,并且没有使用多个 Excel 实例:
如果该文件已打开,则必须仅通过其名称而不是完整路径来引用它。如果文件尚未打开,您需要先打开它(然后仅通过名称引用它)。
改变这个:
stuff = Workbooks('\\public\Documents\Amazon Retail\Analysis\[US Retail Quick Reference.xlsx]').Sheets("Quick Reference").Range("A1")
对此:
stuff = Workbooks("US Retail Quick Reference.xlsx").Sheets("Quick Reference").Range("A1")
确保stuff
被声明为一个String
或可能是一个Variant
类型(以防 A1 可能包含非文本或错误值)。
如果您在运行时不知道文件是否打开或可能打开,那么您可以像这样幻想您的代码:
Function IsWorkbookOpen(path as String, name as String) As Boolean
Dim wb as Workbook
On Error Resume Next
Set wb = Workbooks(name)
If wb.FullName = path & name Then
IsWorkbookOpen = True
End If
End Function
然后像这样:
Dim path as String, fileName as String
path = "\\public\Documents\Amazon Retail\Analysis\"
fileName = "US Retail Quick Reference.xlsx"
If (IsWorkbookOpen(path & fileName)) Then
stuff = Workbooks(fileName).Sheets("Quick Reference").Range("A1").Value
Else
' Do Something Else // UNTESTED:
stuff = ExecuteExcel4Macro("'" & path & "[" & fileName & "]" & _
"Quick Reference'!" & Range("A1").Address(True, True, -4150))
' or:
' Dim wb as Workbook
' Set wb = Workbooks.Open(path + fileName)
' stuff = wb.Sheets("Quick Reference").Range("A1").Value
' wb.Close
End If
对于“别的东西”,我建议使用ExecuteExcel4Macro
从封闭工作簿中获取价值的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句