1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

帖子
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1938|回复: 1

用VS2008开发WORD2007的加载项,关闭WORD时的操作咋写呢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-5-28 19:17 | 显示全部楼层 |阅读模式
用VS2008开发WORD2007的加载项,关闭WORD的时候,想执行一段程序,在光标所在的地方写一个字符串“已完成”。我是这样的写的:
Private Sub ThisAddIn_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown

        Dim Selection = Globals.ThisAddIn.Application.Selection
        Selection.Text = "aa"


    End Sub

但是执行时总会弹出下面的错误提示信息:

  Selection.Text = "aa"   未将对象引用设置到对象的实例。

有懂的兄弟可以指导下吗

TA的精华主题

TA的得分主题

发表于 2013-5-30 00:49 | 显示全部楼层
字面意思是加载项卸载的时候发生的事件 这个事件是在WORD关闭之后发生的
那时候你的Selection已经释放了 变成了NOTHING 所以TEXT属性 没有了对象....
这个应该写在WORD程序关闭的时候

VB.NET不太熟悉 C#是直接+=生成
VB.NET 据我所知 可以AddHandler来控制事件 还有种比较类似VBA的方法如下

Public Class ThisAddIn
    Public WithEvents app As Microsoft.Office.Interop.Word.Application
    Private Sub ThisAddIn_Startup() Handles Me.Startup
        app = Globals.ThisAddIn.Application
    End Sub
    Private Sub Close() Handles app.DocumentBeforeClose
        MsgBox("")
    End Sub
    Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown

    End Sub
End Class

这种方式我不会传递参数 所以只用了个MSGBOX来替代你那句输出字符的语句

如果是C#相对简单些

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Word = Microsoft.Office.Interop.Word;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Word;

namespace WordAddIn2
{
    public partial class ThisAddIn
    {
        Word.Application app;
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            app = this.Application;
            app.DocumentBeforeClose += new Word.ApplicationEvents4_DocumentBeforeCloseEventHandler(app_DocumentBeforeClose);
        }

        void app_DocumentBeforeClose(Word.Document Doc, ref bool Cancel)
        {
            app.Selection.Text = "aa";
            //throw new NotImplementedException();
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

比较方便的传递参数+=号后两次TAB键自动生成事件的代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-3-6 11:40 , Processed in 0.015805 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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