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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  関連記事

四捨五入・切り上げ・切り捨て・丸め(Round 関数 他)

Round 関数(丸め)の使い方 【書式】 value = Round ( ex …

Timer 関数 使用例
日付時刻:経過時間を取得( Timer 関数 )

Timer 関数の使い方 【書式】 result = Timer () 【戻り値 …

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

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

文字列:文字列を検索してその最初の文字位置を返す(InStr 関数,InStrB 関数)

InStr 関数・InStrB 関数の使い方 【書式】 result = { I …

メッセージボックス使用例
メッセージボックスを表示(MsgBox関数)

MsgBox関数 【書式】 result = MsgBox ( Prompt [ …

ユーザー設定リスト
ユーザー設定リストを使って並べ替える(Sort)

VBAでリスト、テーブルを並べ替える(Sort) VBAで、ソートを行うには、S …

定数(改行・タブ) 使用例
文字列:定数(改行・タブ)

改行・タブの定数 これらの定数は、使用前に定義する必要はありません。コード中のど …

IsArray 関数 例
変数が配列かどうかをチェックする( IsArray 関数 )

IsArray 関数の使い方 【書式】 result = IsArray( va …

書式を変換(Format 関数)

Format 関数の使い方 【書式】 result = Format ( exp …

指定した値を16進数で表記した文字列に変換する(Hex 関数)

Hex 関数 の使い方 【書式】 result = Hex ( expressi …