在Excel VBA中的文本到列的问题

我试图创build一个macros,当在一个工作簿中运行将在后台打开另一个工作簿时,将此新打开的工作簿的列F从文本更改为date,保存更改,然后closures刚刚打开的工作簿。 在代码中,我正在尝试不断收到错误消息'运行时错误'1004':Range类的TextToColumns方法失败'。 你知道什么是错的,我怎么能解决它?

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 

您需要完全限定Destination:=Range("F1") 。 如果没有,它将在ActiveSheet Range("F1") 。 这可能是错误的,因为它应该是xlWS Range("F1")

所以

 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