Excel VBA入門 その98:シャープ(#)の意味は何?

エクセルVBA VBA



他の人のコードでたまに目にする「#」の記号は「ファイル番号」を意味します。

今回は「#」の意味について徹底的に説明していきます。



「#」はファイル番号の意味

「#」は、シャープではなく正しくは「ナンバー記号」と呼び、「ファイル番号」を意味します。

ちなみに、音楽で使われるシャープ記号は、五線譜の横線と見間違わないように「♯」と横棒が斜めです。

ファイル番号とは?

ファイル番号とは、マイクロソフトによると

ファイル番号

ファイルを開くために Open ステートメントで使用される番号。他のアプリケーションからアクセスできないファイルに対しては、1 ~ 255 の範囲のファイル番号を使用します。他のアプリケーションからアクセスできるファイルには、256 ~ 511 の範囲のファイル番号を使用します。

マイクロソフト

VBAで「テキストファイルなどのファイル」をOpenステートメントを使って開くということは、OS(Windows)側でそのファイルを一時的に管理することになります。

その際に、ファイルを番号で管理するために「ファイル番号」と呼ばれるものを付します。

ファイル番号は他のファイルと重複しないようにします。

通常は「#1」のように任意のファイル番号を指定しますが、複数のファイルを扱う場合には「FreeFile関数」で空いているファイル番号を取得する必要があります。

※ここで説明しているOpenステートメントは、ブックを開くときに使う、WorkbooksコレクションのOpenメソッドは異なりますので、混同しないように注意してください。

ファイル番号の使い方

構文: Open ファイル名 For 開き方 As #ファイル番号

「ファイル名」は一般的にフルパスで指定します。

「ファイル番号」は「#1」のように数字を指定するか、FreeFile関数を取得した変数を指定します。

「開き方」は、開くファイルに対して、何を行うかを指定します。

開き方処理
Inputテキストファイルからデータをエクセルに読み込む
Outputテキストファイルにデータを書き込む
Appendテキストファイルにデータを追記する
Randomデータベースのファイルにアクセスする
Binary画像ファイルなどのバイナリデータを扱う

テキストファイルにデータを書き込むサンプルコード:

Sub テキストファイルにデータを書き込む()
    Dim FileNumber As Long
    FileNumber = FreeFile

    Open ThisWorkbook.Path & "\テスト.txt" _
        For Output As #FileNumber    'FreeFileで空きファイル番号を取得
    
    Print #FileNumber, "こんにちは"  'テキストに「こんにちは」と書き込む
    Print #FileNumber, "123", "ABC"  'テキストに「123」「ABC」と書き込む

    Close #FileNumber
End Sub

実行結果:

テキストファイルにデータが書き込まれる

テキストファイルを開いた以降は、「#」をつけたファイル番号を指定することによって処理できることに注目してください。

「#」はファイル操作の際に必要な記号なので、今回の記事をぜひ役立ててくださいね。

コメント

  1. […] 参考:シャープ(#)の意味は何? […]

タイトルとURLをコピーしました