ssis Ошибка: исключение было выброшено целью вызова

Поток управления ssis состоит из задачи сценария, которая пытается открыть файл Excel n и сохранить его как файл txt с использованием метода workbookopen и метода saveas. Он показывает ошибку при запуске pkg

The file path is of the format \\11.111.111.1\folder1\folder2\file.xlsx


 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
       at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
       at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
       at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
       at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

Используемый скрипт

Public Sub Main()



        Dim WScript As Object                                    '''= Nothing   '' with out nothing it was showing an error
        Dim oExcel As Object
        Dim oBook As Object



        Dim varoroviderFileLocation_script As String
        Dim varFileName_script As String
        Dim FullPath_script As String

        Dim v_Reversestring As String
        Dim v_ReplaceString As String




        varoroviderFileLocation_script = Dts.Variables("User::varoroviderFileLocation").Value.ToString()
        varFileName_script = Dts.Variables("User::varFileName").Value.ToString()
        FullPath_script = Dts.Variables("User::varoroviderFileLocation").Value.ToString() + "\" + Dts.Variables("User::varFileName").Value.ToString()

        MessageBox.Show(varoroviderFileLocation_script)
        MessageBox.Show(varFileName_script)
        MessageBox.Show(FullPath_script)


        oExcel = CreateObject("Excel.Application")

        oBook = oExcel.Workbooks.Open(FullPath_script)

        MessageBox.Show("FullPath_script " + FullPath_script)




        v_Reversestring = StrReverse(FullPath_script)
        v_Reversestring = v_Reversestring.Substring(5, Len(v_Reversestring) - 5)
        MessageBox.Show(v_Reversestring)
        v_Reversestring = StrReverse(v_Reversestring)



        v_ReplaceString = v_Reversestring + ".txt"

        MessageBox.Show("v_ReplaceString  " + v_ReplaceString)

        oBook.SaveAs(v_ReplaceString, -4158)




        oBook.Close(False)
        oExcel.Quit()
        WScript.Echo("Done")


        Dts.TaskResult = ScriptResults.Success
    End Sub

person user1254579    schedule 29.06.2016    source источник
comment
Можете ли вы вставить в вопрос актуальный (соответствующую часть) код компонента скрипта?   -  person steenbergh    schedule 29.06.2016
comment
Также: подводные камни по умолчанию при доступе к файлам Excel: открыт ли файл в другом процессе? Вы должны проверить Монитор задач, чтобы увидеть, есть ли устаревшие экземпляры EXCEL, используемые SYSTEM. И есть ли у учетной записи, которую вы используете для запуска этого пакета, доступ для чтения / записи к местоположению файла?   -  person steenbergh    schedule 29.06.2016
comment
Можете ли вы выполнить код с помощью отладчика и сообщить нам, в какой строке возникает ошибка?   -  person steenbergh    schedule 29.06.2016
comment
это неправильное присвоение строковых и объектных переменных!   -  person user1254579    schedule 29.06.2016
comment
он не работает в oBook.SaveAs (v_ReplaceString, -4158), это шаг сохранения как .txt   -  person user1254579    schedule 29.06.2016
comment
И в окне сообщений в строке выше указано правильное имя? Уже есть файл с таким именем?   -  person steenbergh    schedule 29.06.2016
comment
да msgbox выше показывает имя corr   -  person user1254579    schedule 29.06.2016
comment
Кроме того, он работает хорошо, если я заменяю IP-адрес назначенным именем локального диска. То есть вместо \\ 11.111.111.1 \ folder1 \ folder2 \ file.xlsx, если я использую \\ Z \ folder1 \ folder2 \ file.xlsx то он работает. Но теперь ошибка изменилась. Файл excel вернулся с ~ $ FileName.xlsx   -  person user1254579    schedule 29.06.2016
comment
Отображаемое вами '~ filename.xlsx' означает, что исходный 'filename.xlsx' все еще открыт, это своего рода механизм блокировки Excel. Запуск пакета, пока существует '~ filename.xlsx', может привести к ошибке «Файл используется другим процессом».   -  person steenbergh    schedule 29.06.2016
comment
Это означает, что последняя команда oBook.Close (False) не должна измениться на oBook.Close (true).   -  person user1254579    schedule 29.06.2016


Ответы (1)


По моему опыту, при работе с Office эта ошибка связана с 64-битной средой выполнения. В свойствах проекта в разделе конфигурации вы должны установить для этого параметра значение false. В других случаях я вижу эту ошибку, когда указанная DLL отсутствует в GAC или переменная, на которую указывает ссылка, написана неправильно.

person Joe C    schedule 29.06.2016
comment
64 время выполнения ложно. Все еще показывает ошибку. Он показывает имя файла как ~ $ File.xlsx, в отладке - person user1254579; 29.06.2016