前提・実現したいこと
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
~~
上記ソースコードの実行では問題なく動作しています。
~~
上記リンクのソースコードの実行では問題なく動作しています。
補足情報
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。