1
以下のVBAスクリプトをExcelモジュールで使用して、事前に設定されたユーザー名とパスワードでSQLサーバーに接続できるようにします。接続は基本的な選択クエリを実行しますが、パスワードを隠すか暗号化する必要があります。私が考えることができる唯一の方法は、別のシートにパスワードを隠したり、VBAをロックしたり、パスワードを含む共有ドライブからテキストファイルを呼び出すことです。しかし、これらの方法はまだ安全ではないようです。誰もが、より優れたセキュリティ方法を知っていますか?ExcelからSQLへのセキュリティ
サブConnectSqlServer()
Dim txt As String
txt = Sheets("Sheet1").Range("D1").Value
If txt Like "*[A-Z]*" Or txt Like "*[;]*" Or txt Like "*[""]*" Then
a = MsgBox("Invalid" & vbNewLine & "Try again", okonly + vbCritical, "SECURITY WARNING")
Exit Sub
Else
End If
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sConnString As String
sConnString = "Provider=SQLOLEDB;Data Source=TESTSQLSERVER2012;" & _
"Initial Catalog=MASTER;" & _
"User ID=LOGINREADUSER;" & _
"Password=123456789;"
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open sConnString
conn.CommandTimeout = 0
Set rs = conn.Execute("SELECT [ACCOUNT],[NAME].[DOB]" & _
"from [MASTER].[dbo].[CUSTOMER]" & _
";")
If Not rs.EOF Then
Sheets("Sheet1").Range("A4").CopyFromRecordset rs
rs.Close
Else
MsgBox "Error: No records returned.", vbCritical
End If
If CBool(conn.State And adStateOpen) Then conn.Close
Set conn = Nothing
Set rs = Nothing
End Sub
でも、VBAをハッキングする可能性があります。あなたのSQLであるビューのみにアクセスできる非パスワードまたはゲストユーザを追加できますか? –
ユーザーごとにユーザーIDとパスワードを入力するか、WindowsサーバーでSQLサーバーを認証するように求めます。それ以外は危険です。 – cyboashu