Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1520to1524
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA code zu Access VBA code

Excel VBA code zu Access VBA code
17.10.2016 08:23:52
Jost
Hallo ich habe einen Code, der Daten aus verschiedenen Excel tabellen in einer zusammen fügt. Nun will ich aber das die Daten nict mehr in einer exceltabelle sondern in einer Access Tabelle zusammen geführt werden. Könnte mir jemand helfen den Code in Access zu übersetzen ?
Sub Uebersicht_erstellen()
'true/false vars
Dim dsplalert As Boolean
Dim cal
Dim scrup As Boolean
Dim ev As Boolean
Dim Ask As Boolean
'Ordnervars
Dim dat
Dim ordner
Dim datein
Dim fso
Dim Ac As Worksheet
Set Ac = ActiveSheet
'Copy vars
Dim ExcelFile As Object
Dim wb As Workbook
Dim CopyRange As Range
Dim cell As Range
Dim r As Long
Dim c As Integer
'beschleunigung
With Application
dsplalert = .DisplayAlerts 'fehleranzeige aus
Ask = .AskToUpdateLinks 'Link updates aus
cal = .Calculation ' autoberehnung aus
scrup = .ScreenUpdating
ev = .EnableEvents
.DisplayAlerts = False
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
.AskToUpdateLinks = False
End With
Set dat = Application.FileDialog(msoFileDialogFolderPicker) ' Dialogfenster Ordner wählen
With dat
.Title = "Welche Daten wollen sie zusammenfassen?"
.InitialFileName = "C:" 'Pfad wählen
nochmal: 'sprungmarke
If .Show = -1 Then
ordner = .SelectedItems(1) ' deklarierung var Ordner
Else:
If MsgBox(" Ordner wählen ! " & vbCrLf & "Nochmal ?", vbYesNo) = vbYes Then
GoTo nochmal 'sprung
Else:
GoTo raus 'sprung siehe unten
End If
End If
End With
Set fso = CreateObject("Scripting.filesystemobject")
Set datein = fso.getfolder(ordner)
For Each ExcelFile In datein.Files
If ExcelFile.Name Like "*.xlsx" Then
Set wb = Workbooks.Open(ExcelFile.Path)
Set CopyRange = wb.Sheets("Results Overview").Range("C3,C15,C16,C17,C34,C41,C49,C50,C56,C57, _
_
C133,C139,C145,F145,D152,C159,C161,C162")
r = Ac.Cells(Rows.Count, 2).End(xlUp).Row + 1
'Cells(r, 1) = ExcelFile.Name
c = 2
For Each cc In CopyRange
Ac.Cells(r, c).Value = cc.Value
c = c + 1
Next
wb.Close False
End If
Next
raus:
With Application
.DisplayAlerts = dsplalert
.Calculation = cal
.ScreenUpdating = scrup
.EnableEvents = ev
.AskToUpdateLinks = Ask
End With
End Sub
Sub Sort_Test()
sortform.Show vbModeless
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA code zu Access VBA code
17.10.2016 08:45:09
Luschi
Hallo Jost,
Da Access keinen Datentyp 'Variant' kennt, muß man schon eine Access-Tabelle haben, in der die Struktur vordefiniert ist, d.h.:
- wenn in 'F145' ein Datum steht, dann muß es in der Access-Tabelle
  eine Spalte vom Typ 'Datum/Uhrzeit' geben usw.
Diese Stuktur mußt Du schon Erstellen.
Gruß von Luschi
aus klein-Paris
PS: Noch besser, stelle eine Excel-Demodatei bereit, worin die Daten in den oben angeführten entsprechenden Zellen einen vergleichbaren Wert enthalten wie in den Originaldateien.
AW: Excel VBA code zu Access VBA code
17.10.2016 09:35:48
Jost
Hier mal eine Demodatie. Es sind halt größtenteils einfache Zahlenwerte.
https://www.herber.de/bbs/user/108819.xlsx
Anzeige
AW: Excel VBA code zu Access VBA code
17.10.2016 13:58:32
baschti007
Hey Jost
Ich würde das so machen.
Gruß Basti
Deine MdB Datei muss natürlich schon so aufgebaut sein das wie du deine muster Excel Datei hast.
erste spalte text und sonst nur zahlen.
Sub DatenübernahmevonExcelnachAccess()
Dim ADOC As New ADODB.Connection
Dim DBS As New ADODB.Recordset
Dim ws As Worksheet
Pfad = "C:\Users\" & Environ("UserName") & "\Desktop\"
DateiName = "Test"
TabellenName = "tb1"
ADOC.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Pfad & DateiName & ".mdb;"
DBS.Open "SELECT * FROM " & TabellenName, ADOC, , adLockOptimistic
On Error GoTo fehler
For Each ws In ThisWorkbook.Worksheets
r = 2
With DBS
Do Until ws.Cells(r, 1).Value = ""
.AddNew
For i = 0 To .Fields.Count
On Error Resume Next
.Fields(i) = ws.Cells(r, i + 1).Value
Next
.Update
r = r + 1
Loop
End With
Next
DBS.Close
ADOC.Close
Set ADOC = Nothing
Set DBS = Nothing
Exit Sub
fehler:
MsgBox "Es trat ein Fehler auf!"
DBS.Close
ADOC.Close
Set ADOC = Nothing
Set DBS = Nothing
End Sub

Anzeige
AW: Excel VBA code zu Access VBA code
17.10.2016 15:46:24
baschti007
Oh ich sehe gerade ich hab alle Tabellenblätter der Excel Dateien in eine MDB gepackt =D
Ok dann vergiss meinen Vorschlag ...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige