[VBA]讀取ODBC連線資訊
紀錄一下過程
問題描述
原先excel檔案是用odbc(user dsn)方式連接db2資料庫,用明碼方式儲存資料庫帳密;要調整相關程式如下:
1. odbc改成用system dsn。
2. 資料庫帳密改成用設定檔方式讀取。
設定檔位置
設定檔內容
第一行帳號,第二行密碼:
步驟
新增ODBC連線
執行 C:\Windows\SysWOW64\odbcad32.exe 跳出ODBC資料來源管理員
選擇【系統資料來源名稱】,點選【新增】。
選取【SQL Server Native Client 11.0】後點選完成,進入設定畫面。
輸入名稱與伺服器,點選【下一步】。
選取【以SQL方式驗證登入】輸入連線帳號和密碼。
勾選並選取預設登入資料庫點選【下一步】。
勾選SQL Server System Language 選取English語系後,點選【完成】按鈕。
點選【測試連線按鈕】進行連線測試。
驗證連線正常,完成資料庫連線設定。
點選確定離開。
修改Excel
增加模組LoadConfigFile,內容如下:
'帳號
Public ID As String
'密碼
Public PWD As String
Sub LoadConfig()
Dim arrStr() As String, InputStr As String
Dim i As Integer, j As Integer
Dim Fn As Variant
Dim myConfigFile As String
Fn = FreeFile
'組態檔位置
myConfigFile = "C:\config\Ors_AP.txt"
On Error GoTo Err
Open myConfigFile For Input As #Fn
Application.ScreenUpdating = False '畫面暫停更新
i = 1: j = 1
While Not EOF(Fn)
Line Input #Fn, InputStr '從檔案讀出一列,
If Len(InputStr) > 0 Then '略過無字串的空行
arrStr = Split(InputStr, "=")
'把讀入的文字列依逗號分成數個字串, 置於 arrStr 陣列裡
For j = 1 To UBound(arrStr)
If arrStr(0) = "ID" Then
ID = arrStr(1)
End If
If arrStr(0) = "PWD" Then
PWD = arrStr(1)
End If
Next j
End If
i = i + 1
Wend
Application.ScreenUpdating = True '畫面恢復更新
Close #Fn
GoTo Final
Err:
Debug.Print "Config File Not Exist!" & myConfigFile
Final:
End Sub
執行結果
測試連線結果。
Dim cn As New ADODB.Connection
'讀取連線帳密
LoadConfigFile.LoadConfig
'開啟資料庫連線
cn.Open "northwind", LoadConfigFile.ID, LoadConfigFile.PWD
If cn.State = adStateOpen Then
Debug.Print "Welcome to Northwind!"
Else
Debug.Print "Sorry. No Northwind today."
End If
Set cn = Nothing
End Sub
成功
參考資料
Excel VBA 讀入外部的txt檔案 程式碼要如何撰寫呢
VBA ADODB excel - read data from Recordset