Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将文本列为许多excel工作簿_Vba_Excel_Excel Formula - Fatal编程技术网

Vba 将文本列为许多excel工作簿

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

我想使用vba在许多工作簿上执行文本到列的转换

我尝试了下面的代码,但它只在一个工作簿上工作,而我希望除了“Testmac”wb之外的所有工作簿都被修改

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