実現したいこと
EXCELでレコードセットを新規に作成しようとしています。
文字列型のフィールドを作成したいのですが、何故かエラーになってしまいます。
理由が分からないので、知見をください。
前提
EXCELの標準モジュールでコードを書いています。
発生している問題・エラーメッセージ
実行時エラー 3001
エラーメッセージ
引数が間違った型、許容範囲外、または競合しています。
該当のソースコード
VBA
ソースコード
Sub Test1() 'Microsoft ActiveX Data Objects6.1 Library参照設定済 Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset With rs With .Fields .Append "ID", adVarChar ’ここでエラー .Append "Name", adVarChar ’ここでもエラー .Append "Score", adInteger End With .Open .AddNew !ID = "001" !Name = "一郎" !Score = 50 .Update End With Cells(1, 1).CopyFromRecordset rs rs.Close: Set rs = Nothing End Sub ### 試したこと .Append "ID", adVarChar の箇所でエラーになります。 インテリセンスで選択したのですが、何がいけないのかわかりません。 ちなみに[adChar] を選択しても同じエラーになりました。 [adVariant](Variant型?)を選択すればうまくいくのですが。。。 ### 補足情報(FW/ツールのバージョンなど) Office 365 よろしくお願いします。
DBのOPENはしていますか?
saziさん
DBのOPENはしていません。 今回 新たに設定したので、DBは存在していない、という認識です。
adVarChar の代わりに adVariant を設定すればうまくいくので、DBのOPENは 今回の問題点では
ない、というように思っていました。
保存先のaccessに対するconnection(接続情報)を指定してDBをopenする事で、当該のデータに保存が出来ます。
saziさん
データベースに接続せずにメモリ上でレコードセットを生成して操作するということは可能です。
kanaMind: Memory上でRecordsetを使用する
https://kanamind.blogspot.com/2011/10/memoryrecordset.html
ただ、エクセルでデータ操作(フィルター、ソートなど)は可能なので、わさわざインメモリレコードセットを使う必然性は疑問です。
そのため情報はすくないですね。
hatena19さん>
成程。ありがとうございます。
data tableのような使い方をしているという事ですね。
タグにAccessがあったのでてっきりAccessに保存しているものとばかり思っていました。

回答1件
あなたの回答
tips
プレビュー