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