Использование vb.net для добавления новой колонки в Excel - PullRequest
0 голосов
/ 10 января 2019

Я надеялся, что кто-нибудь сможет предложить мне некоторую помощь, пожалуйста? Моя таблица Excel содержит различные столбцы, и я просто хотел добавить еще один столбец в конце. Поэтому, если мой лист содержит 20 столбцов данных, я хочу добавить заголовок к столбцу U1, в следующий раз, если мой лист содержит 22 столбца данных, я хочу добавить заголовок к V1 и т. Д.

Теперь мне удалось получить следующую букву столбца, однако, когда я пытаюсь передать текст в строку заголовка, я получаю ошибку ссылки на объект, не установленную для экземпляра объекта в следующей строке

.Range (ColumnIndexToColumnLetter (lColumn + 1) & 1) .Value = "TESTT"

Любая помощь очень ценится, большое спасибо

    Dim xls As New Excel.Application
    Dim xWorkbook As Excel.Workbook
    Dim xWorksheet As Excel.Worksheet
    Dim lColumn As Long = 0

    xWorkbook = xls.Workbooks.Open("D:\Test.xlsx") 'File Location
    xWorksheet = xWorkbook.Sheets(1)
    xls.Visible = True

    With xWorksheet
        If xls.WorksheetFunction.CountA(.Columns) <> 0 Then
            lColumn = .Columns.Find(What:="*", _
                          After:=.Range("A1"), _
                          LookAt:=Excel.XlLookAt.xlPart, _
                          LookIn:=Excel.XlFindLookIn.xlFormulas, _
                          SearchOrder:=Excel.XlSearchOrder.xlByColumns, _
                          SearchDirection:=Excel.XlSearchDirection.xlPrevious, _
                          MatchCase:=False).Column
        Else
            lColumn = 1
        End If
    End With

    With xWorksheet
              .Range(ColumnIndexToColumnLetter(lColumn + 1) & 1).Value = "TESTT"
    End With

Private Function ColumnIndexToColumnLetter(colIndex As Integer) As String
    Dim div As Integer = colIndex
    Dim colLetter As String = String.Empty
    Dim modnum As Integer = 0

    While div > 0
        modnum = (div - 1) Mod 26
        colLetter = Chr(65 + modnum) & colLetter
        div = CInt((div - modnum) \ 26)
    End While

    Return colLetter
End Function

1 Ответ

0 голосов
/ 10 января 2019

если вы используете опцию строго, вы должны использовать cint для конвертации, с этим изменением ваш код работает хорошо

With xWorksheet
  .Range(ColumnIndexToColumnLetter(CInt(lColumn + 1)) & 1).Value = "TESTT"
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...