0

マクロから Excel ファイルを開こうとしたとき: 1004問題が発生しました。コードをデバッグしてF5 キーを押して続行すると、問題なくファイルが開かれます。また、コードを 1 行ずつデバッグすると機能します。

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

私の価値観

ルタ

"C:\Users\Usuario\Desktop\Swap\@&&Informes&&@\Informes 2G\Input"

フィッチ

「CNA_GsmRel_Z2_23052013.xls」

また、私は試しました:

    aux = ruta & "\" & fich
    Workbooks.Open Filename:=aux
4

1 に答える 1

1

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
于 2013-05-28T00:13:35.263 に答える