ExcelWork.info

テキストファイル(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


実行結果



サンプルVBAソース 2


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



サンプルVBAソース 3


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


サンプルVBAソース 4


実行結果