Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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文件_Vba_Excel - Fatal编程技术网

Excel VBA导出为不带引号的txt文件

Excel VBA导出为不带引号的txt文件,vba,excel,Vba,Excel,我需要导出一个没有“标记”的文本文件 出口这个 创建基站;sitemask=“0110”;pcmlink=40 像这样的出口 “创建基站;网站掩码=“0110”;pcmlink=40“ 我找到的这段代码很有效,去掉了“标记” 此代码通过选择运行导出当前选定单元格的代码的单元格来工作,我的问题是如何修改此代码以在预定义的单元格范围(例如A1到A10)上工作,以便导出而不是当前选择 另外,是否可以修改文件路径以保存在与active excel工作表相同的目录中,而不必将完整的文件路径“C:\MyOu

我需要导出一个没有“标记”的文本文件

出口这个

创建基站;sitemask=“0110”;pcmlink=40

像这样的出口

“创建基站;网站掩码=“0110”;pcmlink=40“

我找到的这段代码很有效,去掉了“标记”

此代码通过选择运行导出当前选定单元格的代码的单元格来工作,我的问题是如何修改此代码以在预定义的单元格范围(例如A1到A10)上工作,以便导出而不是当前选择

另外,是否可以修改文件路径以保存在与active excel工作表相同的目录中,而不必将完整的文件路径“C:\MyOutput.txt”改为“MyOutput.txt”(或类似的内容)


非常感谢

不要直接打开它:

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

不要直接打开它:

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

修改是非常明显的:假设您的工作簿名为“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

修改是非常明显的:假设您的工作簿名为“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

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

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

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

但是,类似的打印函数写入文件时不带引号

但是,如果您希望在文本文件中使用引号,可以在引号位置创建一个字符串连接,以便使用Chr(39)将它们添加到文本文件中,例如

对于以下输出: 创建基站;sitemask=“0110”;pcmlink=40

代码为:

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

从我在VBA2010中看到的情况来看,Write函数使用不需要的换行引号字符创建输出

但是,类似的打印函数写入文件时不带引号

但是,如果您希望在文本文件中使用引号,可以在引号位置创建一个字符串连接,以便使用Chr(39)将它们添加到文本文件中,例如

对于以下输出: 创建基站;sitemask=“0110”;pcmlink=40

代码为:

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

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

fso.CreateTextFile(路径,True,False


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

fso.CreateTextFile(路径,True,False


那么,我应该将excel当前目录的路径放在哪里呢?还有,我应该把我的单元格范围放在代码中的什么地方?需要更好地解释这个答案“C:\MyOutput.txt”这是保存文件的完整文件路径,我想将它保存在“.\MyOutput.txt”中,该目录与正在进行导出的excel工作表的目录相同。此外,此代码通过选择运行代码的单元格来工作,并导出您所选择的内容。我不想这样做,我想将预定义的单元格范围放置在excel当前目录的路径中的什么位置?还有,我应该把我的单元格范围放在代码中的什么地方?需要更好地解释这个答案“C:\MyOutput.txt”这是保存文件的完整文件路径,我想将它保存在“.\MyOutput.txt”中,该目录与正在进行导出的excel工作表的目录相同。此外,此代码通过选择运行代码的单元格来工作,并导出您所选择的内容,我不想这样做,我想设置预定义的单元格范围这些更改非常适合我的给定代码,thankyou@Windmill我很高兴我能帮上忙。这些更改对我给定的代码非常有效, thankyou@Windmill我很高兴能提供帮助。您应该解释什么是
fso
,因为OP不使用FileSystemObject创建文本文件。您应该解释什么是
fso
,因为OP不使用FileSystemObject创建文本文件