2016-09-20 16 views
0

我有許多連接到Oracle數據庫的excel文件。 但是,連接詳細信息以純文本形式存儲在連接詳細信息中。 這些Excels被許多不同的人訪問。 我需要將密碼和用戶名從外部文件「傳遞」到連接中,以保護數據庫憑證。 連接僅用於我的機器上的自動作業。因此,其他用戶不需要使用連接。 我的自動作業使用VBS腳本,因此解決方法最好。如何將外部文件中的用戶名和密碼傳遞到Excel數據連接

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

我不得不刪除數據庫中的連接並使用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) 

我現在可以使用密碼加密保存此模塊的模塊。

相關問題