找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21653|回复: 7

[问题求助] vbs能不能使用vba的MsoEncoding常量

[复制链接]
发表于 2014-9-20 21:06:04 | 显示全部楼层 |阅读模式
用vbs编写代码 使用word.application的Documents.Open 方法打开word文件 其中有一个参数是Encoding,微软的文档说该参数可以是任何有效的 MsoEncoding 常量,我想把该参数设置为msoEncodingSimplifiedChineseGBK,但又不知道这个常量的数值,在vbs脚本里直接引用恐怕又不行,该如何处理呢?
 楼主| 发表于 2014-9-20 22:03:24 | 显示全部楼层
今天星期六 问的不是时候。。。
发表于 2014-9-20 22:08:26 | 显示全部楼层
本帖最后由 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
复制代码

评分

参与人数 1技术 +1 收起 理由
普大喜奔 + 1 厉害

查看全部评分

 楼主| 发表于 2014-9-21 10:17:57 | 显示全部楼层
回复 3# yu2n
office版本不一样,是不是函数的参数也不一样啊,我这是version 12.0,对应的是word 2003 还是2010、2013?
我在微软网站上看的open参数是2013的,有可能对不上号所以报错了
 楼主| 发表于 2014-9-21 10:52:55 | 显示全部楼层
回复 3# yu2n
  1. createobject("word.application").Documents.Open dir & "\1.doc",0,1,,,,,,,,,936,,,,,0
复制代码
结果提示错误:参数个数不正确或参数无效 文件打开了,还是有选择编码的对话框
发表于 2014-9-21 18:02:42 | 显示全部楼层
回复 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:21 | 显示全部楼层
回复 6# yu2n
是我搞错了 我把文件转换器和编码搞混了 以为用参数指定编码可以避免打开那个选择编码的窗口 文件转换器是没法屏蔽的好像
发表于 2014-9-23 18:40:38 | 显示全部楼层
回复 7# 普大喜奔

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

除非你打开的是其他类型的文件,比如文本(txt/vbs/log/bat)文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 13:11 , Processed in 0.016674 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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