在VBA打开文件
我有这个代码,试图打开一个文件:
Dim wbTemplate as Workbook Dim template as String template = ThisWorkbook.Path & "\sample.xlsx" Set wbTemplate = Worbooks.Open(template)
我也试过:
Set wbTemplate = Worbooks.Open(filename:=template)
但是他们两个都不行。 顺便说一下,我试图打开的活动工作簿和文件具有相同的目录。 有任何想法吗? 谢谢!
@RobinMackenzie发现了它。
但是,您可以通过使用Option Explicit
来避免这种混淆,并排除误导性的错误消息
以您的scheme为例,如果您使用Option Expilict
,VBE将仅在尝试执行代码并出错时突出显示worbooks
此外,错误消息更准确: Variable not defined
如果没有Option Explicit
,VBE将突出显示整行并引发误导性错误(正确但误导): Object required
在这里,阅读更多: https : //blogs.msdn.microsoft.com/developingfordynamicsgp/2009/08/06/what-does-option-explicit-do-in-vba/
这是我用的,
Dim FileName As String FileName = ActiveWorkbook.Path & "\CRMS.csv" Workbooks.Open (FileName)
尝试使用.Add而不是.Open:
Dim fName As String fName = "YourPath\Sheetname.xlsx" Workbooks.Add (fName)
要么:
Set NewBook = Workbooks.Add(fName)
直到现在,它总是为我工作。 有时Open方法由于各种原因(访问文件夹权限,受保护的工作簿等)而失败。