はじめての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が正しいっぽい
ちょっととまどったりもしたけれど、たのしかった!