Всем привет!!!
Люди, у меня возникла маленькая проблемка, с корой я столкнулся, и не знаю, как бороться, как ее решить. Как я понял, данная проблема не имеет отношения к объекту QueryTables и имеет какое-то отношение к системе безопасности Excel, но, при этом, камнем преткновения становится именно объект QueryTables. Система: ХР, Excel 2003. Следите за моей мыслью:
Условимся, что в некоторой книге под названием WB_1.xls есть макрос SUB_1(), который использует для своей работы объект QueryTables. Вот его примерный код:
Sub SUB_1()
Dim Select_exp As String
Connection_BD = "ODBC;DSN=...;UID=...;PWD=..."
' ... - информация конфиденциальна
Select_exp = "select ... from ... where ... order ..."
With ActiveSheet.QueryTables.Add(Connection:=Connection_BD, Destination:=Range(Cells(col, 1), Cells(col, 1)))
.CommandText = Select_exp
.Name = "TR_range"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
Теперь рассмотрим ситуацию:
Мы открываем книгу WB_1.xls и нажимаем Alt+F8. В появившемся окне мы выбираем наш макрос и нажимаем кнопку Run. При сценарии таких действий со стороны пользователя (т.е. меня), макрос успешно (молча) выполняется и извлекает данные из БД.
Но как только мы попытаемся повторить выполнение макроса SUB_1()(выполнение изъятия данных из БД), так сразу же Excel выводит окно списка ODBC соединений с просьбой выбрать необходимое ODBC-соединение.
Вопрос : Как сделать так, чтобы во второй ситуации Excel молча выполнял макрос SUB_1() также, как это происходит в первой ситуации??
Почему в первой ситуации Excel замечательно, прямо-таки, работает, а во второй и в следующих ситуациях просит вмешаться пользователя??
Если можно, выскажите хотя бы свое мнение по этому поводу... Заранее благодарен всем, кто отзовется.
Люди, у меня возникла маленькая проблемка, с корой я столкнулся, и не знаю, как бороться, как ее решить. Как я понял, данная проблема не имеет отношения к объекту QueryTables и имеет какое-то отношение к системе безопасности Excel, но, при этом, камнем преткновения становится именно объект QueryTables. Система: ХР, Excel 2003. Следите за моей мыслью:
Условимся, что в некоторой книге под названием WB_1.xls есть макрос SUB_1(), который использует для своей работы объект QueryTables. Вот его примерный код:
Sub SUB_1()
Dim Select_exp As String
Connection_BD = "ODBC;DSN=...;UID=...;PWD=..."
' ... - информация конфиденциальна
Select_exp = "select ... from ... where ... order ..."
With ActiveSheet.QueryTables.Add(Connection:=Connection_BD, Destination:=Range(Cells(col, 1), Cells(col, 1)))
.CommandText = Select_exp
.Name = "TR_range"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
Теперь рассмотрим ситуацию:
Мы открываем книгу WB_1.xls и нажимаем Alt+F8. В появившемся окне мы выбираем наш макрос и нажимаем кнопку Run. При сценарии таких действий со стороны пользователя (т.е. меня), макрос успешно (молча) выполняется и извлекает данные из БД.
Но как только мы попытаемся повторить выполнение макроса SUB_1()(выполнение изъятия данных из БД), так сразу же Excel выводит окно списка ODBC соединений с просьбой выбрать необходимое ODBC-соединение.
Вопрос : Как сделать так, чтобы во второй ситуации Excel молча выполнял макрос SUB_1() также, как это происходит в первой ситуации??
Почему в первой ситуации Excel замечательно, прямо-таки, работает, а во второй и в следующих ситуациях просит вмешаться пользователя??
Если можно, выскажите хотя бы свое мнение по этому поводу... Заранее благодарен всем, кто отзовется.