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

  関連記事

IMEStatus 関数 例
IME の現在の状態を取得します(IMEStatus 関数)

IMEStatus 関数の使い方 【書式】 result = IMEStatus …

ClearContents メソッド 例01
データをクリアする(ClearContents メソッド)

ClearContents メソッド 対象がセル範囲(Range オブジェクト) …

日付時刻:時・分・秒を取得(Hour、Minute、Second 関数)

日付時刻から時・分・秒を取得する関数 【書式】 time_hour = Hour …

文字列:2つの文字列を比較する(StrComp 関数)

StrComp 関数の使い方 【書式】 result = StrComp ( s …

変数宣言と変数のデータ型
変数のデータ型・宣言(Dim ステートメント)

変数の宣言 一般的な方法 【書式】 Dim varname [ As type, …

フォントサイズ(Size,StandardFontSize)例
フォントサイズ(Size プロパティ・StandardFontSize プロパティ)

フォントサイズを取得・設定する(Size プロパティ) Size プロパティは、 …

指定した文字列を数値に変換する(Val 関数)

Val 関数 の使い方 Val 関数は、指定した文字列に含まれる数字を数値として …

日付時刻:日付時刻から情報取得( DatePart 関数 )

DatePart 関数(日付・時刻の値から情報を取得) 【書式】 result …

Mid ステートメント 例
文字列:文字列変数内の一部を置き換える(Mid・MidB ステートメント)

Mid・MidB ステートメントの使い方 【書式】 { Mid | MidB } …

文字列:指定した文字の文字コードを取得する(Asc 関数)

Asc 関数 【書式】 result = Asc ( string ) 引数・戻 …