dynamic读取数据库信息以连接到数据库

如果我在Excel中使用VBA从服务器导入数据,我写了以下内容:

Sub ImportData(message_string, location, table_name, env_name) If env_name = "Name" Then connstring = "OLEDB;Provider=MSDAORA.1;User ID=myID1;password= MyPass1;Data Source=server1" Else connstring = "OLEDB;Provider=MSDAORA.1;User ID=myID2;password= MYPass2;Data Source=Server2" End If With ActiveSheet.QueryTables.Add(Connection:=connstring, _ Destination:=Range(location), Sql:=message_string) .RefreshStyle = xlOverwriteCells .Refresh .Name = table_name End With End Sub 

如何读取Excel工作表中的myUserNamemyPassserver1server2数据?

例如把这个信息放在单元格A1,A2和A3中。

如果我正确地理解你的问题,你所要做的就是使用连接string表单中的数据 – 你可以像创build任何其他string一样执行此操作。

它看起来如下:

 Sub ImportData(message_string, location, table_name, env_name) Dim connstring As String Dim myUserName As String Dim myPass As String Dim server1 As String Dim server2 As String myUserName = Sheets(1).Range("A1").Value myPass = Sheets(1).Range("A2").Value server1 = Sheets(1).Range("A3").Value server2 = Sheets(1).Range("A4").Value connstring = "OLEDB;Provider=MSDAORA.1;User ID=" & myUserName & ";password=" & myPass & ";Data Source=" If env_name = "Name" Then connstring = connstring & server1 Else connstring = connstring & server2 End If With ActiveSheet.QueryTables.Add(Connection:=connstring, _ Destination:=Range(location), Sql:=message_string) .RefreshStyle = xlOverwriteCells .Refresh .Name = table_name End With End Sub 

我更新了代码,使它尽可能容易更新 – 希望这一切都有道理。