Supportnet Computer
Planet of Tech

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?

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!


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"

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: