Import Eines Arbeitsblatts aus Mehreren Excel-Dateien in Mehrere Access-Tabellen
Habe ich über 200 Excel-Dateien, die ich importieren möchten, in einer einzigen Access-Datenbank und eine Tabelle für jede Datei. Jede Excel-Datei hat mehrere Arbeitsblätter, aber die, die ich möchte, zu importieren ist konsequent benannt.
Ich habe einige code für diese finden Sie unter: http://www.accessmvp.com/KDSnell/EXCEL_Import.htm#ImpBrsFldFiles,
http://social.msdn.microsoft.com/Forums/en-US/dfea25ab-cd49-495c-8096-e3a7a1484f65/importing-multiple-excel-files-with-different-file-name-into-access-using-vba
Hier ist eines der Stücke von code, die ich habe versucht:
Option Compare Database
Sub ImportFromExcel()
End Sub
Dim strPathFile As String, strFile As String, strPath As String
Dim strTable As String, strBrowseMsg As String
Dim blnHasFieldNames As Boolean
' Change this next line to True if the first row in EXCEL worksheet
' has field names
blnHasFieldNames = True
strBrowseMsg = "C:\Users\fratep\Desktop\Long-term EWM Study Data Files\"
strPath = BrowseFolder(strBrowseMsg)
If strPath = "" Then
MsgBox "No folder was selected.", vbOK, "No Selection"
Exit Sub
End If
' Replace tablename with the real name of the table into which
' the data are to be imported
strTable = "tablename"
strFile = Dir(strPath & "\*.xls")
Do While Len(strFile) > 0
strPathFile = strPath & "\" & strFile
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
strTable, strPathFile, blnHasFieldNames
' Uncomment out the next code step if you want to delete the
' EXCEL file after it's been imported
' Kill strPathFile
strFile = Dir()
Loop
Sub ImportMultiExcels()
End Sub
ab dem 1. link oben, aber ich kann nicht scheinen, um Sie zu bekommen zu tun, was ich Suche. Kann mir jemand helfen?
Ich bin neu in VBA, bin also ein wenig unsicher über die Bearbeitung von code.
Hallo Hans, ja, so weit ich erzählen kann der Import-Assistent macht nur ein Blatt zu einem Zeitpunkt. Wie ich sagte, ich habe festgestellt, VBA-Skripte, um die Funktion auszuführen, aber aus irgendeinem Grund kann ich nicht bekommen Sie zu arbeiten.
OK dann zeigen Sie uns Ihre VBA, die erfolgreich importiert ein einzelnes Blatt und beschreiben Sie die Probleme, die Sie gegenüberstellen, wenn Sie versuchen, zu verlängern, zu 200 Blatt.
Ich sollte auch hinzufügen, dass ich bin ziemlich neu in VBA, also habe ich ein bisschen Probleme beim Lesen und Anpassung an meine situation. Ich habe die Pfadangaben in den Dateien, das ist es also nicht.
Sorry, nicht mit VBA zu importieren einzelnes Blatt, ich bin mit dem Import-Assistenten. Ist das mein problem?
InformationsquelleAutor logicForPresident | 2013-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, Sie sind in der Lage, um den Import-Assistenten verwenden, um erfolgreich zu importieren eines Arbeitsblatts in Access. In diesem Fall sollten Sie in der Lage sein zu verwenden, die DoCmd.TransferSpreadsheet-Methode zu tun, die gleiche Sache von VBA-code in Ihre Access-Datenbank.
In der nachfolgenden Prozedur liest ein einzelnes Blatt mit dem Namen XYZ Priorität wie eine Access-Tabelle mit dem Namen Import1.
Habe ich eine Konstante für den Namen des Blattes, weil Sie sagten, das Ziel-sheet den gleichen Namen in allen Quell-Arbeitsmappe-Dateien.
Konstruierte ich den Namen der Tabelle als "Importieren" plus ich. Wenn Sie erweitern Sie diese, um mehrere Arbeitsmappen können Sie die Schrittweite ich nach jedem import. Oder vielleicht haben Sie eine andere Strategie für die Tabellennamen; Sie nicht sagen.
Aufgeteilt ich die
TransferSpreadsheet
- Anweisung über mehrere Zeilen, und eine option integriert, mit Namen (hoffentlich) leichter zu verstehen.Mein Arbeitsblatt enthält Spaltennamen, so habe ich
HasFieldNames:=True
Und meine Arbeitsmappe wurde erstellt mit einer älteren version von Excel.
SpreadsheetType:=acSpreadsheetTypeExcel9
arbeitet mit diesem; Sie müssen möglicherweise einen anderen Wert fürSpreadsheetType
Zuerst können Sie sich diese Arbeit machen für ein einzelnes Arbeitsblatt importieren?
Bitte haben Sie Geduld mit mir. Wie kann ich festlegen, den Weg, der zum CurrentProject? Sorry für so eine dumme Frage, wie ich sagte, ich bin eine Marke-newb.
Meine Arbeitsmappe sich in dem gleichen Ordner wie die Access-db-Datei, die hält, dass die VBA-Prozedur. So habe ich
CurrentProject.Path & Chr(92)
als Ersatz für die tatsächlichen Ordner-Pfad: C:\share\Access\ " Ihre version des Codes zu verwenden, was Methode, die Sie sind komfortabel mit, um den Ordner anzugeben, in Stück.Okay, sorry nochmal, wenn ich versuche den code ausführen, er sagt mir, dass die Makros in diesem Projekt deaktiviert sind. Ich habe versucht Sie zu aktivieren und ich bekomme immer wieder die Fehlermeldung. Ich auch geschlossen und wieder geöffnet das Paket und immer noch das gleiche passiert. Irgendwelche Gedanken?
InformationsquelleAutor HansUp