2013-10-10 40 views
1

我有這段代碼,它給了我一個編譯錯誤:期望的函數或變量。
我如何正確編碼。將工作簿對象傳遞給變量

Sub test() 

Dim wb As Workbook 
Dim FiletoOpen 

FiletoOpen = Application.GetOpenFilename(filefilter:="Text Files (*.csv), *.csv", MultiSelect:=False) 

Set csv_wb = Workbooks.OpenText(Filename:=FiletoOpen, startRow:=1, DataType:=xlDelimited, TextQualifier:= _ 
     xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _ 
     , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _ 
     Array(2, 1), Array(3, 2), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _ 
     Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1))) 

End Sub 

如果我使用Set csv_wb = Workbooks.Open (FiletoOpen)它工作正常。
但在文件中有特定的字段,我需要在Text格式。
所以我不能使用這個。但是,當我使用上述,它給了我錯誤。
任何幫助將不勝感激。

回答

2

您已聲明wb,但使用csv_WB試試這個。

UNTESTED

Sub test() 
    Dim csv_WB As Workbook 
    Dim FiletoOpen 

    FiletoOpen = Application.GetOpenFilename(filefilter:="Text Files (*.csv), *.csv", MultiSelect:=False) 

    If FiletoOpen = False Then Exit Sub 

    Workbooks.OpenText Filename:=FiletoOpen, startRow:=1, DataType:=xlDelimited, TextQualifier:= _ 
       xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _ 
       , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _ 
       Array(2, 1), Array(3, 2), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _ 
       Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1)) 

    Set csv_WB = ActiveWorkbook 

End Sub 
+1

Explicit選項? – pnuts

+0

@sid這是一個錯字。此代碼原本是較大代碼的一部分。我只是轉移它來隔離這個問題。我已經編輯過這個帖子。謝謝。 – L42

+0

@ L42:是的,我意識到這一點。我更新了我的帖子 –