hatena
hatena
2019/04/16 (火) 12:31:37
コネクションを最初に1回生成してOpenして、
続けて100回追加して、最後にCloseするには、以下のようなプロシージャを作っておいて
AdoOpen() というようにプロシージャを分けるなら、下記のような設計がいいかな。
Sub AdoOpen(FileName As String, adoCn As ADODB.Connection)
Dim FilePath As String
FilePath = "C:\Users\tasukaru\Desktop\VBA\出品データ用\access\" & FileName
Set adoCn = CreateObject("ADODB.Connection") 'ADODBコネクションオブジェクトを作成
adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath & ";" 'Accessファイルに接続
End Sub
Function AddDB(ByVal Tn As String, ByVal Fn As String, ByVal Fd As String, ByRef adoCn As ADODB.Connection) As Boolean
Dim strSQL As String
AddDB = True
On Error GoTo errTrap
strSQL = "INSERT " & "INTO " & Tn & Fn & " VALUES" & "(" & Fd & ")"
'Debug.Print strSQL
adoCn.Execute strSQL 'SQLを実行して対象を追加
Exit Function
errTrap:
AddDB = False
MsgBox Err.Number & ": " & Err.Description
End Function
Public Sub Proc()
Dim adoCn As ADODB.Connection
AdoOpen "データ.accdb", adoCn
Tn = "・・・"
Fn = "・・・"
Fd = "・・・"
If AddDB(Tn, Fn, Fd, adoCn) = False Then
MsgBox "データ追加に失敗しました。"
End If
adoCn.Close
Set adoCn = Nothing
End Sub
AddDBでデータ追加に失敗するとエラートラップでエラーメッセージを表示するようにしてますので、
それで失敗の原因が特定できると思います。
通報 ...