Excel VBA导出到没有引号的txt文件

时间:2014-07-04 13:32:42

标签: vba excel-vba excel

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

导出此

创建bts; sitemask =" 0110&#34 ;; pcmlink = 40

像这样的出口

"创建bts; sitemask ="" 0110"&#34 ;; 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用于导出而不是当前选择?< / p>

还可以修改文件路径以保存在与活动excel表相同的目录中,而不必放入完整的文件路径&#34; C:\ MyOutput.txt&#34;相反&#34; MyOutput.txt&#34; (或类似的东西)?

非常感谢

5 个答案:

答案 0 :(得分:1)

请勿直接打开它:

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

答案 1 :(得分:1)

修改将非常明显:假设您的工作簿已命名为&#34; ThisWorbook.xls&#34;,并且包含您要写入文件的范围的工作表名为&#34;此工作表&#34 ;然后你将像

一样调整代码
' ... 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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

从我在VBA 2010中看到的情况来看,Write函数使用不需要的包装引号字符创建输出。

但是,类似的Print函数会在没有引号的情况下写入文件。

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

输出: 创建bts; sitemask =“0110”; pcmlink = 40

代码为:

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

答案 4 :(得分:0)

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

  

fso.CreateTextFile(path,True, False