2013-08-28 6 views
0

вот что я пытаюсь сделать, и я пытаюсь автоматизировать все это в excel vba.Создание соединения с помощью excel-vba

Я свяжусь, чтобы создать соединение, если оно еще не было создано, запустить определенную команду SQL, выбросить таблицу в таблицу «Данные».

Послесловие я сделаю манипуляции на нем.

Причина, по которой я хочу сделать это в VBA, заключается в том, что, когда я пытался просто вручную выполнить соединение, он будет удален, и конечный пользователь должен будет сбросить его. Я хочу, чтобы это было как можно проще для конечного пользователя. Другая вещь, которую я замечаю, это то, что; кроме того, что я не дал мне таблицу [я не думаю, что я еще это сказал], это то, что она появляется в диалоговом окне таблицы по умолчанию.

Workbooks("Tool4.xlsm").Connections.AddFromFile _ 
    "C:\Users\Cutting_This_Out.odc" _ 
    , True, False 
With ActiveWorkbook.Connections("255.255.255.0").OLEDBConnection 
    .BackgroundQuery = False 
    .CommandType = xlCmdSql 
    .Connection = _ 
    "OLEDB;Provider=SQLOLEDB.1;Integrated " _ 
    & "Security=SSPI;Persist Security Info=True;Data Source=255.255.255.0; " _ 
    & "Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation " _ 
    & "ID=TRIMMED-PC;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=COSTrpt" 
    .CommandText = _ 
    "SELECT [PRVDR_NUM],[hha2011cbsa_ms].CBSA,[CBSA_Name],[VISITS_IN],[ADJUSTED_REIMB] FROM [COSTrpt].[dbo].[hha2011cbsa_ms] INNER JOIN wage_index ON wage_index.CBSA = hha2011cbsa_ms.CBSA" 
    .RefreshOnFileOpen = False 
    .SavePassword = False 
    .SourceConnectionFile = "" 
    .SourceDataFile = "" 
    .ServerCredentialsMethod = xlCredentialsMethodIntegrated 
    .AlwaysUseConnectionFile = False 
End With 
ActiveWorkbook.Connections("255.255.255.0").Refresh 
End Sub 

Другая информация; Я подключаюсь к MS-SQL-Server, и я обрезал некоторые личные данные.

+0

Каков конкретный вопрос, который вы задаете? Работает ли код, несмотря на запрос таблицы? Если нет, есть ли сообщение об ошибке, которое вы должны отправить? –

ответ

0

Существует аналогичный вопрос здесь, в social-msdn. Шаг, который вам не хватает, - использовать QueryTables.Add, чтобы получить данные на листе (хотя ваш вопрос не совсем ясен).

Смежные вопросы