【问题标题】:How to link Connection to Refresh Table in VBA如何在 VBA 中将连接链接到刷新表
【发布时间】:2016-09-22 13:57:49
【问题描述】:

我需要在 Excel 中刷新多个连接,而不是在连接详细信息中存储密码。我正在使用 VBA 脚本来尝试此操作。我的代码是:

Sub Test() 
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset

' Connection string information for  DB as a variable (strCon)

strCon = "Driver={dummy}; " & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=dummy)" & _
"(HOST=dummy)(PORT=dummy))" & _
"(CONNECT_DATA=(SERVICE_NAME = dummy))); uid=dummy; pwd=dummy;"

' Opens the above connection string.
con.Open (strCon)

ActiveWorkbook.RefreshAll
ActiveWorkbook.Save

End Sub

我的代码似乎打开了一个连接,并刷新了表格。但是,它仍然要求我输入密码。如何使用打开的连接刷新表格?

【问题讨论】:

  • 这是另一个几乎相同的问题。stackoverflow.com/questions/20416105/…
  • 谢谢,但这并没有具体告诉我如何将两者联系在一起(我是 VBA 初学者)。
  • 为什么不将密码保存为 string dim psswd as string psswed = "Dummy" 并尝试在连接字符串中使用该变量?你在哪里指定 pwd=dummy.......我不确定只是一个想法。
  • 我认为连接本身正在工作。我只是不知道如何将它链接到我的 ActiveWorkbook 中?

标签: database vba excel connection


【解决方案1】:

我不得不删除我在数据库中的连接并使用 VBA 代码在一系列 SQL 查询中复制我的连接。我使用的代码的基础是:

'Declare variables'
    Set objMyConn = New ADODB.Connection
    Set objMyRecordset = New ADODB.Recordset
    Dim strSQL As String

'Open Connection'
    objMyConn.ConnectionString = "Driver={Microsoft ODBC for Oracle}; " & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=***)" & _
"(HOST=*****)(PORT=****))" & _
"(CONNECT_DATA=(SERVICE_NAME = ****))); uid=****; pwd=*****;"
objMyConn.Open

'Set and Excecute SQL Command'
    strSQL = "Select distinct * From Temp_Final_Complaints_Report"

'Open Recordset'
    Set objMyRecordset.ActiveConnection = objMyConn
    objMyRecordset.Open strSQL

'Copy Data to Excel'
    Sheets("Complaints Report").Range("A2").CopyFromRecordset (objMyRecordset)

我现在可以用密码加密保存它的模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    相关资源
    最近更新 更多