如何用VBA将excel表导出成文本类型的文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用VBA将excel表导出成文本类型的文件?相关的知识,希望对你有一定的参考价值。

其实就是想用VBA把一个sheets里的内容 导出到一个叫 dataout.json的文件里(这个文件实际上就是一个txt文件改了下扩展名)
我用以下的语句
ActiveWorkbook.SaveAs Filename:="D:\doc\dataout.json", FileFormat:=xlText, CreateBackup:=False
结果导出的文件中 原先每个cell的位置上都有一对"" 令我非常郁闷
请问有什么别的命令么..

保存CSV格式,没有""符号。
ActiveWorkbook.SaveAs Filename:="D:\doc\dataout.json", FileFormat:=xlCSV, CreateBackup:=False追问

xlcsv的话又全都变成 , 了 我需要的是原先是什么样 现在就什么样 谢谢了

追答

你如果不用“,”号,那你怎么区分单元格?你数据只有一列吗?

追问

原先的文件如上图
导出文本文档后希望如下
所以希望没有逗号
"ornament":

"ornament1":

"name":"ornament1" ,
"ID":1 ,
"build_exp":10 ,
"build_gold":5 ,
"level_require":"lv1" ,
"horror":20
,

追答

那你还不如用代码从单元格直接读出数据,然后写入txt文件。

追问

可具体怎么做呢...

追答

Sub daochu()
Dim iStartCol As Integer
Dim iStartRow As Integer
Dim iMaxCol As Integer
Dim iMaxRow As Integer
Dim str1 As String

iStartRow = ActiveSheet.UsedRange.Row
iMaxRow = ActiveSheet.UsedRange.Rows.Count + iStartRow - 1

iStartCol = ActiveSheet.UsedRange.Column
iMaxCol = ActiveSheet.UsedRange.Columns.Count + iStartCol - 1

Open "D:\dataout.json" For Output As #1
For i = iStartRow To iMaxRow
For j = iStartCol To iMaxCol
str1 = str1 & Cells(i, j)
Next j
Print #1, str1
Next i
Close #1
End Sub

参考技术A 不想编程的话,干脆等导出文本文件之后,再全局替换一下,把""替换掉,呵呵。

如何在Excel表格中将系统导出的部门的代码,用公式或者vba转换成文字?

我们公司的部门在系统中是由代码体现的,现在把它倒出来还是代码。要知道是哪个部门只能通过部门代码表一个个的更改,很麻烦。可不可以利用一个公式或者vba代码将所有的部门和它的代码存到公式或者vba数据里面,使用的时候一拖就行了。(公司系统导出来的代码串是文本格式的,所以需要公式和vba能识别文本格式下的单元格数字串)(比如001是销售部,那么001002、001094、001155这类型的都是指销售部)

参考技术A SHEET2工作表中的A2单元格只要写入代码,B2单元格写入公式=VLOOKUP(A2,SHEET1!A:B,2,)

回车,就能得出要的内容了。

如果A列还有其他的条件码要转换,只要下拉复制公式就行了。

如果只想保留这个B列的内容----选中B列----右键-----复制-----再右键-----选择性粘贴----数值---确定后再删去A列----这样新的A列就是要的内容了。
参考技术B 当然可以,用Vlookup()即可完成。
假设sheet1表中A2及以下是导出的代码,B2及以下是部门名称,而表的的H,l两列是部门的代码名称对照表。
在sheet1的B2输入公式Vlookup(left(a2,3),$H$2:$l$21,2)
向下填充公式即可。追问

就是没有电子版的代码对照表。我们老板只给了我一份纸质档的。就这一点很讨厌。

追答

把它录入到表中就是

部门的代码,不会很多。

参考技术C Sub 公式变文本()
Dim endrow, endrow2
endrow = Sheet1.Range("C65536").End(xlUp).Row - 2
endrow2 = endrow - 30

Sheet1.Range("H" & endrow2 & ":H" & endrow).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheet1.Range("A" & endrow + 3).Select

End Sub

Sub 公式变文本2()
Dim endrow, endrow2
endrow = Sheet1.Range("C65536").End(xlUp).Row - 2
endrow2 = endrow - 30

Sheet1.Range("R" & endrow2 & ":R" & endrow).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheet1.Range("A" & endrow + 3).Select

End Sub
参考技术D 利用通配符查找的方式你试试。例如 001* 就代表001开头后面任意长度都允许的内容。所以你只要在部门这一栏进行查找与替换就行追问

您的意思是说,在代码的那一列用替换,不管是多长的,只要开头是001都能被替换掉是吗?但是我的部门不止一两个,有二三十个部门的,我每次在系统里面导出的表也不一样。难道每次都要我去替换吗?

以上是关于如何用VBA将excel表导出成文本类型的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Excel表格中将系统导出的部门的代码,用公式或者vba转换成文字?

请问用vba在excel表里指定内容转成文本一键自动发到指定的微信群上?求帮忙!

SQLyog查询数据后如何导到excel

如何用VBA将EXCEL中的若干的数据导入不同的word文档

如何用EXCEL VBA批量提取JPG文件日期时间信息到表格中?

excel如何用vba批量提取指定工作表?