2012-08-15 46 views
1

我正在嘗試創建一個子例程,提示用戶選擇工作簿,然後將選定工作簿的第一張工作表添加爲現有(活動)工作簿中的選項卡。然後命名新標籤「數據」。下面是我使用至今代碼:將工作表從另一工作簿加載到Excel中與VBA

"ws.Add" method or With Block not set.

任何幫助表示讚賞:

Sub getworkbook() 
' Get workbook... 
Dim ws As Worksheet 
Dim filter As String 
Dim targetWorkbook As Workbook 

Set targetWorkbook = Application.ActiveWorkbook 

' get the customer workbook 
filter = "Text files (*.xlsx),*.xlsx" 
caption = "Please Select an input file " 
ws = Application.GetOpenFilename(filter, , caption) 

ws.Add After:=Sheets(Sheets.Count) 

ws.Name = "DATA" 

End Sub 

此代碼似乎並不奏效,並返回以下錯誤。

感謝,

+0

類似的問題:http://stackoverflow.com/questions/3840628/creating-and-naming-worksheet-in-excel-vba – 2012-08-15 23:32:43

回答

4

您已經聲明ws作爲工作表和GetOpenFilename返回一個文件名。我會建議閱讀我的帖子在這link

這是你正在嘗試?

注意:我還沒有做任何錯誤處理。我相信你可以照顧到這一點。

Sub getworkbook() 
    ' Get workbook... 
    Dim ws As Worksheet 
    Dim filter As String 
    Dim targetWorkbook As Workbook, wb As Workbook 
    Dim Ret As Variant 

    Set targetWorkbook = Application.ActiveWorkbook 

    ' get the customer workbook 
    filter = "Text files (*.xlsx),*.xlsx" 
    Caption = "Please Select an input file " 
    Ret = Application.GetOpenFilename(filter, , Caption) 

    If Ret = False Then Exit Sub 

    Set wb = Workbooks.Open(Ret) 

    wb.Sheets(1).Move After:=targetWorkbook.Sheets(targetWorkbook.Sheets.Count) 

    ActiveSheet.Name = "DATA" 
End Sub 
+0

我怎麼能包括舊版本的Excel文件,即.xls的? – AME 2012-09-06 18:54:02

+2

將'filter =「文本文件(* .xlsx),*。xlsx」'改爲'filter =「文本文件(* .xls *),*。xls *」' – 2012-09-06 18:56:32

相關問題