【簡単Excelマクロ・VBA】ファイル名を指定してファイル(ワークブック)を開く方法|Workbooks.Open|ファイル操作 #002
いつもありがとうございます。
ノンプログラマー向け「Excelマクロ・VBA解説シリーズ」へようこそ。
本稿では、ファイル名を指定してファイル(ワークブック)を開く方法を解説いたします。とてもシンプルなコードです。
ことばの意味
- ノンプログラマー
プログラミングを主な仕事にしていない人たちのことです。 - マクロ
VBAを使って作成される「機能」のことです。 - VBA
Visusal Basic for Application の略で、プログラミング言語のことです。 - ワークブック
Excelファイルのことです。
関連記事
VBAにおけるファイル操作の全体像
VBAにおける「ファイル操作」の全体像は以下の記事で解説しております。
本稿では「ファイル操作」の一部である「ファイル名を指定してファイル(ワークブック)を開く方法」を解説いたします。
VBAでファイル名を指定してファイル(ワークブック)を開く方法
ファイル名をして指定して(ワークブック)を開くには、Workbooks.Open
メソッドを使用します。Workbooks.Open
メソッドの 構文を以下に示します。
ことばの意味
- メソッド
オブジェクトを操作するための命令文のことです。 - 構文
プログラミング言語の文法のことです。
Workbooks.Open(Filename)
ここで Filename
は、開きたいファイルのフルパスです。
実際には以下のように実装することが多いと思います。
' 変数の宣言
Dim fp As String ' ファイルパス
' 変数に値を代入
fp = "path_to_your_book\your_book.xlsx"
' ファイルを開く
Workbooks.Open (fp)
例えば、マクロを記述したファイルと同階層にあるファイルを開くには、以下のようにコードを記述します。同階層に "your_book.xlsx" というファイルがある前提です。
Sub sample()
' 変数の宣言
Dim fp As String
' 変数に値を代入
fp = ThisWorkbook.Path & "\your_book.xlsx"
' ファイルを開く
Workbooks.Open (fp)
End Sub
このコードを実行すると以下のようにファイルが立ち上がります。
尚、Workbooks.Open
メソッドは、以下の引数をとることができます。Filename
以外は省略可能です。
Workbooks.Open( _
Filename, _
[UpdateLinks], _
[ReadOnly], _
[Format], _
[Password], _
[WriteResPassword], _
[IgnoreReadOnlyRecommended], _
[Origin], _
[Delimiter], _
[Editable], _
[Notify], _
[Converter], _
[AddToMru], _
[Local], _
[CorruptLoad] _
)
使用頻度が高い引数の意味を下表に示します。
ことばの意味
- 引数
メソッドや関数、プログラムを制御するために渡す値やオブジェクトのことです。
引数 | 解説 |
---|---|
UpdateLinks | ブック内のリンクを更新するかどうかを指定します。 |
ReadOnly | ファイルを読み取り専用で開くかどうかの指定です。読み取り専用で開く場合には、以下のように記述します。 ReadOnly:=True |
IgnoreReadOnlyRecommended | 開きたいファイルが「読み取り専用を推奨」の設定で保存されている場合に、ファイルを開いた際に表示される警告メッセージを無視するかどうかの指定です。 複数のファイルを処理するマクロなどでは、この警告は煩わしい場合があるので、状況に応じて IgnoreReadOnlyRecommended を指定しましょう。 警告を無視して開く場合は、以下のように記述します。 IgnoreReadOnlyRecommended:=True |
もう少し実用的な例を示したいと思いますので、続けます。
実際の場面では、ファイルを開くだけで終わることは少なく、開いたファイルに何かしらの操作を加えるでしょう。
開いたファイルに何かしらの操作を加えるには、開いたファイルをオブジェクト変数として取得しておくのが通常です。
ことばの意味
- オブジェクト変数
「オブジェクト」を入れておく箱のようなものです。通常の変数が数値や文字列などを格納するのに対して、オブジェクト変数はオブジェクトを格納します。
開いたファイルをオブジェクト変数として取得するには、以下のようにコードを記述します。
Sub sample2()
' 変数宣言
Dim fp As String ' ファイルパス
Dim wb As Workbook ' ワークブック
' 変数に値を代入
fp = ThisWorkbook.Path & "\your_book.xlsx"
' ファイルを開くと同時にオブジェクト変数として取得する
Set wb = Workbooks.Open(fp)
End Sub
これで、オブジェクト変数 wb(つまり、開いたファイル) に対して、命令することが出来るようになりました。
例として、wbのシートにコメントを入力し、上書き保存するコードを実装してみましょう。各行のコードの意味は、コードの上に行に記載したコメントをご参照ください。
Sub sample3()
' 変数宣言
Dim fp As String ' ファイルパス
Dim wb As Workbook ' ワークブック
' 変数に値を代入
fp = ThisWorkbook.Path & "\your_book.xlsx"
' ファイルを開くと同時にオブジェクト変数として取得する
Set wb = Workbooks.Open(fp)
' シートにコメントを入力
wb.Worksheets(1).Cells(1, 1) = "これはファイル名を指定して開いたファイルです"
' ファイルを保存して閉じる
wb.Close SaveChanges:=True
End Sub
これを実行後、上書き保存したファイルを開いてみましょう。
コードの中で命令した通りにコメントが入力されています。
以上で、ファイル名を指定してファイルを開く方法の解説は終わりです。
おわりに
ご覧いただきありがとうございました。
本稿では、「ファイル操作」の中の「新規ファイル(ワークブック)の作成」を解説いたしました。
お問い合わせやご要望等ございましたら、「お問い合わせ/ご要望」またはコメントにて、ご連絡いただければ幸いでございます。
皆様の人生がより一層素晴らしいものになるよう、少しでもお役に立てれば幸いでございます。
なお、当サイトでは様々な情報を発信しております。もしよろしければ、トップページもご覧いただけると幸いでございます。
VBAプログラミングスキルアップのための参考情報
ここでは参考図書を紹介いたしますが、これらに限らず自分に合うものを選ぶことが重要だと考えております。皆様の、より一層のご成功を心よりお祈りしております。
VBAプログラミングのスキルアップ
学習用としてもハンドブックとしても役立つ便利な書籍がこちらです。価格はやや高めですが、その内容は非常に充実しています。相応のスキルを身に付けるためには、こうしたしっかりとした書籍を一冊持っておくと良いでしょう。
入門書に関しては、どの書籍も大きな違いはありません。あまり迷うことに時間をかけるよりは、手頃なものを一冊選んでみると良いでしょう。VBAの入門書は数多く出版されていますので、興味がある方はぜひチェックしてみてください。
甲乙つけがたい場合、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。
\チェックしてみよう/
\チェックしてみよう/
\チェックしてみよう/
VBAのプログラミング能力を客観的に証明したい場合には「VBAエキスパート試験」があります。この試験はVBAの知識を公式に認定するものです。VBAの総合的な能力獲得を目指す方に適しています。以下の公式テキストが販売されております。
プログラミングの一般教養
「独学プログラマー」というプログラミングの魅力を解説した書籍があります。これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。
こちらの記事でも紹介しております。もしよろしければご覧ください。