Excel 将工作表导出到Txt

Excel 将工作表导出到Txt,excel,vba,export,Excel,Vba,Export,我需要将多个工作表导出到.txt文件。我希望它们保存在与工作簿相同的位置。我还需要工作表名称是.txt文件名。下面的代码是到目前为止我所拥有的,但是我在工作表(ws.Name)上发现了一个调试错误。选择…有什么想法吗?谢谢大家 此外,我将其存储在我的个人工作簿中,以便我可以在打开的任何文件中使用它 Sub Worksheets_to_txt() '<--Saves each worksheet as a text file with the same name Dim ws As

我需要将多个工作表导出到.txt文件。我希望它们保存在与工作簿相同的位置。我还需要工作表名称是.txt文件名。下面的代码是到目前为止我所拥有的,但是我在工作表(ws.Name)上发现了一个调试错误。选择…有什么想法吗?谢谢大家

此外,我将其存储在我的个人工作簿中,以便我可以在打开的任何文件中使用它

Sub Worksheets_to_txt() '<--Saves each worksheet as a text file with the same name

    Dim ws As Worksheet
    Dim relativePath As String
    Dim answer As VbMsgBoxResult

    relativePath = ThisWorkbook.Path

    answer = MsgBox("Are you sure you want to export worksheets?", vbYesNo, "Run Macro") '<--Pop up box to confirm export

    If answer = vbYes Then

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For Each ws In ThisWorkbook.Worksheets

        Sheets(ws.Name).Select
        Sheets(ws.Name).Copy
        ActiveWorkbook.SaveAs Filename:= _
        relativePath & "\" & ws.Name & ".txt", _
        FileFormat:=xlText, CreateBackup:=False
        ActiveWorkbook.Close
        ThisWorkbook.Activate
    Next
     End If

End Sub
子工作表\u to_txt()”如果打开了2个或多个工作簿(个人和其他),请更换:

For Each ws In ThisWorkbook.Worksheets

这样,
选择将起作用。(除非正确的工作簿也处于活动状态,否则无法选择工作表)

还修复:

ThisWorkbook.Activate
在循环的底部

如果打开了两个或多个工作簿(个人和其他),请更换:

For Each ws In ThisWorkbook.Worksheets

这样,
选择将起作用。(除非正确的工作簿也处于活动状态,否则无法选择工作表)

还修复:

ThisWorkbook.Activate
在循环的底部

试试这个

Sub Worksheets_to_txt() '<--Saves each worksheet as a text file with the same name

    Dim ws As Worksheet
    Dim relativePath As String
    Dim answer As VbMsgBoxResult

    relativePath = ActiveWorkbook.Path

    answer = MsgBox("Are you sure you want to export worksheets?", vbYesNo, "Run Macro") '<--Pop up box to confirm export

    If answer = vbYes Then

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For Each ws In ActiveWorkbook.Worksheets

        ws.Select
        ws.Copy
        ActiveWorkbook.SaveAs Filename:= _
        relativePath & "\" & ws.Name & ".txt", _
        FileFormat:=xlText, CreateBackup:=False
        ActiveWorkbook.Close
        ActiveWorkbook.Activate
    Next
     End If

End Sub
子工作表\u到\u txt()”试试这个

Sub Worksheets_to_txt() '<--Saves each worksheet as a text file with the same name

    Dim ws As Worksheet
    Dim relativePath As String
    Dim answer As VbMsgBoxResult

    relativePath = ActiveWorkbook.Path

    answer = MsgBox("Are you sure you want to export worksheets?", vbYesNo, "Run Macro") '<--Pop up box to confirm export

    If answer = vbYes Then

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For Each ws In ActiveWorkbook.Worksheets

        ws.Select
        ws.Copy
        ActiveWorkbook.SaveAs Filename:= _
        relativePath & "\" & ws.Name & ".txt", _
        FileFormat:=xlText, CreateBackup:=False
        ActiveWorkbook.Close
        ActiveWorkbook.Activate
    Next
     End If

End Sub

子工作表\u to_txt()'为什么
工作表(ws.Name)。选择
而不是简单地
ws。选择
?此外--在VBA中使用
Select
几乎没有什么好的理由,尽管这是一个单独的问题。@johncolman我想我需要选择并复制工作表的名称,以便将其作为新的.text文件名引用?人需要单击工作表来处理它。VBA没有。您的select行完全不起作用
ws.Copy
有意义,即使
ws
未引用活动工作表。另外--
ws
已经是对工作表的引用--只需使用它即可。直接参考
ws
,而不是“名称与ws名称相同的工作表”。为什么选择
工作表(ws.name)。选择
而不是简单的
ws.Select
?此外--在VBA中使用
Select
几乎没有什么好的理由,尽管这是一个单独的问题。@johncolman我想我需要选择并复制工作表的名称,以便将其作为新的.text文件名引用?人需要单击工作表来处理它。VBA没有。您的select行完全不起作用
ws.Copy
有意义,即使
ws
未引用活动工作表。另外--
ws
已经是对工作表的引用--只需使用它即可。直接参考
ws
,而不是“名称与ws名称相同的工作表”。