■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 を選択
■ADODB.Streamの主なメソッドとプロパティ
※参考URL:https://excelwork.info/excel/adodbstream/
メソッド | 説明 |
---|---|
Open | Stream オブジェクト を開く。 |
Close | Stream オブジェクト を閉じる。 |
LoadFromFile | 指定したファイルの内容を Stream に読み込む。 |
SaveToFile | Stream オブジェクトの内容を指定したファイルに保存する。 |
SetEOS | Stream オブジェクト内の位置をを末尾に設定する。 |
Read/ReadText | Stream オブジェクトから指定したバイト数または文字数のデータを読み取る。 |
Write / WriteText | Stream オブジェクトにバイナリデータまたはテキストデータを書き込む。 |
プロパティ | 説明 |
---|---|
Type | Stream オブジェクト内のデータ型(テキスト or バイナリ)を設定する。 |
Charset | ファイルの文字コードを指定する。 |
Position | Stream オブジェクト内の現在の位置を取得、または設定する。 |
EOS | Stream オブジェクト内の現在の位置が末尾かどうかを確認する。 |
■サンプルコード①
Sub Sample_ADOStream_Load() '【参照設定】Microsoft ActiveX Data Objects 6.1 Library Dim st As ADODB.Stream Dim myPath As String Dim myStr As String myPath = ThisWorkbook.path & "\test01.csv" Set st = New ADODB.Stream With st .Open 'Stream を開く .Type = adTypeText 'テキスト形式 .Charset = "UTF-8" '文字コードの指定 .LoadFromFile myPath 'ファイルの内容を読み込む myStr = .ReadText '読み込んだ内容を取得 .Close 'Stream を閉じる End With MsgBox myStr End Sub
■サンプルコード②
Sub Sample_ADOStream_Save1() '【参照設定】Microsoft ActiveX Data Objects 6.1 Library Dim st As ADODB.Stream Dim myPath As String Dim myStrLine As String Dim myRng As Range Dim i As Long Dim j As Long myPath = ThisWorkbook.path & "\test02.csv" Set st = New ADODB.Stream st.Open 'Stream を開く st.Type = adTypeText 'テキスト形式 st.Charset = "UTF-8" '文字コードの指定 With Worksheets("Sheet1") Set myRng = .Range("A1").CurrentRegion For i = 1 To myRng.Rows.Count myStrLine = "" For j = 1 To myRng.Columns.Count If j = 1 Then myStrLine = .Cells(i, j) Else myStrLine = myStrLine & "," & .Cells(i, j) End If Next j st.WriteText myStrLine, adWriteLine '内容を書き込む Next i End With st.SaveToFile myPath, adSaveCreateOverWrite 'ファイルに保存 st.Close 'Stream を閉じる Set st = Nothing Set myRng = Nothing End Sub