如何将外部文件中的用户名和密码传递到Excel数据连接

时间:2016-09-20 09:39:29

标签: database excel oracle vbscript

我有很多连接到Oracle数据库的excel文件。 但是,连接详细信息以纯文本形式存储在连接详细信息中。 许多不同的人都可以访问这些Excel。 我需要将外部文件中的密码和用户名“传递”到连接中,以保护数据库凭据。 连接仅用于我的机器上的自动作业。因此,其他用户不需要使用连接。 我的自动化作业使用VBS脚本,因此最好使用解决方法。

处理此问题的VBS部分是

Dim xlApp, xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open("where workbook is located", False)
xlApp.Run "SampleMacroName()"


xlbook.Save
xlBook.Close False
set xlBook = Nothing

xlApp.Quit
Set xlApp = Nothing

DisplayAlerts=false

有没有在这里引用密码和用户名? 理想情况下,我们正在寻找最简单的解决方案,因此,如果我们可以在此代码中对它们进行硬编码,那么这是可以接受的。

1 个答案:

答案 0 :(得分:0)

我不得不删除数据库中的连接,并使用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)

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