При запуске сценария в службах SSIS для изменения файла Excel возникает ошибка: сервер выдал исключение.(Исключение из HRESULT: 0x80010105 (RPC_E_SERVERFAULT)) - PullRequest
0 голосов
/ 07 февраля 2019

Когда я пытаюсь запустить скрипт SSIS для обновления файла Excel, он всегда выдает ошибки при любых изменениях или сохраняет чтение файла в порядке, это делается в Visual Studio 2005 и запускается на сервере.

Любые идеи.

Версия Excel Interop: Microsoft.Office.Interop.Excel - 11.0.0.0

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.office.interop.excel.dll

Код сценария:

    Dim oExcel As Excel.Application
    Dim oWorkBook As Excel.Workbook
    Dim oWorkSheets As Excel.Sheets
    Dim oWSheet As Excel.Worksheet
    Dim oRng As Excel.Range
    Dim oCell As Excel.Range

    Dim Temp As String
    Dim startCol As String
    Dim startRow As Long
    Dim lastRow As Long
    Dim lastCol As Long
    Dim i As Long

    Dim myfile As String
    Dim myPath As String


    'SET oExcel As Excel.Application
    oExcel = CreateObject("Excel.Application")

    'DISABLE EXCEL WARNINGS
    oExcel.Visible = False
    oExcel.DisplayAlerts = False
    oExcel.AskToUpdateLinks = False
    oExcel.AlertBeforeOverwriting = False

    myPath = "\\Network Path\Testing\"
    myfile = "EIV Temp File - Small.xls"

    oWorkBook = oExcel.Workbooks.Open(myPath & myfile)

    With oWorkbook
        oWSheet = CType(oWorkBook.Sheets(1), Excel.Worksheet)

        startCol = "A"
        startRow = 1
        lastRow = oWSheet.Range(startCol & oWSheet.Rows.Count).End(XlDirection.xlUp).Row
        lastCol = oWSheet.Cells(2, oWSheet.Columns.Count).End(XlDirection.xlToLeft).Column + 1

        '  oRng = oWSheet.Range("I2" & ":" & "I" & lastRow)

        ' For Each oCell In oRng
        ' Temp = "'" + oCell.Value
        ' oCell.Value = Temp
        ' Next oCell

        Try
            With oWSheet
                For i = 2 To lastRow
                    Temp = "'" + .Cells(i, 9).value
                    .Cells(i, lastCol).value = Temp ' Errors at this line
                Next i
            End With
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

        .Save() ' Errors at this line
        .Close(SaveChanges:=False)
    End With

Исключение

Исключение из HRESULT: 0x80010105 (RPC_E_SERVERFAULT)

1 Ответ

0 голосов
/ 08 февраля 2019

Я попробовал ваш код, и следующая строка вызвала исключение:

Temp = "'" + .Cells(i, 9).value

, потому что вы используете оператор + для объединения строк, а если значение ячейки не является строкой, оно будетбросить исключение.попробуйте следующий синтаксис.

Temp = "'" & .Cells(i, 9).value

Также вы можете удалить .Save строку и использовать .Close(SaveChanges:=True)

Примечание:

ПослеСценарий выполнен, Excel останется открытым в фоновом режиме, необходимо добавить следующие строки:

Marshal.ReleaseComObject(owsheet)
Marshal.ReleaseComObject(oWorkbook)
Marshal.ReleaseComObject(oExcel)
...