テキストファイル:データを読み込む(Get ステートメント)
Get ステートメント
Open ステートメント をランダムアクセスモード(Random)または、バイナリモード(Binary)で開いたファイルのデータを読み込みます。
Get #filenumber, [ recnumber ], varname
引数・戻り値
- filenumber ・・・ Open ステートメント で、割り当てられたファイル番号を指定します。
- recnumber ・・・ ランダムアクセスモード(Random)の場合、読み込みを開始する場所のレコード、バイナリモード(Binary)の場合、読み込みを開始する場所のバイト番号を指定します(省略可)。
- varname ・・・ データを読み込んだ内容を格納する変数の名前を指定します(省略不可)。
- filenumber ・・・ Open ステートメント で、割り当てられたファイル番号を指定します。
- recnumber ・・・ ランダムアクセスモード(Random)の場合、読み込みを開始する場所のレコード、バイナリモード(Binary)の場合、読み込みを開始する場所のバイト番号を指定します(省略可)。
- varname ・・・ データを読み込んだ内容を格納する変数の名前を指定します(省略不可)。
ファイル内の最初のレコードまたはバイトの位置は 位置 1、次のレコードまたはバイトの位置は 位置 2 となり、これ以降も同様です。引数 recnumber を省略すると、最後の Get か Put ステートメントの次のレコード(バイト)、または最後の Seek 関数によって指定された位置の次のレコード(バイト)からデータが読み込まれます。省略する場合には、区切り文字のカンマ(,)を含める必要があります。
Random モードで開いたファイルの場合、一般に、レコード長は、読み込まれるデータの長さに一致させます。読み込まれるデータの長さが、Open ステートメントの Len 句に指定された長さよりも短い場合、Get により、以降のレコードがレコード長境界で読み込まれます。
通常、Get ステートメントによって読み取られるデータは、Put ステートメントによってファイルに書き込まれます。
Get ステートメント 使用例
サンプルVBAソース 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Sub Sample_Get_Binary1() 'バイナリモードでファイルを開く 'ファイルに数値を保存、実行するたびに数値を1づつ増やす Const FName = "myCounter" 'ファイル名 Const formatNum = "000000" 'strNum のフォーマット Dim FileName As String Dim FNum As Integer Dim num As Long 'カウンターの数値 Dim strNum As String * 6 'カウンターの数値 FileName = "C:\Documents\mydata\" & FName FNum = FreeFile 'ファイル番号取得 num = 1 'ファイルを開く(Binary モード、読み込み・書き込みロック) Open FileName For Binary Lock Read Write As #FNum 'ファイルサイズを確認して、ファイルが新規作成されたかどうかを確認 If LOF(FNum) > 0 Then '既存ファイルからデータを取得し、1 を加算 Get #FNum, 1, strNum num = CLng(strNum) + 1 End If strNum = Format(num, formatNum) 'ファイルに書き込み Put #FNum, 1, strNum 'ファイルを閉じる Close #FNum End Sub |
サンプルVBAソース 1 実行結果
サンプルVBAソース 1 を実行して作成・更新されたファイルの内容
一番最初の実行後
二回目の実行後
サンプルVBAソース 2
テキストファイル:データを書き込む(Print # ステートメント) の「サンプルVBAソース 1」を実行して作成された「file02.html」の内容を読み込んで表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Sub Sample_Get_Binary2() 'バイナリモードでファイルを開く 'Get ステートメントで、ファイルの内容を取得する(buf または buf2) Dim FileName As String Dim FNum As Integer Dim buf() As Byte 'Dim buf2 As String FileName = "C:\Documents\mydata\file02.html" FNum = FreeFile 'ファイル番号取得 'ファイルが存在しない場合は終了 If Dir(FileName) = "" Then MsgBox "ファイルが見つかりませんでした。" Exit Sub End If 'ファイルを開く Open FileName For Binary As #FNum 'ファイルサイズを取得、変数 buf の大きさを確保 ReDim buf(1 To LOF(FNum)) 'buf2 = String(LOF(FNum), " ") 'データを取得 Get #FNum, , buf 'Get #FNum, , buf2 'ファイルを閉じる Close #FNum '表示 MsgBox StrConv(buf, vbUnicode) 'MsgBox buf2 End Sub |
サンプルVBAソース 2 実行結果
サンプルVBAソース 3
テキストファイル:データを書き込む(Put ステートメント) の「サンプルVBAソース 3」を実行して作成された「test02.html」の内容を読み込んで表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
Type Record ID As Integer Name As String * 20 RDate As Date End Type --------------------------------------------------------------------------------------------- Sub Sample_Get_Random() 'ファイルにデータを書き込む '(Random モード / Put ステートメント) Dim myRecord As Record Dim FileName As String Dim FNum As Integer Dim str As String FileName = "C:\Documents\mydata\test02.txt" FNum = FreeFile 'ファイルが存在しない場合は終了 If Dir(FileName) = "" Then MsgBox "ファイルが見つかりませんでした。" Exit Sub End If 'ファイルを開く(Random Open FileName For Random As #FNum Len = Len(myRecord) With myRecord '3 番目のレコードを取得 Get #FNum, 3, myRecord str = .ID & vbTab & .Name & .RDate '4 番目のレコードを取得 Get #FNum, 4, myRecord str = str & vbCrLf & .ID & vbTab & .Name & .RDate End With Close #FNum '取得した内容を表示 MsgBox str End Sub |
サンプルVBAソース 3 実行結果
関連記事
-
フルパスからファイル名、パスを取得する
フルパスからファイル名のみを取得する フルパスからファイル名を取得するには、Di …
-
FileDialogFilters コレクション・FileDialogFilter オブジェクト
FileDialogFilters コレクション FileDialog オブジェ …
-
Excel を終了する(Quit メソッド)
Excel を終了する(Quit メソッド) Quit メソッドを実行すると、E …
-
開いているファイルの現在の読み取り位置または書き込み位置を取得(Seek 関数)
Seek 関数 Open ステートメント で開いたファイル内の現在の読み取り位置 …
-
開いているファイルの読み取り位置または書き込み位置を設定(Seek ステートメント)
Seek ステートメント Open ステートメント で開いているファイルで、次に …
-
「ファイル」ダイアログボックスを表示・設定(FileDialog オブジェクト)
FileDialog オブジェクト FileDialog オブジェクト のメソッ …
-
ディレクトリまたはフォルダの作成(MkDir ステートメント)
ディレクトリまたはフォルダの作成 新しいディレクトリまたはフォルダを作成するには …
-
ディレクトリまたはフォルダの削除(RmDir ステートメント)
ディレクトリまたはフォルダの削除 ディレクトリまたはフォルダを削除するには、Rm …
-
「ファイルを開く」ダイアログボックスを表示(GetOpenFilename メソッド)
GetOpenFilename メソッド ファイル名を取得するための、「ファイル …
-
Excel の組み込みダイアログボックス(Dialog, Dialogs)
Excel の組み込みダイアログボックスを表示 Dialog オブジェクト を使 …