ich habe ein Formular erstellt, indem man 5 unterschiedliche Daten/Werte eintragen muss. Anschließend sollen diese Daten/Werte in eine "Datenbank" übertragen und abgespeichert werden. Die Datenbank ist in diesem Fall eine sehr große Excel-Tabelle, > 25mb. Die Daten sollen in die Datenbank bzw. Excelliste übertragen werden, ohne diese zu öffnen.
Mein Ansatz ist eine ADO die auch funktionsfähig ist. Allerdings müssen die Daten als text eingegeben werden.
Gerne würde ich Daten als Variable einer anderen Sub (public Function) in die ADO eingeben und anschließend überstellen.
Ist das mit einer ADODB möglich? Bei meinen Versuchen bekomme ich Fehlermeldungen.
Hier ein Auszug aus meiner Sub. Hier werden die 5 Daten über die Variable summeA(1, Wert1... _
Wert5) ermittelt.
Option Explicit
Public Function summeA(varTabelle1 As Variant, lngWert As Long) As Double
With Worksheets(varTabelle1)
summeA = Application.WorksheetFunction.SumIf(.Range("B2:B22"), lngWert, .Range("C2:C100")) _
_
_
_
End With
End Function
Sub TestIt()
Debug.Print summeA(1, Wert1)
Debug.Print summeA(1, Wert2)
End Sub
Die Variable summeA(1, Wert1), summeA(1, Wert2), ... werden von der ADODB übernommen und sollen _
in die Excel-Datenbank überstellt werden.
Public Sub ADO()
Dim objConnection As Object
Dim strConnection As String
Dim summeA As Integer
Dim strWorkbook As String, strWorksheet As String
strWorkbook = "C:\Users\xyz\Desktop\Datenbank.xlsx"
strWorksheet = "Tabelle1"
Set objConnection = CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strWorkbook & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes;IMEX=0"""
Call objConnection.Open(strConnection)
Call objConnection.Execute("INSERT INTO [" & strWorksheet & "$]" & "(Wert1,Wert2,Wert3, _
Wert4,Wert5) VALUES (summeA(1,Wert1),'2','3','4','5')")
objConnection.Close
Set objConnection = Nothing
End Sub
Die Werte hinter VALUES, welche mit einem Appstroph versehen sind werden übergeben. Die Variable summeA(1,Wert1) erzwingt eine Fehlermeldung.