Categories
SugiBlog ホームページ制作・システム開発

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

通常のテキストファイルの読み込みや書き込みだと
文字コードが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://msdn.microsoft.com/ja-jp/library/cc364272.aspx

83,851 views

コメントを残す

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

*