Bir Klasördeki Tüm Dosyaları Erişim Tablonuza Nasıl Aktarırsınız?

Şimdi paylaş:

Veri, veri, veri - onsuz bir veritabanı oldukça işe yaramaz olurdu. Bu yüzden m'den birinin olması şaşırtıcı değilost Bu verileri Access tablo(lar)ınıza almak söz konusu olduğunda sık sorulan sorular şudur: Düzenli olarak çok sayıda (ve çok sayıda!) dosya içe aktarmam gerektiğinde hayatımı nasıl kolaylaştırabilirim? Bu çok yaygın bir görev olduğu için, belirli bir kedinin derisini yüzmenin birçok yolu olduğu açıktır, ancak burada sadece bir tanesine bakacağız - bence en kolayı - özellikle bunu düzenli olarak yapıyorsanız, hatta planlanan zaman dilimi. Biraz planlama (ve biraz demek istiyorum!) ve biraz VBA büyüsü ve hazır olacaksınız – almak için okumaya devam edintarted…

Bir klasördeki tüm Excel dosyalarını içe aktarma

Erişmek İçin Excel Dosyasını İçe AktarınBu makale için, belirli bir klasördeki bir dizi Excel dosyasını içe aktarmaya bakacağız, ancak csv dosyalarını vb.

Öncelikle kodun ne yapmasını istediğimizi tanımlayalım:

"Belirli bir klasördeki tüm dosyaları mevcut bir tabloya aktarmak istiyoruz - ayrıca dosyaların bir başlık satırı olup olmadığını da belirtmek istiyoruz"

Yeterince basit görünüyor, bu yüzden bunu yapmak için koda bakalım:

Sub ImportfromPath(path As String, intoTable As String, hasHeader As Boolean)

Dim fileName As String

'Loop through the folder & import each file
fileName = Dir(path & "\*.xls")
While fileName <> ""
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, intoTable, path & fileName, hasHeader
   'check whether there are any more files to import
    fileName = Dir()
Wend

End Sub

Sorunlar kontrol ediliyor…

Erişim Veritabanı BozulmasıBu kodun nasıl çalıştığıyla ilgili ayrıntılara girmeden önce, yukarıdaki kodda herhangi bir hata denetimi bulunmadığına dikkat etmek önemlidir - bu, kodun kolayca okunabilmesi için kasıtlıdır, ancak hata işleme kodu eklemenizi şiddetle tavsiye ederim şansınızı korumak için veritabanınıza Erişim veritabanı bozulması minimuma!

Tamam - önce ilk şeyler. Kodu mümkün olduğunca farklı durumlarda kullanılabilir durumda tutmak için yol adını (dosyaların depolandığı yer), bu dosyaları içine aktarmak istediğiniz tablonun adını ve bu klasördeki dosyaların tümünün sahip olup olmadığını soruyoruz. başlık veya değil (yani alan adları elektronik tablonun ilk satırında görünüyor mu).

Dosyaları arayan kod bölümünün – Dir(yol & “\*.xls”) – sağlanan yola bir joker karakter ve dosya uzantısı eklediğini fark edeceksiniz. Bunu, örneğin, yalnızca belirli bir adlandırma kuralıyla eşleşen dosyaları (örneğin, dosya adının bir parçası olarak "Ocak" veya "2017" olan tüm dosyalar) içe aktarmak istiyorsanız, kodu değiştirmek çok kolay olacağı için belirtiyorum. ). İsterseniz, bu filtreyi alt program çağrısına bir parametre olarak bile ekleyebilirsiniz.

Her neyse, verilen ölçütlerle eşleşen bir dosya (bu durumda klasördeki herhangi bir “.xls” dosyası) varsa, hemen TransferSpreadsheet komutunu kullanarak bu dosyayı içe aktarmayı dener.

Kodu ihtiyaçlarınıza göre nerede değiştirebilirsiniz…

İşte bu noktada, bir elektronik tabloyu içe aktarmak yerine csv dosyalarını ("TransferText" komutunu kullanarak) içe aktaracak şekilde kodu değiştirebilirsiniz.

Daha sonra kod, o klasörde içe aktarılacak başka dosya kalmayıncaya kadar döngüye girer.

Bu küçük bir kod parçası ama eminim kendinizi tekrar tekrar kullanırken bulacaksınız!

Yazar Tanıtımı:

Mitchell Pond, bir veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. SQL bozulmasını onar ve excel kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com

Şimdi paylaş:

Yoruma kapalı.