在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方法由于各种原因(访问文件夹权限,受保护的工作簿等)而失败。