Excel VBA-不从set字段加载文件

时间:2012-09-25 08:47:05

标签: excel excel-vba vba

我已将我的工作表设置为具有参数部分,以便用户可以设置工作表,然后只更新特定区域。其中两个参数是外部文件,即“黑匣子”计算模块。

这些是完整路径设置并存储在工作表的单元格中。

在开始计算过程时,他们会加载以下代码

 'Set file name and location.
NameOfFile = ActiveWorkbook.Worksheets("Parameters").Cells(8, 2).Value
PathToFile = Left$(NameOfFile, InStrRev(NameOfFile, "\") - 1)
FileNameNoPath = Mid$(NameOfFile, InStrRev(NameOfFile, "\") + 1)
NameOfFile = FileNameNoPath
completefilepath = PathToFile & "\" & NameOfFile
 'set the target workbook to a variable.  If an error is
 'generated, then the workbook is not open, so open it
On Error Resume Next
Set wbTarget = Workbooks(NameOfFile)
  If Err.Number <> 0 Then
     'Open the workbook
    Err.Clear
    Set wbTarget = Workbooks.Open(NameOfFile, UpdateLinks:=False)
    CloseIt = True
End If

 'Check and make sure workbook was opened
If Err.Number = 1004 Then
    MsgBox "Sorry, but the file you specified does not exist!" _
    & vbNewLine & NameOfFile
    Exit Sub
End If

我遇到的问题是,当我运行代码时,它说找不到文件。如果我去,通过重新选择文件重置参数表中的字段(我有一个filedialog设置来执行此操作),然后代码完美运行并打开文件。基本上这意味着每次关闭工作表后,在运行计算之前都要重新包含文件。有谁知道这可能是什么原因?

1 个答案:

答案 0 :(得分:2)

在您的代码行中

Set wbTarget = Workbooks.Open(NameOfFile, UpdateLinks:=False)

您只指定文件名,没有路径。这将尝试从当前路径打开文件,该路径可能不是预期的路径。使用OpenFile对话框并浏览到您的文件后,将更新当前路径,然后代码将起作用。

你可能意味着

Set wbTarget = Workbooks.Open(completefilepath , UpdateLinks:=False)