【问题标题】:Excel VBA Export to txt file without Quotation marksExcel VBA 导出到不带引号的 txt 文件
【发布时间】:2017-05-30 03:44:48
【问题描述】:

我需要导出到没有“标记示例”的文本文件

导出这个

创建 bts;站点掩码 = "0110"; pcmlink = 40

像这样导出

"创建 bts;sitemask = ""0110""; pcmlink = 40"

我找到的用于执行此操作的代码有效并去除了“标记”

Sub Export()
Dim r As Range, c As Range
Dim sTemp As String

Open "c:\MyOutput.txt" For Output As #1
For Each r In Selection.Rows
    sTemp = ""
    For Each c In r.Cells
        sTemp = sTemp & c.Text & Chr(9)
    Next c

    'Get rid of trailing tabs
    While Right(sTemp, 1) = Chr(9)
        sTemp = Left(sTemp, Len(sTemp) - 1)
    Wend
    Print #1, sTemp
Next r
Close #1
End Sub

此代码的工作原理是选择运行导出当前选定单元格的代码的单元格,我的问题是如何修改此代码以在预定义的单元格范围上工作,例如 A1 到 A10 用于导出而不是当前选择?

还可以修改文件路径以保存在与活动 excel 表相同的目录中,而不必将完整的文件路径“C:\MyOutput.txt”而不是“MyOutput.txt”(或类似那个)?

非常感谢

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    修改将非常明显:假设您的工作簿名为“ThisWorbook.xls”,并且包含您要写入文件的范围的工作表名为“This Worksheet”,那么您将修改代码,如

    ' ... Previous original code
    
    ' Open file in the same folder as the worksheet
    Open Workbooks("ThisWorbook.xls").Path & "\MyOutput.txt" For Output As #1
    
    ' Loop in predefined range instead of current selection
    For Each r In Worksheets("This Worksheet").Range("A1:A10").Rows
    
    ' ... Following original code
    

    【讨论】:

    • 这些更改非常适合我给定的代码,谢谢
    • @Windmill 很高兴能帮上忙。
    【解决方案2】:

    不要直接打开:

    Sub Export()
     Dim r As Range, c As Range
     Dim sTemp As String
     Dim fn As Long
     Dim sfilename
    
     sfilename = "C:\MyOutput.txt"
     fn = FreeFile
    
     Open sfilename For Output As #fn
      For Each r In Selection.Rows
        sTemp = ""
        For Each c In r.Cells
            sTemp = sTemp & c.Text & Chr(9)
        Next c
    
        'Get rid of trailing tabs
        While Right(sTemp, 1) = Chr(9)
            sTemp = Left(sTemp, Len(sTemp) - 1)
        Wend
        Print #fn, sTemp
     Next r
     Close #fn
    End Sub
    

    【讨论】:

    • 那么我应该把我的excel当前目录的路径放在哪里?我还应该把我的单元格范围放在代码中的什么位置?
    • 需要更好地解释这个答案
    • "C:\MyOutput.txt" 这是用于保存文件的完整文件路径,我想将其保存在“.\MyOutput.txt”与我正在执行的 Excel 工作表相同的目录中出口。此外,此代码通过选择运行代码的单元格来工作,它会导出您选择的内容,我不想这样做我想放置一个预定义的单元格范围
    【解决方案3】:

    您有一个 excel 文件,当您将文件另存为 .txt 时,会出现引号。标记数据(CTRL + A),将数据复制到剪贴板(CTRL + C)。 打开记事本,粘贴数据(CTRL + V)保存数据... 在那里,没有引号的数据。

    【讨论】:

      【解决方案4】:

      根据我在 VBA 2010 中看到的情况,Wri​​te 函数使用不需要的换行引号字符创建输出。

      但是类似的 Print 函数写入文件时不带引号。

      但如果你想在文本文件中添加引号,你可以在引号位置创建一个字符串连接,以将它们添加到 Chr(39) 中,例如。

      对于输出: 创建 bts;站点掩码 = "0110"; pcmlink = 40

      代码为:

      "Create bts; sitemask = " & Chr(39) & "0110" & Chr(39) & "; pcmlink = 40"
      

      【讨论】:

        【解决方案5】:

        将文件保存为 ASCII 文件而不是 unicode

        fso.CreateTextFile(path, True, False)

        【讨论】:

        • 你应该解释一下 fso 是什么,因为 OP 不使用 FileSystemObject 来创建他们的文本文件
        猜你喜欢
        • 2016-10-13
        • 1970-01-01
        • 2013-01-17
        • 1970-01-01
        • 1970-01-01
        • 2017-11-09
        • 2013-11-11
        • 1970-01-01
        • 2017-08-16
        相关资源
        最近更新 更多