如何用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的位置上都有一对"" 令我非常郁闷
请问有什么别的命令么..
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
如何在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表里指定内容转成文本一键自动发到指定的微信群上?求帮忙!
如何用VBA将EXCEL中的若干的数据导入不同的word文档