【发布时间】:2019-01-10 21:11:03
【问题描述】:
您好,我正在处理一个包含 46 个数据透视表的 excel 文件。下面的代码将每个数据透视表的连接更改为新的现有连接。
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 Function 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.xlsm"
Set xl = GetObject(DBPath)
'Name of table
wkbName = "[IS$]"
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!ISData
recSet.MoveNext
Loop
End Function
上面的代码将访问外部存储的受密码保护的工作簿内的表。然后使用记录集打印出调试所有项目。
我想基本上在代码的第二个 sn-p 中使用我的解决方法,这样我就可以替换我的所有数据透视表连接,这样我的数据源就可以有密码了。我所有的数据透视表都指向同一个连接,因此使用同一个连接不会导致问题。
提前致谢,如果我需要澄清任何事情,请发表评论。
【问题讨论】:
-
您能否详细说明您正在尝试执行的操作,例如您没有密码的数据类型,以及应该如何绕过密码?另请参阅“How to Ask”以及如何创建minimal reproducible example。更多提示请访问help center。
-
@ashleedawg 好的,请稍后更新我的问题。
标签: vba excel-2010 ado