【问题标题】:.replace in VB VSTO add in for Excel.replace 在 VB VSTO 中为 Excel 添加
【发布时间】:2018-12-06 20:02:13
【问题描述】:

我正在尝试在 Excel 工作簿中搜索特定 char 值并将其替换为其他 char 值。

我可以在 Excel 的 VBA 中执行此操作,但我正在尝试编写一个 add-在 VS 2017 中使用 VSTO。

我的 VBA 代码是:

Sub charFix(control As IRibbonControl)

Cells.Replace What:="^", Replacement:=Chr(11), LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Cells.Replace What:=Chr(10), Replacement:=Chr(11), LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Cells.Replace What:=Chr(13), Replacement:="", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

End Sub

这就是我尝试的方式,这是非常错误的,哈哈。但我没有收到编译错误,所以我迷路了。

Private Sub charKill_Click(sender As Object, e As RibbonControlEventArgs) Handles charKill.Click

        Dim ActiveWorkSheet As Microsoft.Office.Interop.Excel.Worksheet =
            Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets(1)
        Dim worksheet As Microsoft.Office.Tools.Excel.Worksheet =
            Globals.Factory.GetVstoObject(ActiveWorkSheet)
        Dim cellA1 As Excel.Range = ActiveWorkSheet.replace(Chr(10), Chr(11), Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, False, , False, False)

End Sub

我确定 3rd Dim 语句之前的所有内容都是正确的,并且我确定从 .replace 开始的所有内容都是正确的...我认为问题在于我如何尝试调用它。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 我认为您需要付出更多的努力,而不是这里是我的工作 VBA 代码,现在它在 VB.NET 中会是什么样子,到目前为止您尝试过什么?将您尝试过的 vb.net 代码添加到您的问题中。
  • 不,将您的代码添加到您的问题中,因为它与您的原始帖子有关
  • 基本上我正在尝试使用与 excel 相同的包,它通过 Visual Studio 中的 vsto 在 vb.net 中的 vba 中查找和替换,但我真的不知道如何使用它。
  • 您提到您遇到了错误,错误是什么?将它们添加到您的问题中。
  • 我没有收到任何错误,只是 excel 崩溃了。

标签: excel vb.net vba visual-studio vsto


【解决方案1】:
Private Sub charKill_Click(sender As Object, e As RibbonControlEventArgs) Handles charKill.Click

    Dim activeWorkSheet As Microsoft.Office.Interop.Excel.Worksheet =
        Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets(1)
    Dim workSheet As Microsoft.Office.Tools.Excel.Worksheet =
        Globals.Factory.GetVstoObject(activeWorkSheet)
    Dim workRange As Excel.Range = workSheet.Cells

    workRange.Replace(vbLf, vbVerticalTab, SearchOrder:=2, MatchCase:=True)
    workRange.Replace("^", vbVerticalTab, SearchOrder:=2, MatchCase:=True)
    workRange.Replace(vbCr, "", SearchOrder:=2, MatchCase:=True)

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2019-11-26
    • 1970-01-01
    相关资源
    最近更新 更多