Supportnet / Forum / Tabellenkalkulation
Exel Tabelle nach Access exportieren mit VBA/Makro
Frage
Hallo zusammen,
ich bin echt begeistert von den was die Leute hier schon alles können.
Vielleicht kann mir auch einer helfen.
Ich muss jeden Tag mit Access, Exel Tabellen importieren.
Kann man das vieleicht mit einem VBA Programm automatisieren????
MfG
Sandra K
Antwort 1 von MixMax
ich denke schon, dass das geht.
Ich teste gerade mal etwas rum - excel 2007 oder älter?
Versuch mal etwa zu beschreiben:
Exceltabellen immer gleiche Name oder ist das mit datum im Namen?
Ich teste gerade mal etwas rum - excel 2007 oder älter?
Versuch mal etwa zu beschreiben:
Exceltabellen immer gleiche Name oder ist das mit datum im Namen?
Antwort 2 von MixMax
hm, vielleicht geht das auch einfacher aber in der zwischenzeit ist mir ne idee gekommen die ich mal umgesetzt habe:
Unter Access 2007 gibt es die möglichkeit einen Importvorgang aufzuzeichnen,
Macro ließt inhaltsverzeichniss eines bestimmten Ordners und importiert alle Exceldateien, dazu wird die Importvorlage immer geändert. Meine Vorlage die da benutzt wird (und die aktuelle überschreibt) hat allerdings andere Spaltennamen!
Tipp - wenn du wissen möchtest wie deine Vorlage aussieht, Speichere die und öffne dann den Visual Basic Editor.
Gib unten im Direktfenster dann ein:
Wenn du diese dann verwenden möchtest, must du folgende änderungen vornehmen (am besten nimmst Notepad dafür):
1) Da wo die Excel-datei angegeben ist muss ##InFile## stehen
2) Alle " gegen "" tauschen
3) am anfang jeder Zeile ein " hinzufügen
4) am ende jeder Zeile außer letzte Zeile " & vbCrLf & _ anfügen,
5) am ende der letzten Zeile " anfügen
dann kannst meine Zeilen entfernen und ohne abstand in die Zeile nach
ImpExpSpez = _
<-- hier hin
kopieren
Unter Access 2007 gibt es die möglichkeit einen Importvorgang aufzuzeichnen,
Macro ließt inhaltsverzeichniss eines bestimmten Ordners und importiert alle Exceldateien, dazu wird die Importvorlage immer geändert. Meine Vorlage die da benutzt wird (und die aktuelle überschreibt) hat allerdings andere Spaltennamen!
Private Sub Befehl0_Click()
BaseFold = "Z:\Datenordner"
ImportSub = "AutoImport"
FertigSub = "Fertig"
SavedImportName = "imptest"
ImpExpSpez = _
"<?xml version=""1.0"" encoding=""utf-8"" ?>" & vbCrLf & _
"<ImportExportSpecification Path = ""##InFile##"" xmlns=""urn:www.microsoft.com/office/access/imexspec"">" & vbCrLf & _
" <ImportExcel FirstRowHasNames=""true"" AppendToTable=""testin"" Range=""Tabelle1$"" >" & vbCrLf & _
" <Columns PrimaryKey=""{Auto}"">" & vbCrLf & _
" <Column Name=""Col1"" FieldName=""ID"" Indexed=""NO"" SkipColumn=""false"" DataType=""Long"" />" & vbCrLf & _
" <Column Name=""Col2"" FieldName=""name"" Indexed=""NO"" SkipColumn=""false"" DataType=""Text"" />" & vbCrLf & _
" <Column Name=""Col3"" FieldName=""besitzer"" Indexed=""NO"" SkipColumn=""false"" DataType=""Text"" />" & vbCrLf & _
" <Column Name=""Col4"" FieldName=""alter"" Indexed=""NO"" SkipColumn=""false"" DataType=""Text"" />" & vbCrLf & _
" </Columns>" & vbCrLf & _
" </ImportExcel>" & vbCrLf & _
"</ImportExportSpecification>"
ContentItem = Dir(BaseFold & "\" & ImportSub & "\" & "*.xl*")
If ContentItem = "" Then
MsgBox "keine Dateien zum Import gefunden."
End If
Do Until ContentItem = ""
' #### Loop mit allen XL-Dateien ####
CurrentProject.ImportExportSpecifications(SavedImportName).XML = Replace(ImpExpSpez, "##InFile##", BaseFold & "\" & ImportSub & "\" & ContentItem)
MsgBox "Importiere nun '" & ContentItem & "'"
DoCmd.RunSavedImportExport "imptest"
Select Case MsgBox("Import Fehlerfrei?" & vbCrLf & "(Ja = Datei in fertig verschieben und weiter," & vbCrLf & "Nein = mit nächster Datei fortfahren, diese wird nicht verschoben" & vbCrLf & "Abbrechen = Stoppen", vbYesNoCancel)
Case vbYes
Name BaseFold & "\" & ImportSub & "\" & ContentItem As BaseFold & "\" & FertigSub & "\" & ContentItem
Case vbNo
Case Else
Exit Sub
End Select
ContentItem = Dir()
Loop
End Sub
Tipp - wenn du wissen möchtest wie deine Vorlage aussieht, Speichere die und öffne dann den Visual Basic Editor.
Gib unten im Direktfenster dann ein:
? currentproject.ImportExportSpecifications("imptest").XML
Wenn du diese dann verwenden möchtest, must du folgende änderungen vornehmen (am besten nimmst Notepad dafür):
1) Da wo die Excel-datei angegeben ist muss ##InFile## stehen
2) Alle " gegen "" tauschen
3) am anfang jeder Zeile ein " hinzufügen
4) am ende jeder Zeile außer letzte Zeile " & vbCrLf & _ anfügen,
5) am ende der letzten Zeile " anfügen
dann kannst meine Zeilen entfernen und ohne abstand in die Zeile nach
ImpExpSpez = _
<-- hier hin
kopieren
Antwort 3 von MixMax
Umgebung:
in dem Ordner
BaseFold = "Z:\Datenordner"
müssen 2 Ordner vorhanden sein:
ImportSub = "AutoImport"
FertigSub = "Fertig"
Der gespeicherte Import muss wie in dieser Variable benannt sein:
SavedImportName = "imptest"
in dem Ordner
BaseFold = "Z:\Datenordner"
müssen 2 Ordner vorhanden sein:
ImportSub = "AutoImport"
FertigSub = "Fertig"
Der gespeicherte Import muss wie in dieser Variable benannt sein:
SavedImportName = "imptest"
Antwort 4 von Sandrak
Hallo MixMax,
tut mir leid gestern konnte ich deine Nachrichten nicht mehr lesen.
DIe Exel Tabelle ist am selben Platz und auch immer den selben Namen, dh. es wird täglich überschrieben.
Achja, ich arbeite mit OfficeXP.
vielen Dank schonmal
tut mir leid gestern konnte ich deine Nachrichten nicht mehr lesen.
DIe Exel Tabelle ist am selben Platz und auch immer den selben Namen, dh. es wird täglich überschrieben.
Achja, ich arbeite mit OfficeXP.
vielen Dank schonmal