2012-09-12 158 views
1

可能重複:
excel macro: browse excel file and use its worksheet dataExcel宏:如何提取其他的Excel數據文件

總之,我想編寫一個腳本可以做到這一點。 在當前的excel文件中,有一個宏按鈕。用戶可以點擊按鈕瀏覽文件(另一個Excel)。在該瀏覽過的Excel中,幾個工作表將被加載到當前的Excel工作簿中並且將使用該數據。 我寫這樣的

Sub Button1_Click()  ' choose LOAD path 

    objFile = Application.GetOpenFilename(fileFilter:="All Files (* . *) , * . * ") ' browse function 

    ... ' following 

    Call main_function 
End Sub 

我寫的瀏覽功能了。但如何編寫以下部分?例如。 objFile中的某些工作表的數據將在main_function中使用。

回答

2

雖然你想要的東西不是很清楚(我不相信我理解你的問題的意圖),但我會對此有所瞭解。

假設您想要在objFile中打開文件的名稱,您可以像這樣從該電子表格中提取數據 - 我只打開選定的工作簿,然後將所有工作表的名稱寫入它在列表A中的任何一個表被按下之前打開。

打開一個新的工作簿會導致它被帶到前臺 - 所以如果我沒有在打開新書之前抓住活動工作表,然後在打開新書後設置它,最終會覆蓋數據你剛剛打開的工作簿。

Sub Button1_Click() 
    ' choose LOAD path 
    objFile = Application.GetOpenFilename(fileFilter:="All Files (* . *) , * . * ") ' browse function 

    Set curSheet = ActiveSheet 
    Set mWorkbook = Workbooks.Open(objFile) 
    curSheet.Activate 

    Call someFunction(curSheet, mWorkbook) 
End Sub 


Sub someFunction(targetSheet, srcWorkbook) 
    numSheets = srcWorkbook.Sheets.Count 
    For i = 1 To numSheets 
     targetSheet.Cells(i, 1) = srcWorkbook.Sheets(i).Name 
    Next i 
End Sub 
+0

thx!〜我嘗試了另一種方法。將整個工作表複製到當前工作簿。但缺點是使用後,用戶需要點擊「刪除」才能刪除這些複製的工作表。實際上,我想要的只是讀取數據,而不是複製和粘貼。這意味着無需追蹤就可以導入和使用其他工作簿的數據。我不知道是否可以做到這一點。 – TJLD22

+1

快樂。你能詳細說明你想做什麼嗎?你可以從你傳遞給它的任何函數中使用mWorkbook。使用該變量,您可以讀取excel文件中的任何數據。您不需要將數據從一個地方複製到另一個地方,除非您真的需要在其他地方。所以,正如我所說 - 如果您可以進一步闡述您的意圖,我將能夠爲您提供更好的答案。 – enhzflep