簡體   English   中英

使用Vb.Net Com加載項將多行插入Excel工作表

[英]Inserting multiple rows into an Excel Sheet with Vb.Net Com Add-In

在確定Excel工作表InsertRow的行索引之后,我想使用VB.net在它之后插入16行。 我正在構建一個COM加載項,如果這有任何改變。 在VBA中,我可以通過以下方式進行操作:

 ...
 Dim InsertRow as String
 ...
 Dim ContractForm As Worksheet
 Set ContractForm = Sheets("Lab Contracts")
   ContractForm.Select
   ContractForm.Rows(InsertRow & ":" & InsertRow).Select
   Range(Selection, Selection.Offset(8, 0)).EntireRow.Insert

我似乎找不到在VB.net中執行此操作的方法。 我已經嘗試過:[對於(InsertRow“:” InsertRow]的所有實例,我還嘗試了(“ 47:47”)和(InsertRow),以防語法不正確(反之亦然)。

  ...
  ContractSheet.Rows(InsertRow ":" InsertRow).Select()
  ContractSheet.Rows.Insert()
  ...

和ContractSheet.Rows(“ 47:47”)。Select()ContractSheet.Range(“ 47:47”)。EntireRow.Insert()和ContractSheet.Rows(InsertRow).Select()對於n = 1到16的ContractSheet。 Range(InsertRow&“:”&InsertRow).rows.insert(xlDown)Next和ContractSheet.Rows(InsertRow).Select()對於n = 1到16 ContractSheet.Selection.Insert()下一頁

而且我可以繼續,但是我認為這不會有所幫助(因為在提出問題之前,我一直在一個問題上嘗試一個多小時)。 根據具體情況,會出現以下錯誤之一:

結果:0x800A03EC; 要么

HResult 0x80020005; 要么

無法將對象篩選出表格。

任何幫助將不勝感激。

最好避免使用Select語句,除非您必須這樣做,也不必這樣做。 因此,僅需重新奠定基礎,就可以在VBA中執行以下操作:

Sub test()
Dim InsertRow As Long
Dim ContractForm As Worksheet

InsertRow = "5"
Set ContractForm = Sheets("Lab Contracts")
ContractForm.Rows(InsertRow).Resize(8).Insert xlShiftDown
End Sub

在VB.Net中幾乎是相同的。 (而且我猜VB或VBA都不需要xlShiftDown參數):

Imports Microsoft.Office.Interop

Sub test()
    Dim ContractForm As Excel.Worksheet
    Dim InsertRow As Int32

    ContractForm = Application.ActiveWorkbook.Worksheets("Lab Contracts")
    InsertRow = 5
    ContractForm.Rows(InsertRow).Resize(8).insert() '(Excel.XlInsertShiftDirection.xlShiftDown)
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM