Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Vba入库工作簿.open[按F5键继续]_Excel_Vba - Fatal编程技术网

Excel Vba入库工作簿.open[按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

当我试图从宏中打开excel文件时:我有一个1004问题,如果我调试代码并按F5继续,文件将毫无问题地打开,而且如果我逐行调试代码也能正常工作

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当工作簿关闭时,您必须使用完整路径&当工作簿打开时,您必须使用工作簿名称。哦,这是打开文件的解决方案