2016-09-12 64 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