Board logo

标题: [问题求助] vbs能不能使用vba的MsoEncoding常量 [打印本页]

作者: 普大喜奔    时间: 2014-9-20 21:06     标题: vbs能不能使用vba的MsoEncoding常量

用vbs编写代码 使用word.application的Documents.Open 方法打开word文件 其中有一个参数是Encoding,微软的文档说该参数可以是任何有效的 MsoEncoding 常量,我想把该参数设置为msoEncodingSimplifiedChineseGBK,但又不知道这个常量的数值,在vbs脚本里直接引用恐怕又不行,该如何处理呢?
作者: 普大喜奔    时间: 2014-9-20 22:03

今天星期六 问的不是时候。。。
作者: yu2n    时间: 2014-9-20 22:08

本帖最后由 yu2n 于 2014-9-20 22:14 编辑

【查询VBA常量】
1. 打开Word,按 Alt + F11 进入Word VBA。
2. 按 Ctrl + G 打开 “立即窗口” ,输入要查询的常量,然后按回车。例如:
  1. ?msoEncodingSimplifiedChineseGBK
复制代码
3. 得到返回值 936

【在VBS中使用VBA常量】
在VBS代码头部(函数头部)定义该常量,如下:
  1. Const msoEncodingSimplifiedChineseGBK = 936
复制代码

作者: 普大喜奔    时间: 2014-9-21 10:17

回复 3# yu2n
office版本不一样,是不是函数的参数也不一样啊,我这是version 12.0,对应的是word 2003 还是2010、2013?
我在微软网站上看的open参数是2013的,有可能对不上号所以报错了
作者: 普大喜奔    时间: 2014-9-21 10:52

回复 3# yu2n
  1. createobject("word.application").Documents.Open dir & "\1.doc",0,1,,,,,,,,,936,,,,,0
复制代码
结果提示错误:参数个数不正确或参数无效 文件打开了,还是有选择编码的对话框
作者: yu2n    时间: 2014-9-21 18:02

回复 5# 普大喜奔
印象中doc文件本身不区分编码,最起码用Word打开时不需要指定编码。
建议这样写。
下面的例子是读出 D:\1.doc 的文档内容:
  1. Set objWord = Word_Init()
  2. Set objDoc = objWord.Documents.Open("D:\1.doc")
  3. strContent = objDoc.Content
  4. objDoc.Close False
  5. objWord.Quit
  6. Msgbox "Word 的内容是:" & strContent
复制代码
objWord 对象可以这样创建:
  1. ' 创建 Word 对象
  2. Function Word_Init()
  3.   Const msoAutomationSecurityForceDisable = 3
  4.   Set objWord = CreateObject("Word.Application")
  5.   If Not Err.Number = 0 Then
  6.     Msgbox "错误:无法创建 Word 对象,你可能没有安装 Office 。"
  7.     WScript.Quit(999)
  8.   End If
  9.   If Not objWord.Application.Version >= 12.0 Then
  10.     Msgbox "警告:请使用 Office 2007 以上版本。"
  11.   End If
  12.   ' 隐藏运行,屏蔽提示
  13.   objWord.Visible = False
  14.   objWord.DisplayAlerts = False
  15.   ' 禁用以编程方式打开的所有文件中的所有宏,而不显示任何安全警告。
  16.   ' VBA打开文件时(临时)禁用宏
  17.   ' http://club.excelhome.net/thread-1001802-1-1.html
  18.   objWord.AutomationSecurity = msoAutomationSecurityForceDisable
  19.   Set Word_Init = objWord
  20. End Function
复制代码

作者: 普大喜奔    时间: 2014-9-22 01:23

回复 6# yu2n
是我搞错了 我把文件转换器和编码搞混了 以为用参数指定编码可以避免打开那个选择编码的窗口 文件转换器是没法屏蔽的好像
作者: yu2n    时间: 2014-9-23 18:40

回复 7# 普大喜奔

在 Word 中打开 Doc 文档,应该是不会出现选择编码窗口的。

除非你打开的是其他类型的文件,比如文本(txt/vbs/log/bat)文件。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2