ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]在VB中怎样将处理了的*.TXT文件另存为*.DOC文件?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-8-4 13:54 | 显示全部楼层 |阅读模式

不好意思,与本坛有点不符,但在专门的VB中也得不到解决。到此会有好运。

为在VB中操作WORD,先作适当引用(略),再:

Dim wdApp As Word.Application
Dim aDoc As Document
Set wdApp = New Word.Application

 '打开窗体上TextBox中的文本(此文本是一个文本文件)
Set aDoc = wdApp.Documents.Open(Filename:=Form1.Filename.Text)
wdApp.Visible = True       '设置Word对象可见

……      '省略的是主程序,多为文本替换代码

'用下列语句可将文件存在原文件目录下:
aDoc.SaveAs aDoc.Path & "\" & aDoc.Name & ".doc"   '将文档另存为
aDoc.Close      '关闭文档
wdApp.Quit      '结束Word对象
Set aDoc = Nothing
Set wdApp = Nothing     '释放Word对象

但仍有2个问题:
1.若源文件是文本文件,存的*.DOC还是文本文件格式,怎样让其成为真正的WORD文档格式:
2.所存文件名不合要求,如源文件为:ABC.TXT,存的结果为:ABC.TXT.DOC,而我希望为ABC.DOC(即只取源文件的主名+.DOC)

TA的精华主题

TA的得分主题

发表于 2006-8-4 16:11 | 显示全部楼层

先试一下这个再说:

 With aDoc
        .SaveAs .Path & "\" & .ActiveWindow.Caption & ".doc"    
        .Close      
        Set aDoc = Nothing
    End With

TA的精华主题

TA的得分主题

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

非常谢谢守柔大侠!

我刚试了一下,好像和1楼的是等效的。

我看VBA帮助文件后将1楼的一句改为:

aDoc.SaveAs aDoc.Path & "\" & aDoc.Name & ".doc", FileFormat:=wdFormatDocument '文件另存为DOC
1楼所说的第1个问题(即文件格式)解决了,但第2个问题依旧。

TA的精华主题

TA的得分主题

发表于 2006-8-4 16:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

ssq1109兄利用mid+len函数不行吗?

aDoc.SaveAs aDoc.Path & "\" & mid(aDoc.Name,1,len(adoc.name)-4)) & ".doc", FileFormat:=wdFormatDocument

????

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-4 19:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

谢谢孔版主!

这个方法我也想过,因程序要读方正早期的一种无扩展名的文本文件,用此法就不行了。

我想了一下,第2个问题解决不了也无大碍。只是看着有点别扭。

TA的精华主题

TA的得分主题

发表于 2006-8-4 20:18 | 显示全部楼层

ssq1109兄。不能用if吗?

判断最后四个字符是否是.txt是的话去掉;否则,留着。不行吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-4 23:10 | 显示全部楼层
好主意,谢谢孔兄!

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-5 10:52 | 显示全部楼层

在孔兄的提示下,改写了,能PASS,但总觉2、3、4部分可合并。

If Right(aDoc.Name, 4) = ".doc" Then
  '为避免将源DOC文档覆盖,此类文件单独处理,在其主名后加"_Z.DOC"
   aDoc.SaveAs aDoc.Path & "\" & Mid(aDoc.Name, 1, Len(aDoc.Name) - 4) & "_Z.DOC", FileFormat:=wdFormatDocument

ElseIf Right(aDoc.Name, 4) = ".fbd" Then
   aDoc.SaveAs aDoc.Path & "\" & Mid(aDoc.Name, 1, Len(aDoc.Name) - 4) & ".DOC", FileFormat:=wdFormatDocument

ElseIf Right(aDoc.Name, 4) = ".txt" Then
   aDoc.SaveAs aDoc.Path & "\" & Mid(aDoc.Name, 1, Len(aDoc.Name) - 4) & ".DOC", FileFormat:=wdFormatDocument

ElseIf Right(aDoc.Name, 4) = ".rtf" Then
   aDoc.SaveAs aDoc.Path & "\" & Mid(aDoc.Name, 1, Len(aDoc.Name) - 4) & ".DOC", FileFormat:=wdFormatDocument

Else
   aDoc.SaveAs aDoc.Path & "\" & aDoc.Name & ".DOC", FileFormat:=wdFormatDocument
    
End If

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-5 14:31 | 显示全部楼层

8楼的代码看似可以,实际还可能有2个问题,望各位老大斧正。

1.如果和文件的扩展名都为小写字母,则无问题,但为大写字母或大小定混用就惨了。

2.第2、3、4部分似乎重复,应可合并,对吗?

TA的精华主题

TA的得分主题

发表于 2006-8-5 15:37 | 显示全部楼层

1.用Option compare Text

例如:

Option Explicit
Option Compare Text
Sub aaa3()
Dim a, b
a = ".txt": b = ".TXT"
If a = b Then
    MsgBox "="
End If
End Sub

2.为什么不用or?

ifelse Right(aDoc.Name, 4) = ".fbd"  or Right(aDoc.Name, 4) = ".txt" or Right(aDoc.Name, 4) = ".rtf" then

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 21:00 , Processed in 0.046167 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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