求助!!!关于将Excel每行数据导成多个txt的文本文件的问题

zhou164523R 2017-09-21 05:08:12
大致情况是这样:我将处理好的数据放在Excel的A列,想要将每一行数据导出成多个TXT文件。虽然这次数据不多,万一以后遇到大量数据需要进行该处理,就相当方便了。
网上搜到一段VB代码如下:

Sub test()
For i = 1 To Range("A65536").End(xlUp).Row
Open "D:\txt\" & Cells(i, 1).Value & ".txt" For Output As #1
Data = ""
For j = 1 To 14
Data = Data & Cells(i, j).Value & vbTab
Next
Print #1, Data
Close #1
Next
End Sub


问题出来了,生成TXT文件的时候报错‘52’:文件名或文件号错误!
查了之后发现第48行源数据,具体情况请看下图。
图一、报错信息:


图二、对应的源数据:


图三、成功导出(将第48行源数据“Z_MM478_00(​烟模产销存报表)”改成“Z_MM478_00”后成功导出全部75个TXT文件):


问题一:谁在搞不懂为啥“Z_MM478_00(​烟模产销存报表)”这里数据有什么问题;
问题二:如果要将EXCEL每行导出成多个WORD文件要怎么弄?

请好心人帮忙解答,谢谢!!!
...全文
2196 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
郴郴 2017-09-25
  • 打赏
  • 举报
回复
代码不要放在模块里 。
zhou164523R 2017-09-25
  • 打赏
  • 举报
回复
引用 6 楼 veimi 的回复:
'office 2003, VBA工具/引用中要勾选Microsoft Word 11.0 Object Library
'office 2007, VBA工具/引用中要勾选Microsoft Word 12.0 Object Library

记得要引用!!



非常感谢大大的解答和提醒,不过我复制过去后报错了:424要求对象。
我用的是office2013,勾选了microsoft word 15.0 Object Library;然后E盘根目录下也新建了“test”的文件夹,请帮忙再看下是哪里少了东西,再次感谢!!!
图1是报错信息:

图2是勾选的microsoft word 15.0 Object Library(找了一下microsoft word xxx Object Library就只有15.0)

图3是E盘新建的test文件夹





zhou164523R 2017-09-25
  • 打赏
  • 举报
回复
引用 8 楼 veimi 的回复:
代码不要放在模块里 。
非常感谢,已经完成了
zhou164523R 2017-09-22
  • 打赏
  • 举报
回复
引用 3 楼 Chen8013 的回复:
真不知道那个字符是怎么出现在单元格中的。



你可以试一下:
打开文档,双击A48进入编辑状态,这是可以看到单元格中有闪烁的光标;
如果你用鼠标点在“(”字符之前,按→键一次,可以看到光标在括号之后、烟字之前;
  但你要再按两次→键,光标才会跑到烟字之后去。
同样的,如果用鼠标点在烟字之后,按←键一次,看到光标在括号之后、烟字之前了,
  这时要再按两次←键,光标才会跑到烟括号之前去。


非常感谢大佬解决,解答得很详细了,我再次检查了下源数据,在处理之前就存在这个UTF-16编码为0x200B的字符,因为是从ERP里边导出的数据,这个问题我再从ERP里边找原因。
关于问题二,我的意思是:依然以附件中的Excel为源数据,通过VB代码批量导出成多个Word文件,有没有什么方法呢?就是要达到如下图的结果,请看图:
郴郴 2017-09-22
  • 打赏
  • 举报
回复
'office 2003, VBA工具/引用中要勾选Microsoft Word 11.0 Object Library 'office 2007, VBA工具/引用中要勾选Microsoft Word 12.0 Object Library 记得要引用!!
郴郴 2017-09-22
  • 打赏
  • 举报
回复


严格说你要的不是VB的代码,而是VBA~ VB与VBA还是有些区别。
看看是你要的结果不?



Sub test()
Dim WordApp As Word.Application '定义变量
Set WordApp = CreateObject("Word.Application") '生成WORD对象

For i = 1 To UsedRange.Rows.Count
DoEvents
WordApp.Documents.Add '新建文件
'WordApp.Selection.Paste '粘贴
fn$ = "e:\test\" & Range("A" & i) '生成文件名
WordApp.ActiveDocument.SaveAs fn$ '保存文件
Next
WordApp.Quit '退出
Set WordApp = Nothing '取消变量
MsgBox "完成"
End Sub
舉杯邀明月 2017-09-21
  • 打赏
  • 举报
回复
真不知道那个字符是怎么出现在单元格中的。 你可以试一下: 打开文档,双击A48进入编辑状态,这是可以看到单元格中有闪烁的光标; 如果你用鼠标点在“(”字符之前,按→键一次,可以看到光标在括号之后、烟字之前;   但你要再按两次→键,光标才会跑到烟字之后去。 同样的,如果用鼠标点在烟字之后,按←键一次,看到光标在括号之后、烟字之前了,   这时要再按两次←键,光标才会跑到烟括号之前去。
舉杯邀明月 2017-09-21
  • 打赏
  • 举报
回复
问题1:   你的文档中,A48单元格的文本,在“ (” 后面、“烟”字之前,有一个UTF-16编码为0x200B的字符;     这个编码,在Unicode字符表不并没有对应的字符。   在 VB6/VBA 的 Open语句中,会把文本转换成ANSI编码的字符串进行文件创建操作,     因为那个字符不存在、因此根本不可能转换成对应的ANSI字符集中的字符(即使有,也不一定能全部转换),     它就在“转换编码”之后,变成“?”这个字符了,最终被“创建”的文件名是:Z_MM478_00(?烟模产销存报表).txt   因为文件名中有一个“问号”,所以出现“文件名或文件号错误”的运行时错误了。 问题2:   没明白你究竟想怎么做…………
zhou164523R 2017-09-21
  • 打赏
  • 举报
回复
找了半天没发现可以上传附件的地方,附在百度云了,麻烦大家移步百度云下载附件,再次感谢。
源数据下载地址:链接: https://pan.baidu.com/s/1mixG8RI 密码: tu6i

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧