質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1134閲覧

【VBA】ADODB.StreamへレコードセットをSAVEしようとするとエラーが発生します。

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/11/07 02:55

編集2020/11/08 23:07

前提・実現したいこと

Excel VBA にて UserForm を使用しています。
Formが持つ変数[g_RecordsetDay]にレコードセットのディープコピーを取るため「ADODB.Stream」を使用していますが、不明なエラーが発生し、正しく動作しません。
「ADODB.Stream」の宣言に関する2行の記述を省けば、プロシージャは正しく動作します。

VBA

1 Dim strm As New ADODB.Stream 2 ExcelRs.Save strm 'エラー!

「Application.xlsm」に全てのソースコードが記述され、
同階層のディレクトリに存在する「DataBase.xlsx」がDBになります。

発生している問題・エラーメッセージ

エラーメッセージ:特定出来ないエラーです。

該当のソースコード

VBA

1'Userform1 2Private g_RecordsetDay As ADODB.Recordset 3 4Private Sub ListView_Update() 5 'ListViewへの初期化,Recordset代入のコード等は省略しています。 6 7 On Error Resume Next 8 9 Dim ExcelCn As New ADODB.Connection 10 With ExcelCn 11 .Provider = "Microsoft.ACE.OLEDB.12.0;" 12 .Properties("Extended Properties") = "Excel 12.0;" 13 .ConnectionString = "Data Source = " & ThisWorkbook.Path & "\DataBase.xlsx;" 14 .Open 15 End With 16 17 If Err.Number <> 0 Then 18 Stop 19 MsgBox Err.Description, vbCritical + vbOKOnly, Err.Number 20 Exit Sub 21 End If 22 23 Dim strExcelSQL As String 24 strExcelSQL = "SELECT * FROM [sheet1$] ORDER BY [ID] DESC;" 25 26 Dim ExcelRs As New ADODB.Recordset 27 ExcelRs.Open strExcelSQL, ExcelCn, adOpenKeyset, adLockOptimistic 28 29 If Err.Number <> 0 Then 30 Stop 31 MsgBox Err.Description, vbCritical + vbOKOnly, Err.Number 32 Exit Sub 33 End If 34 35'エラーメッセージ:特定出来ないエラーです。 36'\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 37 Dim strm As New ADODB.Stream 38 ExcelRs.Save strm 'エラー! 39\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 40 41 If Err.Number <> 0 Then 42 Stop'ここで止まります。 43 MsgBox Err.Description, vbCritical + vbOKOnly, Err.Number 44 Exit Sub 45 End If 46 47 Set g_RecordsetDay = Nothing 48 Set g_RecordsetDay = New ADODB.Recordset 49 g_RecordsetDay.Open strm 50 51 If Err.Number <> 0 Then 52 Stop 53 MsgBox Err.Description, vbCritical + vbOKOnly, Err.Number 54 Exit Sub 55 End If 56 57 On Error GoTo 0 58End Sub

試したこと

こちらを参考にしています。
https://www.366service.com/jp/qa/dbf18cb008db58fee9b916c50cfca816
~~
上記ソースコードの実行では問題なく動作しています。
~~
上記リンクのソースコードの実行では問題なく動作しています。

補足情報

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Microsoftのレコードとストリームについて調べて自己解決しました。

投稿2020/11/08 23:22

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問