
Office Development
文章平均质量分 56
勾吴江南
志异征诛,三让两家王朝;
功同开辟,一桮万古江南。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Outlook的邮件过滤(一)——使用rule进行过滤
优点:简单。使用方法:在这是我们以Outlook2010为例.(由于条件有限,我这的Outlook是英语版的,不过我会用中文进行解释,抱歉!)我们在Ribbon上点文件->信息->条件及提示管理(如图1,2)(图1)(图2)然后在条件向导中选择创建新条件:(图3)(图3)然后在向导中选择“当收到邮件时”(图4)(图4)选择“来自于某人或某个组原创 2011-06-06 14:28:00 · 11840 阅读 · 1 评论 -
Outlook 2010 用代码在Outlook explorer中选中一个邮件
这个代码只能在Outlook 2010中使用using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Office.Tools.Ribbon;using Outlook = Microsoft.Office.Interop.Outlook原创 2011-11-22 16:36:02 · 879 阅读 · 0 评论 -
隐藏Visio 2010的Quick Access Toolbar
我的做法是建立一个Visio 2010 add-in 然后用Ribbon Xml来隐藏Quick Access Toolbar(QAT).ThisAddIn.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml.Linq;u原创 2011-11-23 13:35:10 · 1286 阅读 · 0 评论 -
如何用OpenXml判断一个Office文档是否用密码加密过
实际上我们是不能用OpenXml SDK去判断一个Office文档是否用密码加密过的。我们可以试着把文档的扩展名改为"zip"然后解压缩它。你会发现解压缩出来的内容与一个正常文档解压缩出来的内容大相径庭。或许这也是我们判断文档是否被加密的最好依据。原创 2011-11-24 14:45:57 · 1769 阅读 · 0 评论 -
Outlook 2010遍历会话相关的所用邮件
这个例子使用C#,Visual Studio 2010开发,是基于Outlook 2010的应用。当你选中一个邮件然后在Ribbon上点击按钮后所用与这个会话相关的邮件都会被打开。主要代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using Micro原创 2011-11-28 16:49:51 · 1523 阅读 · 0 评论 -
Outlook 2010使用VBA将一个MAPIFolder目录下的MailItem移到它的一个子目录下
Sub test() Dim objSession As Outlook.NameSpace Dim objFolder1 As Outlook.MAPIFolder Dim objFolder2 As Outlook.MAPIFolder Dim objItem As Outlook.MailItem Set objSession =原创 2011-11-29 16:57:13 · 1730 阅读 · 0 评论 -
遍历邮件分类,并显示分类颜色
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Office.Tools.Ribbon;using Outlook = Microsoft.Office.Interop.Outlook;using System.Windows.Forms;原创 2011-12-05 12:39:16 · 1129 阅读 · 0 评论 -
一个往Outlook邮件中嵌图片的例程
开发环境:Visual Studio 2010 Ultimate, Office Professional Plus 2010using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Office.Tools.Ribbon;using Outloo原创 2011-09-08 09:00:27 · 3000 阅读 · 0 评论 -
OpenXml 2.0 SDK向PowerPoint 2010文件中插入一个Slide.
实现环境:Visual Studio 2010, PowerPoint 2010,OpenXml SDK 2.0.50727 using System.Windows.Forms;using DocumentFormat.OpenXml;using DocumentFormat.OpenXml.Packaging;using P = DocumentFormat.OpenXml.Pr原创 2011-12-07 17:35:41 · 2915 阅读 · 0 评论 -
OpenXml SDK 2.0 创建Word文档——最简化的版本
using (WordprocessingDocument objWordDocument = WordprocessingDocument.Create(@"C:\********.docx", WordprocessingDocumentType.Document)) { MainDocumentPart objMainDocumentP原创 2011-11-21 16:30:13 · 1736 阅读 · 1 评论 -
OpenXml SDK 2.0 创建Word 2010文档(不带[Compatibility])最简代码
using (WordprocessingDocument objWordDocument = WordprocessingDocument.Create(@"C:\******.docx", WordprocessingDocumentType.Document)) { MainDocumentPart objMainDocumentPar原创 2011-11-21 16:41:23 · 1363 阅读 · 0 评论 -
Excel从另一个Excel文件中用户自定义区域(UsedRange)拷贝数据和行高、列宽
实现环境:Visual Studio 2010, Office 2010, VSTO 4.0, .NET Framework 4.0using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Office.Tools.Ribbon;using E原创 2011-12-09 14:10:24 · 5564 阅读 · 0 评论 -
在Ribbon中使用自定义图像。
实现环境:Visual Studio 2010, Office 2010, VSTO 4.0<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load"> <group id="MyGroup"原创 2011-12-12 12:12:02 · 2418 阅读 · 1 评论 -
在Excel(xlsx)文件中用OpenXml SDK 添加一个新的Worksheet并写入字符串
实现环境:Visual Studio 2010, OpenXml SDK 2.0.5022这个代码实现了向一个已有的xlsx文件中添加一个新的Worksheet,并在这个Sheet中写入三行字符串“ObjectA1"~"ObjectC5"Imports DocumentFormat.OpenXml.PackagingImports DocumentFormat.OpenXml.Spr原创 2011-12-19 20:17:57 · 2050 阅读 · 0 评论 -
在Outlook新邮件中向光标所在处插入一段新文字然后光标后移
实现环境:Visual Studio 2010, Outlook 2010, VSTO runtime 4.0C#using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Office.Tools.Ribbon;using Outlook =原创 2011-12-12 11:17:41 · 3882 阅读 · 2 评论 -
关于向Word文档中的RichText控件插入rtf内容的问题
在OpenXml format 的Word 文档中,似乎没有直接插入rtf格式的方法。如果需要插入rtf的内容只有预先将rtf的内容转换成Word的表现格式然后放在不同的节点下(有些需要放在StyleDefinitionsPart底下有些则做为Run的RunProperties)。原创 2011-12-21 14:40:43 · 2183 阅读 · 0 评论 -
如果的打开Word文档是Visible参数设为false你会得不到Selection实体
以下是异常重现代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.D原创 2011-12-21 13:25:48 · 1893 阅读 · 0 评论 -
VBA抓取屏幕
需要说明的是 关于"user32"下被调用函数的声明,私用常量的声明必需放在VBA代码的开头,否则代码不会运行。抓取活动窗口的Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _ bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As原创 2011-12-14 10:45:55 · 2413 阅读 · 0 评论 -
向Excel文档中嵌入VBA控件和UserForm并显示
实现环境:Visual Studio 2010, Excel 2010, VSTO 4.0在文档中嵌入一个Commandbutton点击它会显示一个UserForm,UserForm上有一个CommandButton点击会弹出消息框然后CommandButton的Caption改变。当UserForm关闭是文档中的CommandButton的Caption改变。VB.NET:Imp原创 2011-12-22 13:09:33 · 5114 阅读 · 0 评论 -
给Outlook 2007的Calendar视图增加个右键菜单项
实现环境:Visual Studio 2010, Office 2007, VSTO 4.0using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml.Linq;using Outlook = Microsoft.Office.Interop.Ou原创 2011-12-23 12:20:48 · 1885 阅读 · 4 评论 -
关于在Excel应用中的Exception from HRESULT:0x800A03EC
下面这段代码会抛出这个异常。using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using System.Windows.Forms;using System.Xml.Linq;using Microsoft.Office.Tools原创 2011-12-15 18:24:18 · 4454 阅读 · 0 评论 -
在Excel中用代码嵌入TextBox并设定Chage事件。
本示例在Visual Studio 2010, Office 2010, VSTO 4.0的环境下完成。在工程必须手工添加"Microsoft.Vbe.Interop.Forms"的引用。本示例完成的关键在于Microsoft.Vbe.Interop.Forms.TextBox 变量必须是Class-level的(作用范围在整个类以内)。否则事件不会被触发。using System原创 2011-12-16 12:55:50 · 3358 阅读 · 0 评论 -
动态生成多个VBE按钮控件并操作它们的属性
实现环境:Visual Studio 2010,Excel 2010, VSTO 4.0Imports Microsoft.Office.Tools.RibbonImports VBE = Microsoft.Vbe.InteropImports Forms = Microsoft.Vbe.Interop.FormsPublic Class Ribbon1 Private原创 2011-12-23 14:39:48 · 1329 阅读 · 0 评论 -
RibbonX 动态生成ComboBox和DropDown的Item
先让我们来看一下xml文件的设定:<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load"> <group id="GroupExcelAddIn12" label="ExcelAddI原创 2011-12-15 13:13:40 · 4197 阅读 · 0 评论 -
RibbonX的Globalization和Outlook中RibbonX的应用
实现环境:Visual Studio 2010,Office 2010, VSTO 4.0在Ribbon的Globalization中第一步是要建立相应语言的资源文件,这些资源文件的命名方式是"Resources.[语言代码].resx"如图:这此资源文件必须方在项目的“Properties”文件夹下(你刚创建是是在项目的根目录下,需要你手动把它移到"Properties"文件夹下原创 2011-12-15 13:54:37 · 1337 阅读 · 0 评论 -
最小的Excel文档
这是一个空白的Excel文档,只有一个WorkSheet。能省略的东西我都省略了。实现环境:Visual Studio 2010, OpenXml SDK 2.0.50727using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Syste原创 2011-12-15 21:47:42 · 860 阅读 · 0 评论 -
关于防止Excel文档被编辑的方法。
第一种方法是设置Workbook的Final属性为True。这样整个文档就只读了。但是这样的话文档会提示你是否取消只读(实际上与没设一个样。)第二种方法是编辑Workbook的BeforSave事件。在BeforSave事件中将Cancel设为True。这样的话在你关闭Excel时只要你有任何操作,不管事前你点了保存按钮与否它都会跳出提示框要你保存文档(你当然要点保存了——虽然什么改动都不会被原创 2011-12-16 14:36:27 · 1172 阅读 · 0 评论 -
关于MSG文件中不保存UserProperties的解决办法
在实际运用过程中我们发现当MailItem保存为Msg文件 时UserProperties不会被保存。这样的话用户自定义的许多属性将会丢失。所以我建议用户如果要保存带用UserProperties的邮件最好先通过VBA或Add-in把UserPropeties的内容用""保存到HTMLBody中(本人推荐这样做)。或者在Inspector中通过WordEditor或得Word.Document然后原创 2011-12-16 11:19:20 · 674 阅读 · 0 评论 -
Outlook打开工享Calendar
其实……通过Outlook的Application我们是不能直接访问人家的Calendar的。所以我们要绕个圈子去访问它。using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Office.Tools.Ribbon;using Outloo原创 2011-12-23 15:24:24 · 1327 阅读 · 2 评论 -
用OpenXml SDK 2.0 创建一个页脚带页码的Word文档
实现环境:Visual Studio 2010, OpenXml SDK 2.0.50727using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.原创 2011-12-27 09:31:42 · 3593 阅读 · 3 评论 -
用OpenXml在文档的尾部添加一个Rich Text Content Control/Plain Text Content Control
实现环境:Visual Studio 2010, OpenXml SDK 2.0using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;us原创 2011-12-28 11:39:03 · 1383 阅读 · 0 评论 -
当你的Add-in包含两种以上语言资源时
在建立msi时需要将localization resources from [your project]包含在Application Folder底下。原创 2012-01-09 13:26:22 · 568 阅读 · 0 评论 -
Office Add-in 中获取Office语言信息的方法C#
private void ThisAddIn_Startup(object sender, System.EventArgs e) { Office.LanguageSettings objLanguageSetting = Application.LanguageSettings; CultureI原创 2012-01-09 13:19:09 · 1008 阅读 · 0 评论 -
VSTO开发中应避免有相同的项目名在同一个Office应用中
在服务过程中有客户提及他有一个工程有两个拷贝:一个作为一个产品已经安装在了机器上,一个还在开发调试中。他问是否能让Visual Studio在编译项目过程中不修改注册表。因为那样的话已经安装的那个拷贝就会被正在调试的拷贝所替代。他必须不停的修正注册表中的Manifest值。经过试验,我发现这一点很难做到。所以我们只可以采取一些其他措施来降低这个现象带来的麻烦。在我看来,修改一下已经安装的Add原创 2012-01-13 12:40:30 · 629 阅读 · 0 评论 -
从Outlook删除Item时必须从后往前删
我在用代码删除大量邮件的时候发现:往往删掉几十封邮件后程序就自动停下来了。经过大量的搜索和在论坛中的提问,现在终于找到解决方法了:必须从后往前删!我用一下代码成功地在不间断的情况下删除了3700多份邮件。 using System;using System.Collections.Generic;using System.Linq;using System.Text;u原创 2012-01-27 13:01:22 · 1079 阅读 · 0 评论 -
连接Excel数据源并查询
Excel表必须是97-2003格式的。否则无法查询。Imports System.Data.OleDbPublic Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) H原创 2012-02-01 19:04:43 · 1350 阅读 · 0 评论 -
用OpenXml从Presentation的表中移处/添加列
这是个非常简单的例子用来说明移处/添加列的一般方法using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Wind原创 2012-02-01 17:56:42 · 1341 阅读 · 0 评论 -
在Outlook的VBA工程中慎用OOM做为参数
在Outlook的VBA中只有两个地方可以用OOM(Outlook Object Model)做为参数。ThisOutlooksession。在rule中跑的Sub。除些之外使用OOM做为参数会引发424错误。如果你的VBA不是在允许用OOM做为参数的范围内Sub或Function请使用EntryID做为参数传递Item或MAPIFolder。原创 2012-01-03 13:44:16 · 709 阅读 · 0 评论 -
在Outlook的联系人文件夹下能否创建同名联系人?
答案是肯定的:可以创建同名甚至是同名同Email地址的联系人。我在联系人文件夹下创建的一个Test文件夹用来存放测试所创建的联系人。大家有兴趣可以试试。Sub AddNewContact() Dim objNameSapce As Outlook.NameSpace Dim objMAPIFolder1 As Outlook.MAPIFolder Dim obj原创 2012-01-04 13:57:39 · 946 阅读 · 0 评论 -
Outlook 2007 Form Region add-in 可能会被加载两次
这是一个已知的问题。微软在Outlook 2007 SP3中已经修复了这个问题(在2010中也不存在这个问题)。原创 2012-01-05 11:42:02 · 719 阅读 · 0 评论