|
▼neptune さん:
どうもありがとうございます。
以下のようにプログラムを変更してみました。
-------------------------------------------------------
Public Sub For_Question2()
Dim cnDatabase As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim in_strm As ADODB.Stream
Dim out_strm As ADODB.Stream
Dim m_Field As ADODB.Field
Dim i As Long, j As Long
Dim Sql As String
Dim cnt As String
Dim m_string As String, m_byte1() As Byte, m_byte2() As Byte
cnt = "Driver=SQLite3 ODBC Driver; Database=C:\excel_sqlite3_test\test.db"
Set cnDatabase = New ADODB.Connection
cnDatabase.Open cnt
Worksheets("methodtbl").Select
Cells.Select
Selection.Clear
Cells(1, 1).Select
Sql = "SELECT * FROM methodtbl"
rs.Open Sql, cnDatabase, adOpenForwardOnly
'フィールド名表示
j = 1
For Each m_Field In rs.Fields
Cells(1, j).Value = m_Field.Name
j = j + 1
Next m_Field
'データ表示
i = 2
Do Until rs.EOF
j = 1
For Each m_Field In rs.Fields
Cells(i, j).Select
'Cells(i, j).Value = "'" & m_Field.Value
Set in_strm = New ADODB.Stream
Set out_strm = New ADODB.Stream
in_strm.Open
out_strm.Open
in_strm.Charset = "EUC-JP"
in_strm.Type = adTypeBinary
out_strm.Charset = "SJIS"
out_strm.Type = adTypeBinary
m_byte1() = m_Field.Value
in_strm.Write m_byte1
in_strm.CopyTo out_strm
out_strm.Read m_byte2
in_strm.Close
out_strm.Close
Set in_strm = Nothing
Set out_strm = Nothing
Cells(i, j).Value = CStr(m_byte2)
j = j + 1
Next m_Field
i = i + 1
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End Sub
-------------------------------------------------------
そうすると、
>out_strm.Read m_byte2
のところで実行時にエラーがでます。
-------------------------------------------------------
実行時エラー'3001':
引数が間違った型、許容範囲外、または競合しています。
-------------------------------------------------------
googleでいろいろ検索してみたのですが、原因がわかりません。
どこが間違っているのでしょうか?
どうぞよろしくお願いいたします。
|
|