存档在 ‘VSTO开发’ 分类中.

使用Visual Studio 2005编写Excel自定义函数

步骤1:打开Visual Studio 2005,单击菜单“文件”─—“新建项目”。
步骤2:在“新建项目”对话框中,选择“Windows”节点中的“类库”,并输入名称,如下图。单击“确定”,创建一个类库项目。
dotnetexcelfunctions1
步骤3:在Class1.vb代码窗口中,输入下面的代码:

Imports System
Imports System.Runtime.InteropServices
Imports Microsoft.Win32

<ClassInterface(ClassInterfaceType.AutoDual), ComVisible(True)> _
Public Class TestFunction

    Public Function fff() As Long
        Dim result As Long
        result = 12345
        Return result
    End Function

    <ComRegisterFunctionAttribute()> _
            Public Shared Sub RegisterFunction(ByVal type As Type)
        Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type))
    End Sub

    <ComUnregisterFunctionAttribute()> _
    Public Shared Sub UnregisterFunction(ByVal type As Type)
        Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type), False)
    End Sub

    Private Shared Function GetSubKeyName(ByVal type As Type) As String
        Dim s As String = “CLSID\{” + type.GUID.ToString().ToUpper() + “}\Programmable”
        Return s
    End Function

End Class

步骤4:单击菜单“项目”─—“TestMyFunctions属性”。
步骤5:选择“编译”选项卡,选中“为COM Interop注册”前的复选框,如下图。
dotnetexcelfunctions2
步骤6:单击菜单“生成”─—“生成TestMyFunctions”。
步骤7:保存该项目,然后退出Visual Studio 2005。
步骤8:启动Excel 2003。
步骤9:单击菜单“工具”─—“加载宏”。
步骤10:在“加载宏”对话框中,单击其右侧的“自动化”按钮。
步骤11:在“自动化服务器”对话框的列表中,找到“TestMyFunctions.TestMyFunction”并选中,然后单击“确定”,如下图。
dotnetexcelfunctions3
步骤12:此时,在“加载宏”对话框中,添加了“TestMyFunctions.TestMyFunction”项,如下图,单击“确定”。
dotnetexcelfunctions4
步骤13:在Excel工作表单元格中,按普通的公式方输入“=fff()”,按回车后得到结果“12345”。
此时,在Excel的“插入函数”对话框中,添加了一个新类别“TestMyFunctions.TestMyFunction”,其中包括自定义的函数fff,如下图。
dotnetexcelfunctions5

VSTO3.0:用Visual Studio 2008开发Office业务应用程序

技术正在飞速发展,还记得似乎Microsoft才推出Visual Studio 2005不久,而今又推出了Visual Studio 2008,更新得如此之快,让人真的是有点不知所措。
下面是最新一期《MSDN Magazine》——Launch 2008上一篇关于VSTO 3.0的文章。在这里,只给出了文章的链接和主要介绍,以及我感兴趣的内容。
文章链接:http://msdn.microsoft.com/msdnmag/issues/08/LA/ExtendingOutlookWithVS08/default.aspx?loc=zh
主要内容:

  • Visual Studio 2008 新增功能
  • 为 Outlook 创建自定义窗体区域
  • 连接数据源
  • 添加搜索功能

一些内容:

  • 到目前为止,我敢确定您已经听说了一些有关 Visual Studio® 2008 的趣闻,它具有一些强大的功能,如支持 LINQ、改进了 Web 开发以及与 Windows Vista® 和 SharePoint® 紧密集成等等。不过 Visual Studio 2008 真正突出的一个特点是支持 Microsoft® Office 解决方案开发。
    您也可下载 VSTO Second Edition 开发 Office 2003 应用程序和 2007 Microsoft Office 系统的解决方案。但是,在 Visual Studio 2008 中包含了所有的 VSTO 项目模板。
标签: 没有标签

VSTO开发指南——使用Visual Basic 2005进行基于Excel、Word、Outlook、InfoPath的Office开发

近期,电子工业出版社出版了一本关于使用.NET(VSTO)开发Office的图书,这可能是国内第一本引进的关于这方面的图书,值得关注。
BYD0000864b

  • 本书是微软公司VSTO开发小组的两位设计人员编写的一部关于Microsoft Office程序开发的专著,介绍了在Visual Studio .NET 2005开发环境中使用Visual Basic.NET开发Office程序的技术方法。主要内容包括VSTO 2005中的Office主互调程序集,Word、Excel、Outlook和InfoPath的对象模型、事件和方法,以及在VSTO中应用这些对象模型、事件和方法创建Word、Excel、Outlook等Office自动化程序、加载项及文档代码的方法。本书还具体介绍了VSTO 2005为Office开发所提供的各种功能。
    本书示范程序精炼、典型、实用,分析了VSTO Office程序设计的技术、方法与原理,帮助读者学习和掌握VSTO Office程序设计。本书可作为有一定经验的Office用户学习Microsoft Office程序开发的首选书,更是中高级Office开发人员深入学习Office编程不可多得的技术指南。

目录
第I部分 VSTO简介 1
第1章 Office编程简介 3
1.1 为什么要进行Office编程 3
1.2 Office对象模型 5
1.3 属性、方法和事件 9
1.4 Office主互调程序集(PIA) 22
1.5 本章小结 28
第2章 Office解决方案介绍 29
2.1 Office解决方案的三种基本模式 29
2.2 Office自动化程序 31
2.3 Office加载项 39
2.4 文档代码 42
2.5 本章小结 47
第II部分 .NET环境下的Office编程 49
第3章 Excel编程 51
3.1 自定义Excel的方法 51
3.2 编写用户自定义函数 57
3.3 Excel对象模型介绍 64
3.4 本章小结 67
第4章 Excel事件处理 69
4.1 Excel对象模型中的事件 69
4.2 VSTO中的事件 95
4.3 本章小结 98
第5章 Excel对象处理 99
5.1 使用Application对象 99
5.2 使用Workbooks集合 109
5.3 使用Workbook对象 112
5.4 使用Worksheets、Charts和Sheets集合 117
5.5 使用文档属性 119
5.6 使用窗口集合 121
5.7 使用窗口对象 124
5.8 使用Names集合与Name对象 126
5.9 使用Worksheet对象 127
5.10 使用Range对象 137
5.11 Excel中的特殊问题 148
5.12 本章小结 152
第6章 Word编程 155
6.1 自定义Word的方法 155
6.2 信息检索服务编程 159
6.3 Word对象模型简介 166
6.4 本章小结 166
第7章 Word事件处理 171
7.1 Word对象模型中的事件 171
7.2 VSTO中的Office事件 191
7.3 本章小结 192
第8章 Word对象处理 193
8.1 使用Application对象 193
8.2 使用Dialog对象 208
8.3 使用窗口 211
8.4 使用模板 214
8.5 使用文档 215
8.6 使用单个的文档 219
8.7 使用Range对象 233
8.8 使用书签 248
8.9 使用表格 249
8.10 本章小结 251
第9章 Outlook编程 253
9.1 自定义Outlook的方法 253
9.2 自定义属性页 258
9.3 Outlook对象模型的介绍 264
9.4 Collaboration Data Objects介绍 267
9.5 本章小结 270
第10章 Outlook事件处理 271
10.1 Outlook对象模型中的事件 271
10.2 应用程序级的事件 275
10.3 Outlook项的事件 283
10.4 其他事件 293
10.5 本章小结 295
第11章 Outlook对象处理 297
11.1 使用Application对象 297
11.2 使用Explorers和Inspectors集合 303
11.3 使用Explorer对象 304
11.4 使用Inspector对象 309
11.5 使用NameSpace对象 312
11.6 使用MAPIFolder对象 316
11.7 使用Items集合 323
11.8 Outlook项共有的属性和方法 327
11.9 Outlook的问题 341
11.10 本章小结 345
第12章 InfoPath介绍 347
12.1 何为InfoPath 347
12.2 让我们开始吧 348
12.3 窗体安全性 351
12.4 InfoPath编程 355
12.5 数据源事件 357
12.6 窗体事件、属性和方法 364
12.7 本章小结 371
第III部分 VSTO中的Office程序设计 373
第13章 VSTO编程模型 375
13.1 VSTO编程模型 375
13.2 VSTO对Word和Excel对象的扩展 377
13.3 动态控件 381
13.4 VSTO对Word和Excel对象模型的扩展 389
13.5 本章小结 398
第14章 在VSTO中使用Windows窗体 399
14.1 简介 399
14.2 向文档中添加Windows Forms控件 403
14.3 编写控件中的代码 408
14.4 Windows Forms控件寄宿结构 408
14.5 合并自OLEObject或OLEControl的属性 414
14.6 在运行过程中添加控件 416
14.7 本章小结 421
第15章 使用操作窗格 423
15.1 操作窗格简介 423
15.2 使用ActionsPane控件 427
15.3 本章小结 438
第16章 在VSTO中使用智能标记 439
16.1 智能标记简介 439
16.2 使用VSTO创建文档级的智能标记 442
16.3 创建应用程序级的智能标记 452
16.4 本章小结 469
第17章 VSTO数据编程 471
17.1 使用VSTO创建具有数据绑定功能的自定义电子表格 471
17.2 用VSTO创建具有数据绑定功能的自定义Word文档 478
17.3 数据集、适配器和数据源 479
17.4 另一种创建数据绑定电子表格的技术 485
17.5 在数据岛中缓存数据 491
17.6 高级ADO.NET数据绑定:透过表象看本质 494
17.7 对宿主项和宿主控件绑定相关的扩展 495
17.8 本章小结 499
第18章 服务器数据方案 501
18.1 在服务器上嵌入带有数据的文档 501
18.2 使用ServerDocument和ASP.NET 503
18.3 一个简单的客户端ServerDocument工具 509
18.4 ServerDocument对象模型 510
18.5 本章小结 517

第19章 .NET代码的安全性 519
19.1 代码访问安全与基于角色的安全 519
19.2 .NET中的代码访问安全 520
19.3 位置,位置,位置 525
19.4 强名称 529
19.5 发布者证书 534
19.6 信任文档 536
19.7 把策略配置到用户计算机中 539
19.8 本章小结 542
第20章 配置 543
20.1 VSTO预备条件 544
20.2 配置内部网络的共享目录或Web站点 544
20.3 没有配置清单的本地机器配置 550
20.4 编辑清单 550
20.5 创建安装包 555
20.6 本章小结 563
第IV部分 高级Office编程 565
第21章 在Excel中使用XML 567
21.1 Excel的XML功能介绍 567
21.2 在Visual Studio中创建XML架构简介 569
21.3 端到端的方案 572
21.4 Excel中的高级XML特性 579
21.5 便于Excel使用的XML架构 582
21.6 VSTO支持Excel架构映射 584
21.7 本章小结 596
第22章 在Word中使用XML 597
22.1 Word的 XML特性介绍 597
22.2 一种端对端的方案:创造架构并把它映射到Word文档中 600
22.3 将文档中映射的XML导出到XML数据文件中 610
22.4 将XML数据文件输入到映射的文档中 612
22.5 XML选项对话框 616
22.6 VSTO对WORD架构映射的支持 617
22.7 VSTO对WordML文件格式的支持 623
22.8 本章小结 624
第23章 为Word和Excel开发COM加载项 625
23.1 加载宏简介 625
23.2 需要使用加载宏的典型情况 625
23.3 如何注册COM加载项 626
23.4 实现IDTExtensibility2接口 629
23.5 使用Visual Studio编写COM加载项 634
23.6 mscoree.dll的陷阱 641
23.7 COM互调集和regasm.exe 642
23.8 Shimming:mscoree.dll相关问题的解决方案 645
23.9 本章小结 646
第24章 使用VSTO创建Outlook加载项 647
24.1 避免使用COM加载项 647
24.2 在VSTO中创建Outlook加载项 655
24.3 本章小结 660
参考文献 661
索引 663

VSTO编程环境(一)

介绍Visual Studio IDE
Visual Studio集成开发环境(IDE)由帮助在开发VSTO和VSTO 2005 SE定制时创建和编辑代码的工具组成。如果曾经编写过VBA代码或者录制过宏,然后利用其来执行一项特定的任务,那么您已经熟悉了VBA开发环境,称作为Visual Basic编辑器(VBE)。
您可能也有使用特有的编辑和调试工具的经验,例如设置断点或使用智能感应(IntelliSense)。在VBA里,通过在对象名称之后输入一个点号(.),智能感应显示常量列表、方法和属性使得更容易编写代码。
Visual Studio 2005提供了更丰富的代码编辑和调试工具,这些工具帮助更快速地编写代码,帮助确保不会发生编译时错误,并且帮助查找和修复可能存在于代码中的运行时错误。
环境设置
当安装VSTO时,会询问指定一项应用到Visual Studio 2005 IDE的设置。这些设置定制IDE且包括通用的开发设置,Visual Basic设置和C#设置。Visual Studio用户界面根据选择的设置而不同。
可以通过单击“工具”菜单中的“导入和导出设置”命令来自定义环境设置,可以导出当前的设置、从某文件导入设置、或者重新选择缺省的设置。
如果想修改设置为Visual Basic,首先在“导入和导出设置向导”中单击“重置所有设置”,然后单击“下一步”,如图1所示。
VSTOImportExportWizard1
图1:导入和导出设置向导
这里,可以保存当前的设置或者覆盖已存在的设置。确保您的选择,然后单击“下一步”,在该向导的下一页中,选择Visual Basic开发环境,然后单击“完成”按钮,如图2所示。
VSTOImportExportWizard2
图2:设置Visual Basic开发设置
创建一个VSTO项目
在深入研究Visual Studio IDE里的不同窗口之前,让我们首先创建一个VSTO项目,看看其集成开发环境。
1、开启Visual Studio。
2、单击“文件”菜单中的“新建项目”命令。
3、在“新建项目”对话框里,展开“Visual Basic”节点,然后单击“Office”。
4、在新建项目对话框的模板窗格中,选择Excel工作簿,接受缺省的名称和位置,然后单击“确定”按钮,如图3所示。
VSTONewWorkbooksheet
图3:“新建项目”对话框
5、在Visual Studio项目向导里,选择“创建新文档”,如图4所示,然后单击“确定”。
VSTONewItem1
图4:Visual Studio项目向导
允许对VBA项目系统的访问
为Word和Excel第一次创建VSTO项目时,VSTO显示一个对话框通知该项目必须设置为对VBA项目系统的访问,如图5所示。必须单击“确定”以创建VSTO项目,如果单击“取消”,则不会创建该项目。
VSTOVBAWarningbox
图5:允许访问VBA项目系统
该对话框仅在第一次使用VSTO创建Word项目或Excel项目时出现。VSTO实际上不使用Visual Basic for Applications,但必须访问VBA项目系统以支持文档中的控件。
在已允许访问VBA项目系统之后,在Visual Studio中打开的Excel工作簿带有一些窗口,例如解决方案管理器、属性窗口和工具箱,类似于图6所示。如果没有开启工具箱,则单击菜单“视图”,然后单击“工具箱”。如果单击工具箱顶部的图钉按钮,工具箱保持打开。此时,更容易拖放控件到文档中。
VSTOWorksheetT
图6:在Visual Studio设计器中打开的Excel工作簿
菜单和工具栏
大多数Office 2003中Word和Excel的菜单和工具栏在Visual Studio中都可用。例如,在一个Excel工作簿解决方案中,注意设计器(Excel)包含工具栏。可以通过右击工具栏并单击上下文菜单中的工具栏来显示和隐藏该工具栏,如图7所示。
VSTOWorksheetToolbox
图7:为Excel设计器选择新的工具栏
这些工具栏按钮就像正使用Visual Studio外部的应用程序一样工作。然而,VSTO禁用其中一些工具栏命令,包括自定义工具栏。注意,在图7中,自定义菜单项为灰色。如果希望自定义VSTO中的工具栏,则必须编写代码。
同样要注意,在工具栏的上方没有为Excel设计器直接的菜单项,对Word设计器也是一样。相反,VSTO在Visual Studio菜单中合并菜单和菜单项。VSTO组织这些菜单和菜单项仅当Word或Excel设计器获得焦点且对特定于Word或Excel有用时。如果焦点移至该设计器之外,则仅Visual Studio菜单项可用。
例如,如果选择某Excel工作表,将看到特定于Excel的菜单,例如插入菜单。如果Visual Studio获取焦点,则插入菜单不可见。如果Excel中的某菜单已存在于Visual Studio中,则VSTO合并该菜单项,在层级菜单中放置特定于Excel的功能。图8显示了当Excel获取焦点时数据菜单中产生的菜单,图9显示当Visual Studio获取焦点时的数据菜单。
VSTOExcelDataMenu
图8:在数据菜单中选择Excel命令
VSTODataMenu
图9:在数据菜单中选择Visual Studio命令
菜单合并可能会产生一些使用上的问题。如果在菜单中不能找到命令,记住必须使文档设计器获取焦点以查看Word或Excel菜单项。首先选择文档或工作表,然后查找命令。
因为没有为加载项解决方法设计外表,所以不产生菜单合并。仅访问Visual Studio编辑器中的代码视图,因此,当创建加载项时仅Visual Studio菜单和工具栏是可用的。

译者注:匆忙翻译,未作校对和修正,仅供参考。

标签: 没有标签

VSTO如何与Visual Studio相结合

当使用VSTO创建Word或Excel解决方案时,可以直接从Visual Studio里与Word或Excel应用程序相交互。这是因为VSTO与Visual Studio已整合在一起。
Word和Excel作为设计器
在已经创建新的Excel或Word文档或模板项目后,该文档在Visual Studio环境里作为设计器是可用的。事实上,整个应用程序在Visual Studio里是可用的。
设计器是正创建的应用程序的用户接口的容器。例如,如果在Word VBA解决方案里创建用户窗体,VBE为应用程序显示该用户窗体作为设计器。然后,可以添加控件到用户窗体。当使用VSTO创建解决方案时,同样的经历现在可用于Word和Excel解决方案中。该文档是一个设计器,可以从工具箱中拖动控件在其中。
能够在设计器中添加两种类型的控件:Windows Forms控件和宿主控件。
设计器是该应用程序的可见的表现,每个设计器与代码文件相关联(正如先前提到的,该代码有时被称为代码后台的文件)。可以使用一些方法从设计器视图切换到代码视图。一种方式是在文档中单击右键,然后在快捷菜单中单击查看代码。
当在代码视图中时,可以右键单击代码编辑器,并从快捷菜单中选择查看设计器,在Visual Studio里打开该设计器。也可以在解决方案管理器中右击代码文件,打开快捷菜单,会提供相看代码和相看设计器选项。
viewdesigner
图:从代码编辑器切换到设计器
在VSTO里的代码文件
当创建新的VSTO解决方案时,Visual Studio创建许多文件。例如,如果在Visual Studio里
resourcemanagement
图:当选择显示所有文件时在解决方案管理器中显示的文件
在ThisDocument.vb源文件中编写代码。该文件包含ThisDocument类,有两个事件句柄(ThisDocument_Startup和ThisDocument_Shutdown)。可以在写字板里打开这个文件查看其内容。当然,不能使用写字板添加代码到文件中。ThisDocument.vb文件对Visual Studio里的文件有用。可以在解决方案管理器中右击该文件,选择查看代码。
这里,可以使用Visual Studio IDE的所有丰富的功能,包括IntelliSense和调试工具来使用代码任务更容易。在ThisDocument.vb后面有一些额外的文件,包含VSTO自动产生的代码。这些文件是ThisDocument.Designer.xml和ThisDocument.Designer.vb。