Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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
Excel 如何在VBA条件下保存.txt中的列_Excel_Vba - Fatal编程技术网

Excel 如何在VBA条件下保存.txt中的列

Excel 如何在VBA条件下保存.txt中的列,excel,vba,Excel,Vba,我是VBA的初学者,我想知道我的代码哪里出了问题 Sub Worksheet_Calculate() Application.EnableEvents = False If code End If Application.EnableEvents = True: If Range("A3") <> Range("B4") Then Columns("B1:F1000

我是VBA的初学者,我想知道我的代码哪里出了问题

Sub Worksheet_Calculate()
        Application.EnableEvents = False
        If 
         code
        End If

        Application.EnableEvents = True:
        If Range("A3") <> Range("B4") Then
         Columns("B1:F10000").Select
         ChDir "C:\Users\Francesco\Desktop"
         ActiveWorkbook.SaveAs:="C:\Users\Francesco\Desktop\TXT.txt", _
         FileFormat:=xlTextMSDOS, CreateBackup:=False
        End If            
    End Sub
子工作表_计算()
Application.EnableEvents=False
如果
代码
如果结束
Application.EnableEvents=True:
如果范围(“A3”)范围(“B4”),则
列(“B1:F10000”)。选择
ChDir“C:\Users\Francesco\Desktop”
ActiveWorkbook.SaveAs:=“C:\Users\Francesco\Desktop\TXT.TXT”_
FileFormat:=xlTextMSDOS,CreateBackup:=False
如果结束
端接头
我的重点是:当条件
如果Range(“A3”)Range(“B4”)
为真时,我希望vba创建一个.txt

我哪里错了

提前谢谢。

试试这个:

Sub Worksheet_Calculate()

        If Range("A3") <> Range("B4") Then

            ActiveSheet.Range("B1:F10000").Select
            ActiveWorkbook.SaveAs "C:\Users\Francesco\Desktop\TXT.txt", FileFormat:=xlTextMSDOS, CreateBackup:=False

        End If

End Sub
子工作表_计算()
如果范围(“A3”)范围(“B4”),则
ActiveSheet.Range(“B1:F10000”)。选择
ActiveWorkbook.SaveAs“C:\Users\Francesco\Desktop\TXT.TXT”,文件格式:=xlTextMSDOS,CreateBackup:=False
如果结束
端接头
根据您的代码,您正在保存整个工作表。因此,我看不到选择列的任何意义。

将wb作为工作簿,wb1作为工作簿
Dim wb as workbook, wb1 as workbook
set wb = activeworkbook
set wb1 = application.workbooks.new

If Range("A3") <> Range("B4") Then
     wb.activate
     Columns("B1:F10000").copy
     wb1.activate
     range("A1").paste
     ChDir "C:\Users\Francesco\Desktop"
     wb1.SaveAs:="C:\Users\Francesco\Desktop\TXT.txt", FileFormat:=xlTextMSDOS, CreateBackup:=False
     call wb1.close(false)
End If            
设置wb=activeworkbook 设置wb1=application.workbooks.new 如果范围(“A3”)范围(“B4”),则 wb.activate 列(“B1:F10000”)。副本 wb1.1激活 范围(“A1”)。粘贴 ChDir“C:\Users\Francesco\Desktop” wb1.SaveAs:=“C:\Users\Francesco\Desktop\TXT.TXT”,文件格式:=xlTextMSDOS,CreateBackup:=False 调用wb1.close(错误) 如果结束
未测试。

试试这个

Function SimpleWriteToText(ByVal FileName, ByVal strText, Optional Wtype = "output")
If Wtype = "output" Then
    Open FileName For Output As #1
Else
    Open FileName For Append As #1
End If
        Print #1, strText;
    Close #1
End Function
用法


如果您只想将一列中的文本保存为txt文件,更简单的方法是将该列复制到新文件,然后将该文件保存为txt文件。谢谢您的回答。我将编写并测试您的代码。非常感谢您,它正在工作!!!:)我有个问题。为什么文件太大(列为5,行为10.000)?如何以轻松的方式保存它?这是因为您保存的是整个工作表,而不是所选的列。一种方法是将这些列复制并粘贴到新工作簿上,然后将该工作簿另存为文本文件。好的,非常感谢你的回答。我要这么做。@Francesco。。。如果它对你有用,就接受它作为答案。对于任何其他正在寻找答案的用户,请参见。谢谢您的答案。谢谢您的答案。
SimpleWriteToText ThisWorkbook.path & "\Text.txt", "Hello"  ' Append
SimpleWriteToText ThisWorkbook.path & "\Text.txt", "Hello", "output"  ' NewOne