やりたいこと
既存のブック名をダイアログから選択して、別のブックを開く
フォルダ名「TEST」の中に以下の2つのファイルがあります。
・一覧.xlsm
・小計.xlsx
「小計.xlsx」のフォームシートをコピーして、
「一覧.xlsm」に新規シート004を作成したいと思います。
コードと解説は以下の通りです。
【VBA コード】
ポイント
Workbook型変数
ブックを扱うときはWorkbook型の変数を用意します。
ブックはオブジェクト型なのでワークシートと同じくオブジェクト変数と呼ばれます。
Variant型
1つの変数に異なるデータ型を格納したいときはVariant型を使います。
Variant型はすべてのデータ型の値を格納することができるデータ型になります。
しかし、間違ったデータ型を格納してもエラーにならないため、多用することはおすすめしません。
また、格納データに合わせて変換されるため処理速度が少し遅くなるというデメリットもあります。
ChDir
ChDirは作用フォルダを移動する命令です。
今回はChDir ThisWorkbook.Pathと記述することで、
このマクロが記述されているブックと同じフォルダに移動する
という意味になります。
Pathプロパティはブックの保存先フォルダの場所を調べることができます。
行の分割
コードが長くなる場合は、行を分割して見やすくすることができます。
半角のスペースとアンダーバーを組み合わせて行の途中に挿入することで分割が可能です。
行を分割できるのは「.」や「=」や「,」の前後です。
GetOpenFilenameメソッド
GetOpenFilenameメソッドは「ファイルを開く」ダイアログボックスを表示してファイル名を取得するApplicationオブジェクトのメソッドです。
ブックを開くのではなく、選択したブックのファイル名を取得するだけということに注意が必要です。
【使用例】
Application.GetOpenFilename("Excelファイル(*xlsx;*.xls), *.xlsx; *xls")
すべてのExcelファイルを選択のファイルの候補に指定して「ファイルを開く」ダイアログボックスを表示する。
Applicationはシートやブックを含めたExcel全体を表します。
通常は省略できますが、一部のプロパティやメソッドを使用する時に必要です。
Openメソッド
別のブックを開くときはWorkbooksオブジェクトのOpenメソッドに開くブックのファイル名を指定します。
Openメソッドを実行すると、指定されたブックが開いて、そのブックがアクティブになります。
さらに、開いたブックの参照を受け取ることができます。
今回はブックを開くと同時に、Setキーワードで開いたブックの参照をWorkbook型変数に代入しています。
Set 小計ブック = Workbooks.Open(小計ブック名)
ひとこと
UiPathでもファイル名を取得した後は、Excelを開くアクティビティを配置してから開いています。
フロー図だから何をしているかわかりやすいのですが、VBAのようにコードで書くとイメージが急に難しくなるような気がしました。
あと、Workbook型とかWorksheet型というものに慣れていないためまだ難しく感じるのだと思います。。
頭の中でフロー図を描いて何をしているか意識して学習したいと思います!
できるシリーズはフルカラーでかなり細かいところまで画像を使って解説してあるのでオススメです!