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