2016-09-12 68 views
0

我試圖創建一個宏,當在一個工作簿中運行將在後臺打開另一個工作簿時,將此新打開的工作簿的列F從文本更改爲日期,保存更改並關閉剛剛打開的工作簿。在代碼中,我正在嘗試不斷收到錯誤消息'運行時錯誤'1004':Range類失敗的TextToColumns方法'。你知道什麼是錯的,我該如何解決它?Excel中的文本列問題VBA

Sub Test() 

Dim xlApp As New Excel.Application 
Dim xlWB As Excel.Workbook 
Dim xlWS As Excel.Worksheet 

xlApp.Visible = False 

Set xlWB = xlApp.Workbooks.Open("directory_file_to_open") 

Set xlWS = xlWB.Worksheets("worksheet_of_data") 
xlWS.Unprotect 

    xlWS.Columns("F:F").TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _ 
     TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ 
     Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ 
     :=Array(1, 4), TrailingMinusNumbers:=True 

Set xlWS = Nothing 
xlApp.DisplayAlerts = False 
xlWB.Close True 
Set xlWB = Nothing 
xlApp.Quit 
Set xlApp = Nothing 

End Sub 

回答

1

您需要完全限定Destination:=Range("F1")。如果不是,則將在ActiveSheet中爲Range("F1")。這可能是錯誤的,因爲它應該是Range("F1")xlWS

所以

xlWS.Columns("F:F").TextToColumns Destination:=xlWS.Range("F1"), DataType:=xlDelimited, _ 
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ 
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ 
    :=Array(1, 4), TrailingMinusNumbers:=True 
+0

不錯的一個,謝謝 – kit