Yaklaşık 75 Excel dosyası içeren bir klasörüm var (.xlsx). Excel dosyalarının hepsinin beş adlı çalışma sayfası olması gerekir (örneğin: SurveyData
, AmphibianSurveyObservationData
, BirdSurveyObservationData
, PlantObservationData
ve WildSpeciesObservationData
). Ne yazık ki, bazen Excel dosyaları çalışma sayfalarının yalnızca bir alt kümesine sahiptir (yani, One Excel dosyasının tüm beş çalışma sayfası olabilir, diğeri ise yalnızca SurveyData
ve AmphibianSurveyObservationData
çalışma sayfalarına sahip olur).Tüm Excel dosyaları aynı sayfalara sahip olmadığında Access'e birden çok Excel dosyasını ve çalışma sayfasını içe aktarın
Tüm bu Excel dosyalarını Access'e aktarmak ve her çalışma sayfasından ayrı bir tabloya bilgi almak istiyorum. Örneğin, tüm Excel dosyalarındaki SurveyData
çalışma sayfasındaki tüm verilerin SurveyData
adlı bir Erişim Tablosuna yerleştirilmesini istiyorum. Bu VBA kodunu (aşağıya bakın) buldum ve tüm çalışma sayfaları Excel dosyasında bulunduğunda iyi çalışıyor gibi görünüyor, ancak bir çalışma sayfası eksik olduğunda, komut dosyası durur ve diğer dosyalardan herhangi birini içe aktarmaya devam etmez. Excel dosyasında mevcutsa, yalnızca bir çalışma sayfasını içe aktarmanın herhangi bir yolu var mı, yoksa yalnızca içe aktarmayı atlamak mı?
Function ImportExcelFiles()
Dim strFile As String
DoCmd.SetWarnings False
' Set file directory for files to be imported
strPath = "D:\SpeciesData\MoELoadform\2015SpeciesDetectionLoadforms - Copy\"
' Tell it to import all Excel files from the file directory
strFile = Dir(strPath & "*.xls*")
' Start loop
Do While strFile <> ""
' Import file
DoCmd.TransferSpreadsheet transfertype:=acImport, tablename:="SurveyData", FileName:=strPath & strFile, HasFieldNames:=True, Range:="SurveyData!A1:AD"
DoCmd.TransferSpreadsheet transfertype:=acImport, tablename:="AmphibianSurveyObservationData", FileName:=strPath & strFile, HasFieldNames:=True, Range:="AmphibianSurveyObservationData!A1:AQ"
DoCmd.TransferSpreadsheet transfertype:=acImport, tablename:="BirdSurveyObservationData", FileName:=strPath & strFile, HasFieldNames:=True, Range:="BirdSurveyObservationData!A1:AQ"
DoCmd.TransferSpreadsheet transfertype:=acImport, tablename:="PlantObservationData", FileName:=strPath & strFile, HasFieldNames:=True, Range:="PlantObservationData!A1:BS"
DoCmd.TransferSpreadsheet transfertype:=acImport, tablename:="WildSpeciesObservationData", FileName:=strPath & strFile, HasFieldNames:=True, Range:="WildSpeciesObservationData!A1:AP"
' Loop to next file in directory
strFile = Dir
Loop
MsgBox "All data has been imported.", vbOKOnly
End Function
Çok teşekkürler Marc,! – RFisherSK