我有很多连接到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
有没有在这里引用密码和用户名? 理想情况下,我们正在寻找最简单的解决方案,因此,如果我们可以在此代码中对它们进行硬编码,那么这是可以接受的。
答案 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)
我现在可以使用密码加密保存它的模块。