VB.net Office VSTO Addin WorkbookBeforeSave 没有签名兼容

发布于 2025-01-13 09:19:53 字数 1401 浏览 5 评论 0原文

我尝试从 Office 的 VSTO Addin 开始,并翻译了 Microsoft 在其 网站 。但是,当我实现 WorkbookBeforeSave 事件时,我总是收到此错误:

方法 'Application_WorkbookBeforeSave' 无法处理事件 'WorkbookBeforeSave' 因为它们没有兼容的签名

我在 google 中搜索并看起来签名没问题。我在 C# 中尝试了这个示例,效果很好。

这是我的代码:

Imports System.Windows.Forms
Imports Microsoft.Office.Interop.Excel

Public Class ThisAddIn
  
  Private Sub ThisAddIn_Startup() Handles Me.Startup
    AddHandler Application.WorkbookBeforeSave, New Excel.AppEvents_WorkbookBeforeSaveEventHandler(AddressOf Application_WorkbookBeforeSave)
  End Sub

  Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown

  End Sub

Sub Application_WorkbookBeforeSave(wb As Workbook, SaveUI As Boolean, Cancel As Boolean) Handles Application.WorkbookBeforeSave(
    Dim activeworksheet As Worksheet = Application.ActiveSheet
    Dim firstRow As Range = activeworksheet.get_range("A1")

    firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown)
    Dim newFirstRow As Range = activeworksheet.get_tange("A1")
    newFirstRow.Value2 = "This text was added by using code"

  End Sub
End Class

错误是包含“(AddressOf Application_WorkbookBeforeSave)”的行 有人可以帮我解决这个问题吗? 谢谢

I was trying to start with VSTO Addin for Office and I translated an example Microsoft published in their site . But I always receive this error when I implemented the WorkbookBeforeSave event:

Method 'Application_WorkbookBeforeSave' cannot handle event 'WorkbookBeforeSave' because they do not have a compatible signature

I searched in google and it looks the signature is ok. I tried this examples in C# and it worked fine.

this is the code I have:

Imports System.Windows.Forms
Imports Microsoft.Office.Interop.Excel

Public Class ThisAddIn
  
  Private Sub ThisAddIn_Startup() Handles Me.Startup
    AddHandler Application.WorkbookBeforeSave, New Excel.AppEvents_WorkbookBeforeSaveEventHandler(AddressOf Application_WorkbookBeforeSave)
  End Sub

  Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown

  End Sub

Sub Application_WorkbookBeforeSave(wb As Workbook, SaveUI As Boolean, Cancel As Boolean) Handles Application.WorkbookBeforeSave(
    Dim activeworksheet As Worksheet = Application.ActiveSheet
    Dim firstRow As Range = activeworksheet.get_range("A1")

    firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown)
    Dim newFirstRow As Range = activeworksheet.get_tange("A1")
    newFirstRow.Value2 = "This text was added by using code"

  End Sub
End Class

The error is the line that has "(AddressOf Application_WorkbookBeforeSave)"
Could somebody help me with this?
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花间憩 2025-01-20 09:19:53

我发现了问题,这是我的错误。错误出现在声明中:

Sub Application_WorkbookBeforeSave(wb As Workbook, SaveUI As Boolean, Cancel As Boolean) Handles Application.WorkbookBeforeSave

参数 Cancel as Boolean 应该是 By Ref Cancel as Boolean

I found the problem, it was my mistake. The mistake was in the declaration :

Sub Application_WorkbookBeforeSave(wb As Workbook, SaveUI As Boolean, Cancel As Boolean) Handles Application.WorkbookBeforeSave

The argument Cancel as Boolean should be By Ref Cancel as Boolean

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文