はじめに
今回は、VBAでシート名(Sheet名)を取得する方法について勉強しました。
使用環境は以下のとおりです。
- 使用OS: Windows 10 Pro
- バージョン: 20H2
背景
本来は、VBAを使ってファイル名を取得しようと試みましたが、うまくいきませんでした。
ただ、今回扱ったExcelファイルは、ファイル名とシート名が一致しているものだったため、代替手段としてシート名を取得する方法を試してみました。
実際のコード
以下のようにしてシート名を取得できました。
Dim sheetname As String
sheetname = Worksheets(1).Name
sheetname = Left(sheetname, 2)
コードの解説
1行目:変数sheetname
を宣言しています。文字列型(String)です。
2行目:Worksheets(1).Name
を使って、左から1番目にあるシートの名前を取得し、sheetname
に代入しています。
なお、ここで指定している「1」は、シートの順番を表しています。たとえば、3番目のシート名を取得したい場合は「3」と記述します。
3行目:Left
関数を使用し、シート名の左から2文字だけを取り出しています。
このように、Left
関数を使うことで、シート名の一部だけを簡単に取得できます。
さらに応用
- Mid関数を使う場合:
Mid(sheetname, 4, 2)
これは、4文字目から2文字分を取得することができます。
- Right関数を使う場合:
Right(sheetname, 3)
- これは、右端から3文字分を取り出すことができます。
このように、文字列操作を組み合わせれば、シート名の一部を柔軟に取り出すことが可能です。
今後について
今回の方法で、シート名から必要な情報を取得することはできました。
しかし、本来の目的は、Excelファイル自体のプロパティからファイル名を取得することだったため、
今後は、WorkbookオブジェクトやFileSystemObjectを利用した、ファイル名取得方法についても勉強していきたいと考えています。
まとめ
Worksheets(1).Name
で、左から1番目のシート名を取得できる。Left
、Mid
、Right
関数を使えば、取得したシート名の一部分を抽出できる。- シート名がファイル名と一致している場合の代替手段として有効。
次のステップでは、ファイルプロパティから直接ファイル名を取得する方法にも挑戦していきたいと思います。