VBA Excel 2010 你怎么换出一个连接
VBA Excel 2010 How do you swap out a connection
我有一个连接指向外部 excel 文件。我所有的数据透视表都指向这个连接。有什么方法可以在不更改任何数据透视表的情况下换出我的连接。
我编写了使用 ADO 从受密码保护的 excel 文件中读取的代码。但是,我想使用工作簿启动时建立的这个新连接来更改连接。
这是目前为止的代码。
Public Sub readFile()
Dim xl As Object
Dim conn As New ADODB.connection
Dim recSet As ADODB.Recordset
Dim conString As String
Dim wkbName As String
Dim SQL As String
Dim DBPath As String
'Path to excel file
DBPath = "path\to\file.xlsx"
Set xl = GetObject(DBPath)
'Name of table
wkbName = "[table1$]"
conString = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
'Query
SQL = "select * from " & wkbName
'Open connection
conn.Open conString
'Itterate over record set
Set recSet = New ADODB.Recordset
recSet.Open SQL, conn
'Print out col1 from table
Do Until recSet.EOF
'process your data here
Debug.Print recSet!Data
recSet.MoveNext
Loop
End Sub
我想出了如何更改所有现有数据透视表的连接。将连接名称替换为连接名称,将工作簿名称替换为工作簿名称
Sub changeConnection()
Dim pTable As Variant
Dim sheet As Variant
Dim workBookName As String
workBookName = "filename.xlsm"
For Each sheet In Workbooks(workBookName).Worksheets
For Each pTable In sheet.PivotTables
pTable.changeConnection Workbooks(workBookName ).Connections("connection name")
Next pTable
Next sheet
End Sub
我有一个连接指向外部 excel 文件。我所有的数据透视表都指向这个连接。有什么方法可以在不更改任何数据透视表的情况下换出我的连接。
我编写了使用 ADO 从受密码保护的 excel 文件中读取的代码。但是,我想使用工作簿启动时建立的这个新连接来更改连接。
这是目前为止的代码。
Public Sub readFile()
Dim xl As Object
Dim conn As New ADODB.connection
Dim recSet As ADODB.Recordset
Dim conString As String
Dim wkbName As String
Dim SQL As String
Dim DBPath As String
'Path to excel file
DBPath = "path\to\file.xlsx"
Set xl = GetObject(DBPath)
'Name of table
wkbName = "[table1$]"
conString = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
'Query
SQL = "select * from " & wkbName
'Open connection
conn.Open conString
'Itterate over record set
Set recSet = New ADODB.Recordset
recSet.Open SQL, conn
'Print out col1 from table
Do Until recSet.EOF
'process your data here
Debug.Print recSet!Data
recSet.MoveNext
Loop
End Sub
我想出了如何更改所有现有数据透视表的连接。将连接名称替换为连接名称,将工作簿名称替换为工作簿名称
Sub changeConnection()
Dim pTable As Variant
Dim sheet As Variant
Dim workBookName As String
workBookName = "filename.xlsm"
For Each sheet In Workbooks(workBookName).Worksheets
For Each pTable In sheet.PivotTables
pTable.changeConnection Workbooks(workBookName ).Connections("connection name")
Next pTable
Next sheet
End Sub