![](/img/trans.png)
[英]Importing Data from specific excel sheets from multiple workbooks in a folder
[英]Importing data from many excel workbooks and sheets into a single workbook/table
我有54個excel文件,每個文件有3個工作表,每個工作表都有不同數量的數據條目,但是它們以相同的格式列出,我需要使用VBA將這些工作表中的數據導入到單個工作簿中。
有什么方法可以對其編程,以便構建循環以導入數據,而不必為每個循環/工作表輸入每個工作簿名稱? 我想我可以使用call函數,但是我不知道如何使循環代碼獨立於它們所適用的工作簿名稱。
提前謝謝你
米莉
當然,只需將工作簿循環放在一個文件夾中,然后將其打開,然后再將其循環瀏覽。 根據格式上的細微差異,您可能需要在導入時做一些額外的工作。
Sub ImportWorkbooks(destination as workbook, importFolderPath As String)
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Get the folder object associated with the directory
Set objFolder = objFSO.GetFolder(importFolderPath)
'Loop through the Files collection and import each workbook
For Each objFile In objFolder.Files
Dim source As Workbook
Set source = Application.Workbooks.Open(objFile.Path, ReadOnly:=True)
ImportWorkbook source, destination
wb.Close
Set wb = Nothing
Next
Set objFolder = Nothing
Set objFile = Nothing
Set objFSO = Nothing
End Sub
Sub ImportWorkbook(source As Workbook, destination as Workbook)
Dim sheet As Worksheet
'Import each worksheet
For Each sheet In source.Sheets
ImportWorksheet sheet, destination
Next sheet
End Sub
Sub ImportWorksheet(sheet As Worksheet, destination as Workbook)
'Perform your import logic for each sheet here (i.e. Copy from sheet and paste into a
'sheet into the provided workbook)
End Sub
基本用法類似於將以下內容導入當前工作簿:
ImportWorkbooks ThisWorkbook, "c:\path\to\folder\containing\workbooks\to\import"
它只需要兩件事:一個帶有工作簿文件名的數組,例如
dim books
books = array("book1.xls","book2.xls",....)
然后你的循環代碼看起來像
dim myBk as Workbook
dim bkFile as string
For Each bkFile in books
myBk = Workbooks.Open(bkFile, ReadOnly)
myBk.Activate
'Transfer cells from myBk to target workbook
target.cells(--).Value = myBk.Sheets("myStuff").Cells(--)
...
Next
我無法幫您解決細節。 您需要為每次遍歷循環更改target.cells參數以移動數據目標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.