カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

ADODB.Streamを使ったテキストファイルの読み書き

この記事は最終更新日から1年以上経過しています。

通常のテキストファイルの読み込みや書き込みだと文字コードがShift_jisでしか扱えません。
他の文字コードを使いたい場合はADODB.Streamを使います。

テキストファイルの読み込み

Dim sr      As Object
Dim strData As String

Set sr = CreateObject("ADODB.Stream")

sr.Mode = 3 '読み取り/書き込みモード
sr.Type = 2 'テキストデータ
sr.Charset = "UTF-8" '文字コードを指定

sr.Open 'Streamオブジェクトを開く
sr.LoadFromFile ("ファイルのフルパス") 'ファイルの内容を読み込む
sr.Position = 0 'ポインタを先頭へ

strData = sr.ReadText() 'データ読み込み

sr.Close 'Streamを閉じる

Set sr = Nothing 'オブジェクトの解放

テキストファイルの書き込み

Dim sr      As Object
Dim strData As String

Set sr = CreateObject("ADODB.Stream")

sr.Mode = 3 '読み取り/書き込みモード
sr.Type = 2 'テキストデータ
sr.Charset = "UTF-8" '文字コードを指定

sr.Open 'Streamオブジェクトを開く
sr.WriteText strData, 0 '0:adWriteChar

sr.SaveToFile "ファイルのフルパス", 2 '2:adSaveCreateOverWrite

sr.Close 'Streamを閉じる

Set sr = Nothing 'オブジェクトの解放

Modeプロパティ

ModeプロパティにはConnectModeEnumの値を設定します。

定数 説明
adModeRead 1 読み取り専用の権限
adModeReadWrite 3 読み取り/書き込み両方の権限
adModeShareDenyNone 16 権限の種類に関係なく、他のユーザーにも接続を許可します。他のユーザーにも読み取り/書き込みの両方のアクセスを許可します。
adModeShareDenyRead 4 読み取り権限によるほかのユーザーからの接続を禁止します。
adModeShareDenyWrite 8 書き込み権限によるほかのユーザーからの接続を禁止します。
adModeShareExclusive 12 ほかのユーザーの接続を禁止します。
adModeUnknown 0 既定値。権限が設定されていないか、設定が不明であることを表します。
adModeWrite 2 書き込み専用の権限

Typeプロパティ

TypeプロパティにはStreamTypeEnumの値を設定します。

定数 説明
adTypeBinary 1 バイナリデータ
adTypeText 2 既定値。Charsetで指定された文字セットにあるテキストデータを表します。

引数

ReadTextメソッドの引数
定数 説明
adReadAll -1 既定値。現在の位置からEOSマーカー方向に、すべてのバイトをストリームから読み込みます。
adReadLine -2 ストリームから次の行を読み込みます。
通常はCRLFで区切られます。(変更したい場合はLineSeparatorプロパティに設定)
WriteTextメソッドの第2引数
定数 説明
adWriteChar 0 既定値。指定したテキスト文字列を書き込みます。
adWriteLine 1 ファイルに書き込む際、テキスト文字列と行区切り文字を書き込みます。
SaveToFileメソッドの第2引数
定数 説明
adSaveCreateNotExist 1 既定値。指定したファイルがない場合、新しいファイルが作成されます。
adSaveCreateOverWrite 2 指定したファイルが既に存在する場合、上書きします。

参考URL:
https://learn.microsoft.com/ja-jp/sql/ado/reference/ado-api/stream-object-properties-methods-and-events?view=sql-server-ver16

この記事がお役に立ちましたらシェアお願いします
228,951 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です