Excel Vba入库工作簿.open[按F5键继续]
当我试图从宏中打开excel文件时:我有一个1004问题,如果我调试代码并按F5继续,文件将毫无问题地打开,而且如果我逐行调试代码也能正常工作Excel Vba入库工作簿.open[按F5键继续],excel,vba,Excel,Vba,当我试图从宏中打开excel文件时:我有一个1004问题,如果我调试代码并按F5继续,文件将毫无问题地打开,而且如果我逐行调试代码也能正常工作 Sub openFile2(ruta, fich, destino As Worksheet) Application.CutCopyMode = False Dim aux As String aux = ruta & "\" & fich ChDir ruta Workbooks.Open
Sub openFile2(ruta, fich, destino As Worksheet)
Application.CutCopyMode = False
Dim aux As String
aux = ruta & "\" & fich
ChDir ruta
Workbooks.Open Filename:=fich
End Sub
我的价值观
Ruta
“C:\Users\Usuario\Desktop\Swap\&&&Informes&&&Informes 2G\Input”
fich
“CNA_GsmRel_Z2_23052013.xls”
我还试过:
aux = ruta & "\" & fich
Workbooks.Open Filename:=aux
Workbooks.Open
需要完整的路径Filename
,因此它应该是Workbooks.Open(Filename:=aux)
而不是Workbooks.Open(Filename:=fich)
声明工作簿变量wkb
可以控制工作簿以进行进一步操作
在运行代码之前,保存包含代码的工作簿
使用下面更健壮的代码
Sub sample()
ruta = "C:\Users\Usuario\Desktop\Swap\@&&Informes&&@\Informes 2G\Input"
fich = "CNA_GsmRel_Z2_23052013.xls"
openFile2 ruta, fich, ThisWorkbook.Sheets(1)
End Sub
Sub openFile2(ruta, fich, destino As Worksheet)
Dim aux As String
aux = ruta & "\" & fich
Dim wkb As Workbook
If IsWorkBookOpen(aux) Then
Set wkb = Workbooks(fich)
Else
Set wkb = Workbooks.Open(FileName:=aux)
End If
End Sub
Function IsWorkBookOpen(FileName As String)
Dim ff As Long, ErrNo As Long
On Error Resume Next
ff = FreeFile()
Open FileName For Input Lock Read As #ff
Close ff
ErrNo = Err
On Error GoTo 0
Select Case ErrNo
Case 0: IsWorkBookOpen = False
Case 70: IsWorkBookOpen = True
Case Else: Error ErrNo
End Select
End Function
我使用完整路径,但当我运行宏时,如果我调试错误并按F5继续运行,则会出现问题1004。它会正常工作并打开文件。@JonathanRaulTapiaLopez当工作簿关闭时,您必须使用完整路径&当工作簿打开时,您必须使用工作簿名称。哦,这是打开文件的解决方案