Vba 将文本列为许多excel工作簿
我想使用vba在许多工作簿上执行文本到列的转换 我尝试了下面的代码,但它只在一个工作簿上工作,而我希望除了“Testmac”wb之外的所有工作簿都被修改Vba 将文本列为许多excel工作簿,vba,excel,excel-formula,Vba,Excel,Excel Formula,我想使用vba在许多工作簿上执行文本到列的转换 我尝试了下面的代码,但它只在一个工作簿上工作,而我希望除了“Testmac”wb之外的所有工作簿都被修改 Sub-sdptest() 将w作为工作簿 对于工作簿中的每个w 如果w.名称为“testmac”,则 列(“A:A”)。选择 Selection.TextToColumns Destination:=范围(“A1”),数据类型:=xlDelimited_ TextQualifier:=xlDoubleQuote,continuedDelimi
Sub-sdptest()
将w作为工作簿
对于工作簿中的每个w
如果w.名称为“testmac”,则
列(“A:A”)。选择
Selection.TextToColumns Destination:=范围(“A1”),数据类型:=xlDelimited_
TextQualifier:=xlDoubleQuote,continuedDelimiter:=False,Tab:=False_
分号:=False,逗号:=True,空格:=False,其他:=False,FieldInfo_
:=数组(数组(1,1),数组(2,1),数组(3,1)),TrailingMinusNumbers:=True
选择。删除移位:=xlToLeft
范围(“A1”)。选择
如果结束
下一个w
端接头
在代码列(“A:A”)
中隐式引用ActiveWorkbook.ActiveSheet.Columns(“A:A”)
,这就是为什么它只在一张纸上工作 以下是在所有打开的工作簿和所有工作表中执行此操作的代码: 注意,我已经对删除列的部分进行了注释(在将数据放在那里之后,这看起来很奇怪),所以如果需要,只需取消注释即可!;)
您好,非常感谢您的快速回复,当我运行代码时,出现了一个错误:“没有选择要分析的数据”。好心的help@h.barry:尝试编辑!我猜它发现了一张空表,所以我添加了一个测试!;)@h、 巴里:很高兴我能帮忙!;)
Sub sdptest()
Dim w As Workbook
For Each w In Workbooks
If w.Name <> "testmac" Then
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), 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, 1)), TrailingMinusNumbers:=True
Selection.Delete Shift:=xlToLeft
Range("A1").Select
End If
Next w
End Sub
Sub sdptest()
Dim w As Workbook
Dim wS As Worksheet
For Each w In Workbooks
If InStr(1, LCase(w.Name), "testmac") Then
Else
For Each wS In w.Sheets
With wS.Columns("A:A")
If Application.WorksheetFunction.CountA(.Cells) > 0 Then
.TextToColumns Destination:=Range("A1"), _
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, 1)), TrailingMinusNumbers:=True
'.Delete Shift:=xlToLeft
Else
End If
End With 'wS.Columns("A:A")
Next wS
End If
Next w
End Sub