ADODB.Streamを使ったテキストファイルの読み書き
- VB,VBA
-
2014-01-23 - 更新:2022-09-23
この記事は最終更新日から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 | 指定したファイルが既に存在する場合、上書きします。 |
この記事がお役に立ちましたらシェアお願いします
234,017 views




