ExcelWork.info

Excel(エクセル)のマクロ・VBA・関数・操作などのメモ

テキストファイル(UTF-8)を読み込み、書き出し(ADODB.Stream)

   

Stream オブジェクト

ADO(ActiveX Database Object)の Stream オブジェクト(ADODB.Stream)を使用すると UTF-8 形式のテキストファイルを読み込むことができます。
ADO を使用するには、ライブラリファイルへの参照設定を行う方法と、CreateObject 関数を使う方法があります。


ADODB.Stream


【書式】

<CreateObjects 関数を使用する場合>
Dim st As Object
Set st = CreateObject(“ADODB.Stream”)

<参照設定を行う場合>
Dim st As ADODB.Stream
Set st = New ADODB.Stream


引数・戻り値

Excel2003 以前では、Microsoft ActiveX Data Objects 2.8 Library を選択します。
Excel2007 以降では、Microsoft ActiveX Data Objects バージョン番号 Library を選択します。
参照設定の方法については、ファイルシステムオブジェクト(FileSystemObject)の使い方 を参照してください。

CreatObject 関数 を使用する場合は、参照設定の必要はありませんが、VBE で、自動メンバ表示等のコーディング支援機能が使用できません。また、マクロの実行速度も遅くなります。


Open メソッド / Close メソッド

Open は、Stream オブジェクト を開きます。
Close は、開いている Stream オブジェクト を閉じます。


【書式】

object.Open

object.Close


引数・戻り値

  • object  ・・・  対象となる Stream オブジェクトを指定します。

Type プロパティ

Stream オブジェクト内のデータ型(テキスト or バイナリ)を設定します。


【書式】

object.Type = StreamType


引数・戻り値

  • object  ・・・  対象となる Stream オブジェクトを指定します。
  • StreamType  ・・・  StreamTypeEnum 列挙型の定数またはその値を指定します。
    定数 内容
    adTypeBinary 1 バイナリデータ
    adTypeText 2 テキストデータ(既定値)



Charset プロパティ

ファイルの文字コードを指定します。


【書式】

object.Charset = CharacterCode


引数・戻り値

  • object  ・・・  対象となる Stream オブジェクトを指定します。
  • CharacterCode  ・・・  文字コードを表す文字列(String 型)を指定します。
    (例)UTF-8、Shift_JIS、euc-jp、ISO-2022-JP、Unicode(デフォルト)など


LoadFromFile メソッド

指定したファイルの内容を Stream に読み込みます。


【書式】

object.LoadFromFile FileName


引数・戻り値

  • object  ・・・  対象となる Stream オブジェクトを指定します。
  • FileName  ・・・  ファイルの名前を文字列型(String)で指定します。指定したファイルが存在しない場合は、エラーが発生します。


SaveToFile メソッド

Stream オブジェクトの内容を指定したファイルに保存します。


【書式】

object.SaveToFile FileName [, SaveOptions]


引数・戻り値

  • object  ・・・  対象となる Stream オブジェクトを指定します。
  • FileName  ・・・  ファイルの名前を文字列型(String)で指定します。
  • SaveOptions  ・・・  新規ファイルを作成するかどうかを SaveOptionsEnum 値で指定します(省略可)。
    定数 内容
    adSaveCreateNotExist 1 FileName で指定したファイルが存在しない場合は新規のファイルを作成します(既定値)。
    adSaveCreateOverWrite 2 FileName で指定したファイルが存在しない場合は新規のファイルを作成し、存在する場合は上書きされます。



Position プロパティ

Stream オブジェクト内の現在の位置を取得、または設定します。


【書式】

<取得>
long = object.Position

<設定>
object.Position = long


引数・戻り値

  • object  ・・・  対象となる Stream オブジェクトを指定します。
  • long  ・・・  Stream オブジェクト内の位置を示す長整数型(Long)の値をバイト単位で設定(取得)します。


EOS プロパティ / SetEOS メソッド

EOS プロパティで、Stream オブジェクト内の現在の位置が末尾かどうかを確認します。SetEOS メソッドで、Stream オブジェクト内の位置をを末尾に設定します。


【書式】

<末尾かどうかを確認>
boolean = object.EOS

<末尾に設定>
object.SetEOS


引数・戻り値

  • object  ・・・  対象となる Stream オブジェクトを指定します。
  • boolean  ・・・  現在の位置が Stream の末尾かどうかを示すブール型(Boolean)の値を返します。現在の位置が末尾の場合は True、末尾でない場合は False を返します。


Read メソッド / ReadText メソッド

Stream オブジェクトから指定したバイト数または文字数のデータを読み取ります。


【書式】

object.Read [ NumBytes ]

object.ReadText [ NumChars ]


引数・戻り値

  • object  ・・・  対象となる Stream オブジェクトを指定します。
  • NumBytes  ・・・  ファイルから読み取るバイト数を長整数型(Long)の値で指定します。または、StreamReadEnum 値 を指定します。
  • NumChars  ・・・  ファイルから読み取る文字数を長整数型(Long)の値で指定します。または、StreamReadEnum 値 を指定します。

StreamReadEnum

定数 内容
adReadAll -1 現在の位置から EOS マーカー方向に、すべてのバイトをストリームから読み取ります(既定値)。
adReadLine -2 ストリームから次の行を読み取ります。



Write メソッド / WriteText メソッド

Stream オブジェクトにバイナリデータまたはテキストデータを書き込みます。


【書式】

object.Write Buffer

object.WriteText Data [ ,Options ]


引数・戻り値

  • object  ・・・  対象となる Stream オブジェクトを指定します。
  • Buffer  ・・・  Stream オブジェクトに書き込むバリアント型(Variant)の値を指定します。
  • Data  ・・・  Stream オブジェクトに書き込む文字列型(String)の値を指定します。
  • Options  ・・・  指定した文字列の終わりに行区切り文字を書き込むかどうかを StreamWriteEnum 値で指定します(省略可)。
    定数 内容
    adWriteChar 0 引数 Data で指定した文字列を書き込みます(既定値)。
    adWriteLine 1 Data で指定した文字列と行区切り文字を書き込みます。




ConvertFormula メソッド 使用例

サンプルVBAソース 1


実行結果

ADO Stream オブジェクト テキスト(UTF-8)読み込み



サンプルVBAソース 2


実行結果(作成されたテキストファイル)

ADO Stream オブジェクト テキスト(UTF-8 BOMあり)書き出し



サンプルVBAソース 3


実行結果(作成されたテキストファイル)

ADO Stream オブジェクト テキスト(BOMなし)書き出し


サンプルVBAソース 4


実行結果

ADO Stream オブジェクト BOMありなしのチェック



 - VBA基本 , , , , , , ,

Message

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  関連記事

Chr 関数 例
文字列:指定した文字コードに対応する文字を返す(Chr 関数)

Chr 関数の使い方 【書式】 result = Chr ( code ) 引数 …

日付時刻:文字列から日付・時刻データを取得( DateValue 関数、TimeValue 関数 )

DateValue 関数(文字列から日付データを取得) 【書式】 date_va …

ポイント単位の値に変換(CentimetersToPoints,InchesToPoints)

CentimetersToPoints メソッド センチメートル単位の値をポイン …

色の設定(ColorIndex プロパティ・Colors プロパティ)

ColorIndex プロパティ ColorIndex プロパティは、指定したオ …

文字列:文字を指定数並べた文字列を返す(String 関数)

String 関数 【書式】 result = String ( number, …

色の設定(Color プロパティ・RGB 関数)

Color プロパティ Color プロパティは、指定したオブジェクトの色を取得 …

IgnoreCase プロパティ
VBA で正規表現を使う(RegExp オブジェクトのプロパティ)

RegExp オブジェクトのプロパティ RegExp オブジェクトの詳細に関して …

TextToColumns メソッド
セルのデータを区切り文字で複数のセルに分割する(TextToColumns メソッド)

TextToColumns メソッド TextToColumns メソッドを使用 …

DateSerial 関数 TimeSerial 関数 使用例
日付時刻:数値から日付・時刻データを取得( DateSerial 関数、TimeSerial 関数 )

DateSerial 関数(数値を使って日付データを取得) 【書式】 date …

Resize プロパティ1
指定したセル範囲のサイズを変更(Resize プロパティ)

Resize プロパティ 指定したセル範囲のサイズ(行数や列数)を変更します。 …