首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
其他开发语言
Office开发/ VBA
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
怎么在EXCEL里用VBA查阅其他文件的属性
[已结贴,结贴人:jonerthan]
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
揭帖率:
100.00%
发表于:
2008-08-20 12:45:22
楼主
在excel里,比如我要查阅c:\a\a.doc的备注属性,并修改成“定稿”,应该怎么写。
要用documents(...).BuiltInDocumentProperties(wdPropertyComments)的话, 具体的代码应该怎么写?
求教了
问题点数:
20
回复次数:
21
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baoguangya
蓝天白云
等级:
可用分等级:
长工
总技术专家分:
425
总技术专家分排名:
47514
发表于:
2008-08-20 18:52:10
1
楼 得分:
20
首先要添加对"Microsoft Word 11.0 Object Library"的引用,然后:
sub test()
Dim y As New Word.Application
y.Documents.Open "c:\a\a.doc"
MsgBox y.Documents("a.doc").BuiltinDocumentProperties("Comments").Value
y.Documents("a.doc").BuiltinDocumentProperties("Comments").Value = "定稿"
end sub
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baoguangya
蓝天白云
等级:
可用分等级:
长工
总技术专家分:
425
总技术专家分排名:
47514
发表于:
2008-08-20 18:52:15
2
楼 得分:
0
首先要添加对"Microsoft Word 11.0 Object Library"的引用,然后:
sub test()
Dim y As New Word.Application
y.Documents.Open "c:\a\a.doc"
MsgBox y.Documents("a.doc").BuiltinDocumentProperties("Comments").Value
y.Documents("a.doc").BuiltinDocumentProperties("Comments").Value = "定稿"
end sub
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-20 19:34:07
3
楼 得分:
0
非常感谢你的回答。若我要取得属性的文件是a.xls,或其他类型的文件,应该怎么定义y呢
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baoguangya
蓝天白云
等级:
可用分等级:
长工
总技术专家分:
425
总技术专家分排名:
47514
发表于:
2008-08-20 19:51:53
4
楼 得分:
0
xls文件更简单,如下:
sub test()
workbooks.Open "c:\a\a.xls"
MsgBox workbooks("a.xls").BuiltinDocumentProperties("Comments").Value
workbooks("a.xls").BuiltinDocumentProperties("Comments").Value = "定稿"
end sub
其他类型如果是PPT,TXT则同理,如果是BMP之类则没有备注属性,也就没办法获得备注属性!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-20 19:55:14
5
楼 得分:
0
1.另外你的代码是让文件处于打开状态,当我第二次取得备注信息的时候,系统提示a.doc正被使用。
2.我是想一次取得一批文件的备注信息,
比如
列 备注
c:\a\a.doc
c:\a\b.doc
c:\a\c.doc
c:\a\d.doc
我做一个循环,是不是每次都要 用y.Documents.Open ()
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-20 19:58:59
6
楼 得分:
0
3.我要的是更改 文件 →点右键 →属性→ 摘要 →备注
我运行了你的代码,属性→ 摘要 →备注里没有更改,你更改的是不是内置的属性,这个我不太懂
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baoguangya
蓝天白云
等级:
可用分等级:
长工
总技术专家分:
425
总技术专家分排名:
47514
发表于:
2008-08-20 20:09:08
7
楼 得分:
0
试试下面这个,对于能否不打开文件的情况下获得备注属性,本人才疏学浅,不知道如何实现,抱歉!
Sub Test()
Dim y As New Word.Application
Dim fs As New Scripting.FileSystemObject
Dim f As File
For Each f In fs.GetFolder("c:\a").Files
If f.Type = "Microsoft Word 文档" Then
y.Documents.Open f.Path
MsgBox y.Documents(f.Name).BuiltinDocumentProperties("Comments").Value
y.Documents(f.Name).BuiltinDocumentProperties("Comments").Value = "定稿"
y.Documents(f.Name).Close True
End If
Next
End Sub
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baoguangya
蓝天白云
等级:
可用分等级:
长工
总技术专家分:
425
总技术专家分排名:
47514
发表于:
2008-08-20 20:09:19
8
楼 得分:
0
试试下面这个,对于能否不打开文件的情况下获得备注属性,本人才疏学浅,不知道如何实现,抱歉!
下面的过程需要添加对"Microsoft Scripting Runtime"的引用。
Sub Test()
Dim y As New Word.Application
Dim fs As New Scripting.FileSystemObject
Dim f As File
For Each f In fs.GetFolder("c:\a").Files
If f.Type = "Microsoft Word 文档" Then
y.Documents.Open f.Path
MsgBox y.Documents(f.Name).BuiltinDocumentProperties("Comments").Value
y.Documents(f.Name).BuiltinDocumentProperties("Comments").Value = "定稿"
y.Documents(f.Name).Close True
End If
Next
End Sub
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baoguangya
蓝天白云
等级:
可用分等级:
长工
总技术专家分:
425
总技术专家分排名:
47514
发表于:
2008-08-20 20:09:14
9
楼 得分:
0
试试下面这个,对于能否不打开文件的情况下获得备注属性,本人才疏学浅,不知道如何实现,抱歉!
下面的过程需要添加对"Microsoft Scripting Runtime"的引用。
Sub Test()
Dim y As New Word.Application
Dim fs As New Scripting.FileSystemObject
Dim f As File
For Each f In fs.GetFolder("c:\a").Files
If f.Type = "Microsoft Word 文档" Then
y.Documents.Open f.Path
MsgBox y.Documents(f.Name).BuiltinDocumentProperties("Comments").Value
y.Documents(f.Name).BuiltinDocumentProperties("Comments").Value = "定稿"
y.Documents(f.Name).Close True
End If
Next
End Sub
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-20 20:19:48
10
楼 得分:
0
我试了用BuiltinDocumentProperties更改的是内置的属性,不是我要的点右键看到的属性。
不知道是否要用CustomDocumentProperties?
不管能不能实现我要的功能,还是向你学习了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-20 20:26:55
11
楼 得分:
0
另外我处理的文件有一定的数量,运行时每一个文件都要打开- 关闭的话,速度慢了。不知道有什么好的方法
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baoguangya
蓝天白云
等级:
可用分等级:
长工
总技术专家分:
425
总技术专家分排名:
47514
发表于:
2008-08-20 20:40:47
12
楼 得分:
0
CustomDocumentProperties指的是自定义文档属性,而备注属于BuiltinDocumentProperties。
在文件->属性->自定义里面的就是CustomDocumentProperties,摘要里面的是BuiltinDocumentProperties。
所以,我的代码应该没错。你再试一下,第一个程序之所以不成,是因为修改后没有保存!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-20 21:15:52
13
楼 得分:
0
我试了,在VBA里运行,显示属性值已更改成“定稿”,但是在文件夹里我用右键点击看属性备注一栏还是没有更改。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-20 21:26:25
14
楼 得分:
0
运行完循环之后,进程里有好几个winword.exe进程,好像是循环一次增加一次,y.Documents(a.doc).Close True 并不能关闭前面开启的进程,是个问题。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baoguangya
蓝天白云
等级:
可用分等级:
长工
总技术专家分:
425
总技术专家分排名:
47514
发表于:
2008-08-20 21:26:37
15
楼 得分:
0
为什么我的电脑上显示都更改了?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-20 21:43:53
16
楼 得分:
0
关闭后你的进程里有winword.exe吗?它怎么一直有?另外我引用的是Microsoft Word 12.0 Object Library,我用的是2007
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baoguangya
蓝天白云
等级:
可用分等级:
长工
总技术专家分:
425
总技术专家分排名:
47514
发表于:
2008-08-21 09:34:14
17
楼 得分:
0
我在自己的电脑上用2007实验了下面的程序,结果没有WINWORD.EXE进程。添加了一句 CreateObject来创建WORD.APPLICATION; 添加了一句y.quit,来退出进程。
Sub Test()
Dim y As Word.Application
Dim fs As New Scripting.FileSystemObject
Dim f As File
For Each f In fs.GetFolder("E:\Documents and Settings\Administrator\桌面\ttt").Files
If f.Type = "Microsoft Office Word 文档" Then
Set y = CreateObject("Word.Application")
y.Documents.Open f.Path
MsgBox y.Documents(f.Name).BuiltinDocumentProperties("Comments").Value
y.Documents(f.Name).BuiltinDocumentProperties("Comments").Value = "定稿"
y.Documents(f.Name).Close True
y.Quit
End If
Next
End Sub
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-21 13:37:11
18
楼 得分:
0
感谢你的热心帮助。
我又试了一下,加了y.quit后,解决了winword.exe进程重复出现的问题。
我在ttt文件夹里有1.doc 和 2.docx 两个文件,按你的代码执行后1.doc的备注没有改,而2.docx的备注改了。
再比较发现,在1.doc上点右键-属性,出现三个选项卡:常规、自定义、摘要。
在2.docx上点右键-属性,出现了两个选项卡:常规、摘要。
是不是因为这个区别,所以导致2.docx的备注修改了,而1.doc的备注没有修改。
1.doc是我在word里另存为 97-2003(*.doc)创建的。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-21 13:47:04
19
楼 得分:
0
改成 If f.Type = "Microsoft Office Word 97 - 2003 文档" Then
就可以了。
终于好了,唯一的遗憾是运行的速度太慢了,因为我的初衷是要取得一批文件的备注,做文件目录信息用的。
谢谢你了。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jonerthan
jon
等级:
可用分等级:
长工
总技术专家分:
0
总技术专家分排名:
311804
发表于:
2008-08-21 13:57:22
20
楼 得分:
0
如果是1.txt ,我应该是这样定义吗 Dim y As txt.Application
但系统提示是未定义,是要引用哪个库,还是怎么弄?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baoguangya
蓝天白云
等级:
可用分等级:
长工
总技术专家分:
425
总技术专家分排名:
47514
发表于:
2008-08-21 15:59:36
21
楼 得分:
0
不是,没有TXT.APPLICATION的。
我也不知道TEXT文件怎么解决,只能建议改为WORD文件后处理。
很抱歉!!
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友