Еще один вопрос SSIS: я уже очень близок к тому, чтобы обновить Excel, но у меня сложилось впечатление, что приложение Excel закрывается до того, как RefreshAll будет выполнен.Однажды я включил предупреждения и получил '!Это действие отменит ожидающую команду обновления данных.Продолжить? ' Когда я отменил их все, у меня был обновленный лист.Но, конечно, это не та цель, по которой нужно щелкать диалоговые окна в решении служб SSIS.
Конечно, я начал со ссылки на библиотеки Office.Interop.Excel.К вашему сведению, во-первых, я потратил часы на то, чтобы соединения ODBC работали на сервере.
Итог: пусть SSiS обновит мое превосходство.-> результат: когда я открываю файл, данные НЕ обновляются.
Я думаю, у меня должно быть что-то, что проверяет, завершилось ли обновление (успешно).Если TRUE, то Save and Close!
Я нашел предлагаемые решения в Интернете, но ни одно из них не работает, как показано ниже: кажется, у моего Excel нет QueryTables
$$$
Dim ws As Worksheet
Dim qs As QueryTable
For Each ws In Worksheets
For Each qs In ws.QueryTables
qs.Refresh (False)
Next qs
Next ws
$$$
Ниже у вас есть код из моего скриптового задания.Помощь очень ценится на этом!Спасибо!L
Public Sub Main()
Dts.TaskResult = ScriptResults.Success
Dim oApp As New Microsoft.Office.Interop.Excel.Application
oApp.Visible = True
oApp.UserControl = True
Dim oldCI As System.Globalization.CultureInfo = _
System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = _
New System.Globalization.CultureInfo("en-US")
'oApp.Workbooks.Add()
'System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
Dim wb As Microsoft.Office.Interop.Excel.Workbook
wb = oApp.Workbooks.Open(Dts.Variables("User::FileNameHandleFull1").Value.ToString)
'oApp.DisplayAlerts = False
'oApp.ActiveWorkbook.RefreshAll()
wb.RefreshAll()
'here I tried the .wait command but this gave a BUSY error
wb.Save()
wb.Close()
oApp.DisplayAlerts = True
oApp.Quit()
Runtime.InteropServices.Marshal.ReleaseComObject(oApp)
End Sub