shokosブログ

プログラミング

はじめてのVBA

はじめてVBAに触れたのでメモメモ

  • やりたいこと

任意のファイルをエクスプローラーから開く
そのファイルと同じフォルダにあるすべてのファイルの1シート目をファイルにコピーする

あと細かい条件はいろいろあるけれど、ざっくりこんな感じです

Sub joinButton_Click()

    Dim targetFileName As Variant
    Dim targetBook As Workbook
    
    
    targetFileName = Application.GetOpenFilename(FileFilter:="エクセルファイル,*.xlsx", FilterIndex:=1, Title:="ファイルを選択してください", MultiSelect:=False)

    Set FS = CreateObject("Scripting.FileSystemObject")
    Set Fol = FS.GetFolder(".")
    Set Fil = Fol.Files
    
    If targetFileName <> False Then
        Set targetBook = Workbooks.Open(Filename:=targetFileName, CorruptLoad:=xlRepairFile)
        
        insertSheetName = targetBook.Sheets(1).Name
        For Each f In Fil
            If f.Name! = argetBook.Sheets(1).Name Then
                Workbooks.Open Filename:=f.Name
                ActiveWorkbook.Sheets(1).Copy After:=targetBook.Sheets(insertSheetName)
                Workbooks(f.Name).Close SaveChanges:=False
                insertSheetName = ActiveSheet.Name
            End If
        Next
        targetBook.Close SaveChanges:=True
    End If
End Sub
  • ちょっとびっくりしたこと

メソッド名などを間違えちゃったときに、 Sub または Function が定義されていません。 というすごくざっくりしたエラーが出る。
hoge != fooって書くと怒られる
hoge! = fooが正しいっぽい


ちょっととまどったりもしたけれど、たのしかった!