- 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 | 指定したファイルが既に存在する場合、上書きします。 |
228,238 views