ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11033|回复: 9

想把WORD文件转换至记事本,如何保持格式整齐?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-4-12 12:56 | 显示全部楼层 |阅读模式

KjJVAe2J.rar (12.73 KB, 下载次数: 27)

[em06]附件是一个表格,我将其转换成文字,然后放至记事本,可这样一来全乱了,如何才能够保持整齐的格式呢?

TA的精华主题

TA的得分主题

发表于 2005-4-12 18:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

这个东西非常麻烦,偶的做法是加入或删除空格组(记住,从前一虚拟单元格的尾部加入或删除比较省事)。

5tnFXmqL.txt (798 Bytes, 下载次数: 44)

TA的精华主题

TA的得分主题

发表于 2005-4-12 18:25 | 显示全部楼层
对了,下载后用记事本打开才正常,直接在网页上看仍然不整齐。

TA的精华主题

TA的得分主题

发表于 2005-4-13 05:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

已同楼主沟通过,使用以下方法更好:

以下代码供参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-4-13 5:26:26 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit '此程序的作用为指定单元格中文本的相同长度,不足处以空格填充. '在本程序中,设定的第一列的文本长度为8个字符长度,第二列的文本 '长度为18个字符长度.请根据实际情况,略作修改,以确保有效对齐文本 '可以更改或者指定文本文件的文件夹位置,或者通过代码,或者可以通过 '修改WORD/工具/选项/文件夹位置/文档文件夹位置实现 Sub SaveAsTxt() Dim Mystring As String, MyDoc As Document, txtFileName As String Dim aCell As Cell, A As String, B As String, C As String On Error Resume Next '忽略错误 Application.ScreenUpdating = False '关闭屏幕更新 With ThisDocument '本文档 '取得第一个段落的文本(可作为文件名使用) txtFileName = .Range(.Paragraphs(1).Range.Start, .Paragraphs(1).Range.End - 1) For Each aCell In .Tables(1).Columns(2).Cells '在第二列的单元格循环 '定义一个文本型变量,其值为前一个单元格中的文本 A = .Range(aCell.Previous.Range.Start, aCell.Previous.Range.End - 1) '定义该文本型变量为8个字符长度,不足处以空格填充 A = A & VBA.Space(8 - Len(A)) '定义一个文本型变量,其值为前一个单元格中的文本 B = .Range(aCell.Range.Start, aCell.Range.End - 1) '定义该文本型变量为18个字符长度,不足处以空格填充 B = B & VBA.Space(18 - Len(B)) '定义一个文本型变量,其值为前一个单元格中的文本 C = .Range(aCell.Next.Range.Start, aCell.Next.Range.End - 1) '在内存中累加文本并加入段落标记 Mystring = Mystring & A & B & C & Chr(13) Next End With '定义一个新建空白文档 Set MyDoc = Documents.Add With MyDoc '在正文起点处插入文本变量mystring .Range(0, 0).InsertAfter Mystring '在正文起点处插入源文档的第一个段落文本 .Range(0, 0).InsertAfter txtFileName & Chr(13) '全部更正为全角符号,以利对齐 .Content.CharacterWidth = wdWidthFullWidth '防止文件名出错,终止错误处理 '当出现出错对话框后,您可以将新建的WORD文档另存为一个纯文本文件 Application.ScreenUpdating = True '恢复屏幕更新 On Error GoTo 0 '另存为纯文本文件,如果需要修改文件夹位置,可在此处指定 '默认情况下,为WORD/工具/选项/文件夹位置/文档中指定的文件夹路径 .SaveAs FileName:=txtFileName, FileFormat:=wdFormatText MsgBox "此文本文件的全文件名为" & .FullName, vbOKOnly + vbInformation .Close '关闭该文档 End With End Sub '----------------------

请运行该文档的最右侧菜单命令(SAVEASTXT) EEZj7AN5.rar (20.56 KB, 下载次数: 38)

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-13 10:35 | 显示全部楼层

OH, [em02]You are great fantastic! hehe

对了,我的程序却不能读入这个文件,总是提示说有"输入字段"???

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-13 12:11 | 显示全部楼层

呵呵,我是想通过文本来转换我的文件,在发这个主题的时候,想着只要在记事本里整齐了,我的程序就可以直接调用了,没想到大侠们的聪明智慧,真是让我目不暇接呀!居然在记事本里也能作出不一样的文章出来。晕。。。

这下好了,原本我的程序可以读入文本文件的,这下让我知道了,还有不能读入的(程序能读的文本文件不能含有TAB健,也不能含有全角字符)

继续期待解决结果。。。

TA的精华主题

TA的得分主题

发表于 2005-4-13 12:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

都是全角忍的祸!

重新调整了一下思路,请看附件:

以下代码供参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-4-13 12:38:17 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit '此程序的作用为指定单元格中文本的相同长度,不足处以空格填充. '在本程序中,设定的第一列的文本长度为8个字符长度,第二列的文本 '长度为36个字符长度.请根据实际情况,略作修改,以确保有效对齐文本 '可以更改或者指定文本文件的文件夹位置,或者通过代码,或者可以通过 '修改WORD/工具/选项/文件夹位置/文档文件夹位置实现 Sub SaveAsTxt() Dim Mystring As String, txtFileName As String, MyDoc As Document Dim aCell As Cell, A As Range, B As Range, C As String, HzCount As Integer Dim aChar As Range, D As String, E As String Application.ScreenUpdating = False '关闭屏幕更新 With ThisDocument '本文档 '取得第一个段落的文本(可作为文件名使用) txtFileName = .Range(.Paragraphs(1).Range.Start, .Paragraphs(1).Range.End - 1) For Each aCell In .Tables(1).Columns(2).Cells '在第二列的单元格循环 '定义一个RANGE对象 Set A = .Range(aCell.Previous.Range.Start, aCell.Previous.Range.End - 1) HzCount = 0 For Each aChar In A.Characters '统计中文字符数 If Asc(aChar) < 0 Then HzCount = HzCount + 1 Next '定义该文本型变量为8个字符长度,不足处以空格填充 D = A & VBA.Space(8 - (Len(A.Text) - HzCount) - HzCount * 2) '定义一个RANGE对象 Set B = .Range(aCell.Range.Start, aCell.Range.End - 1) HzCount = 0 For Each aChar In B.Characters If Asc(aChar) < 0 Then HzCount = HzCount + 1 Next '定义该文本型变量为36个字符长度,不足处以空格填充 E = B & VBA.Space(36 - (Len(B.Text) - HzCount) - HzCount * 2) '定义一个文本型变量,其值为下一个单元格中的文本 C = .Range(aCell.Next.Range.Start, aCell.Next.Range.End - 1).Text '在内存中累加文本并加入段落标记 Mystring = Mystring & D & E & C & Chr(13) Next End With Set MyDoc = Documents.Add With MyDoc '在正文起点处插入文本变量mystring .Range(0, 0).InsertAfter Mystring '在正文起点处插入源文档的第一个段落文本 .Range(0, 0).InsertAfter txtFileName & Chr(13) .Content.Font.Name = "宋体" '设置字体格式 .Content.Font.Size = 12 '设置字号 '全部更正为全角符号,以利对齐 '防止文件名出错,终止错误处理 '当出现出错对话框后,您可以将新建的WORD文档另存为一个纯文本文件 Application.ScreenUpdating = True '恢复屏幕更新 On Error GoTo 0 '另存为纯文本文件,如果需要修改文件夹位置,可在此处指定 '默认情况下,为WORD/工具/选项/文件夹位置/文档中指定的文件夹路径 .SaveAs FileName:=txtFileName, FileFormat:=wdFormatText MsgBox "此文本文件的全文件名为" & .FullName, vbOKOnly + vbInformation .Close '关闭该文档 End With End Sub '----------------------

注意:您的记事本的格式请调整后宋体,12号,以后就是默认的这个格式了。好了,不多说了,做着看吧! zF08nhYB.zip (23.31 KB, 下载次数: 30)

TA的精华主题

TA的得分主题

发表于 2005-4-13 13:44 | 显示全部楼层

记事本格式设置同上。

cpO4GC2i.zip (24.43 KB, 下载次数: 49)

以下代码供参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-4-13 13:41:24 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit '此程序的作用为指定单元格中文本的相同长度,不足处以空格填充. '在本程序中,设定的第一列的文本长度为8个字符长度,第二列的文本 '长度为36个字符长度.请根据实际情况,略作修改,以确保有效对齐文本 Sub SaveAsTxt() Dim FSO As Object, MyTxt As Object, txtPath As String, txtFileName As String Dim aCell As Cell, A As Range, B As Range, C As String, HzCount As Integer Dim aChar As Range, D As String, E As String On Error GoTo ErrHandle '错误处理 With ThisDocument '本文档 '取得第一个段落的文本(作为文件名使用) txtFileName = .Range(.Paragraphs(1).Range.Start, .Paragraphs(1).Range.End - 1) Set FSO = CreateObject("Scripting.FileSystemObject") txtPath = "E:\" '此处指定文件夹位置 Set MyTxt = FSO.CreateTextFile(txtPath & txtFileName & ".Txt", True) MyTxt.WriteLine txtFileName '写入第一段内容 For Each aCell In .Tables(1).Columns(2).Cells '在第二列的单元格循环 '定义一个RANGE对象 Set A = .Range(aCell.Previous.Range.Start, aCell.Previous.Range.End - 1) HzCount = 0 For Each aChar In A.Characters '统计中文字符数 If Asc(aChar) < 0 Then HzCount = HzCount + 1 Next '定义该文本型变量为8个字符长度,不足处以空格填充 D = A & VBA.Space(8 - (Len(A.Text) - HzCount) - HzCount * 2) '定义一个RANGE对象 Set B = .Range(aCell.Range.Start, aCell.Range.End - 1) HzCount = 0 For Each aChar In B.Characters If Asc(aChar) < 0 Then HzCount = HzCount + 1 Next '定义该文本型变量为36个字符长度,不足处以空格填充 E = B & VBA.Space(36 - (Len(B.Text) - HzCount) - HzCount * 2) '定义一个文本型变量,其值为下一个单元格中的文本 C = .Range(aCell.Next.Range.Start, aCell.Next.Range.End - 1).Text MyTxt.WriteLine D & E & C '写入文本文件 Next MyTxt.Close '关闭文本文件 End With MsgBox "该文本文件的全路径名为" & txtPath & txtFileName & ".Txt", vbOKOnly + vbInformation Exit Sub '退出程序 ErrHandle: '错误处理 MsgBox "非法文件名或者单元格字符数超过指定长度!", vbOKOnly + vbExclamation, "Warnning" End Sub '----------------------

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-13 13:47 | 显示全部楼层

呵呵,立马测了几个,效果真好!OK啦!

现在我的程序文件长得可是整齐,好看多了!

HAHA!

再一次感谢守柔,您辛苦了!

TA的精华主题

TA的得分主题

发表于 2009-6-16 15:05 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 22:51 , Processed in 0.043177 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表