2017-01-26 7 views
0

フォルダにExcelブックを保存するためのvbaコードを作成しました。しかし、私は実行時エラー1004を取得しています。すでに存在するファイルが開かれ、同じExcelブックも作成されます。ファイルを保存すると、既存のファイルがすでに開いているとエラーが発生します

Private Sub CommandButton14_Click() 

    Dim folderpath As String 

    Dim Fname As String 

    Dim file As String 


    Fname = MyForm.SCC.Value 

    folderpath = ActiveWorkbook.Path 

    Workbooks.Open Filename:= _ 

     ("" & folderpath & "\" & Fname & "- Q3 2016" & ".xlsx") 

     ' for adding explaination sheet from PAM sheet into destination sheet 

    ' Section E: please update the name of excel workbook if the name of this excel workbook changed 

    Windows("OEM PAM Sizer 2016 - v1.xlsm").Activate 

    Sheets("Automation Content definition").Visible = True 

    Sheets("Automation Content definition").Select 

    Sheets("Automation Content definition").Copy After:=Workbooks(_ 

     "" & Fname & "- Q3 2016" & ".xlsx").Sheets(1) 

    ActiveWorkbook.Worksheets("sheet1").Activate 

    Range("a1").Select 

    file = "" & folderpath & "\" & Fname & "- Q3 2016" & ".xlsx" 

    FileExist (file) 


    Windows("OEM PAM Sizer 2016 - v1.xlsm").Close savechanges:=False 

End sub 

答えて

2

ファイルが開いている場合は閉じます。 マイクロソフトは、ファイルが開かれているかどうかを把握する方法をいくつかのトリックを与える:

Function IsFileOpen(filename As String) 
    Dim filenum As Integer, errnum As Integer 

    On Error Resume Next ' Turn error checking off. 
    filenum = FreeFile() ' Get a free file number. 
    ' Attempt to open the file and lock it. 
    Open filename For Input Lock Read As #filenum 
    Close filenum   ' Close the file. 
    errnum = Err   ' Save the error number that occurred. 
    On Error GoTo 0  ' Turn error checking back on. 

    ' Check to see which error occurred. 
    Select Case errnum 

     ' No error occurred. 
     ' File is NOT already open by another user. 
     Case 0 
     IsFileOpen = False 

     ' Error number for "Permission Denied." 
     ' File is already opened by another user. 
     Case 70 
      IsFileOpen = True 

     ' Another error occurred. 
     Case Else 
      Error errnum 
    End Select 

End Function 

https://support.microsoft.com/en-us/help/291295/macro-code-to-check-whether-a-file-is-already-open

別のオプションは、異なるファイルに名前を付けることです。

関連する問題