惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
月光博客
月光博客
V
Visual Studio Blog
T
Tailwind CSS Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
Jina AI
Jina AI
J
Java Code Geeks
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
Recorded Future
Recorded Future
C
Check Point Blog
腾讯CDC
N
Netflix TechBlog - Medium
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
SecWiki News
SecWiki News
博客园 - Franky
Hacker News - Newest:
Hacker News - Newest: "LLM"
N
News | PayPal Newsroom
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Security @ Cisco Blogs
W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
F
Full Disclosure
The Cloudflare Blog
Y
Y Combinator Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
S
Schneier on Security
Schneier on Security
Schneier on Security
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
AI
AI
N
News and Events Feed by Topic
T
Tor Project blog
P
Palo Alto Networks Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
Google Developers Blog

博客园 - MainIsUsed

svg札记 rabbitmq 小记 nfc相关 MI卡UID oracle9i导入导出命令 (转)C++中指针和引用的区别 关于DataTable的GetChanges()方法 【转】C#中的非安全编程(key:unsafe,fixed) Oracle中UTL_FILE包的UTL_FILE.FOPEN用法 c# 获取串口设备的输入(unsigned char *和 char*) URL字符串编码 笔记HTML - MainIsUsed - 博客园 .net导出为powerpoint的一些参考代码 关于ClickOnce 发布过程中的错误:要求高版本的CAPICOM.dll Oracle EXTRACT()函数与to_char() 函数 c#接口使用方法 - MainIsUsed - 博客园 在 WinForm 中完整支持在多级目录中保存的 ASP.NET (转) - MainIsUsed (转)实现基于事件通知的.Net套接字 (转)什么是套接字(Socket)?
.net下的office开发(visio对象)
MainIsUsed · 2009-06-14 · via 博客园 - MainIsUsed

在个人看来,对这些OFFICE的开发应用最主要的就是搞清楚对象这个概念。不管是EXCEL还是VISIO,当然还有其他的。在OFFICE这个家族里,所有的这些都是COM对象,对于.NET调用来说。就像.NET公开给我们的类库一样,COM对象在外面调用的时候也是公开给我们的,只是少了注释。虽然没有注释,但是相应的SDK里都有使用手册,就当是MSDN吧,当然很多都是英文的,其实这就是我们很重要的查询资料了。如果英文不好,我就不好,所以我一般会去网上找中文版D的VBA手册,都是同一个COM对象,虽然语言不用,但是内部机理是一样的,所以看懂VBA就可以了。

使用COM对象就要调用对象中的属性方法之类的,和.NET一样,都是基于对象的。若我们要调用一个PPT对象,我们首先要调用的就是对应COM对象的APPLICATION对象,然后一直找到我们要使用的文本区域对象,图片区域对象。EXCEL的单元格对象,VISIO的形状对象,我们最终要操作的主要对象都会呈现在我们面前。

要操作这些对象肯定要先获取到他们,就是所谓的定位区分。而对象的ID就是的最好的标识,对于ID这个属性就不多说了,说多了反倒让人糊涂。.NET类库里几乎每个对象都会有ID,文本框、按钮等等。虽然我们在设计的时候可以更改他们的ID,但是在运行时他是只读的。可以想象,如果在对象的身份都各自确定之后,忽然有人篡改名字,多出一个双胞胎,后面的操作就将无法进行。我们都得知道我们要操作的对象是什么在哪里。

这里想说的是之前做的一个PPT的(DEMO),在那个小DEMO里自己在获取对象的时候没用到ID,但是照样可以区分开这些对象来进行操作。但是最好的方法还是通过他们的ID。至于怎么获取到他们的ID,如果程序里无法获取到,那我们也可以通过程序来得知。通过COM公开给我们的就包括ID这个属性,我们可以通过.NET来获取到他们(如果你要获取模板对象中的对象ID的话,既然模板已经创建了,那后面的变化应该就不会很大。通过程序获取到的ID我们可以写成配置文件,如果有变更的时候,我们只要修改配置文件就可以了)。PPT里的对象一直不知道怎么在程序里查看ID,VISIO的形状对象在程序里可以很容易的查看。

不管以什么方式来区别对象进行操作,只要能达到项目需要就行,但是我们常常要寻找最适合的方案,因为变更常常有。

写到这里发现就后面提到了VISIO,代码就不贴了。网上VISIO的操作还是有很多的,这样多少能减少一点查VBA手册的时间。下面放一些VISIO的文章,对于普通的项目还是很有帮助的,如果有比较偏的需求还是只能靠自己查手册解决。多调试。

http://www.zxbc.cn/html/20080602/55993.html

http://www.cnblogs.com/xenogear/articles/31515.html#1552550 一前辈的系列文章