VBA ADO Excel 2010
VBA ADO Excel 2010
您好,我正在使用具有 46 个枢轴 tables 的 excel 文件。下面的代码将每个枢轴 table 的连接更改为新的现有连接。
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
我希望我的枢轴 tables 的所有内容都保持不变,但我想要连接到的文件的密码。由于 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
上面的代码将访问外部存储的受密码保护的工作簿中的 table。然后使用记录集在调试中打印出所有项目。
我想在第二个代码片段中使用我的变通方法,这样我就可以替换我所有的枢轴 table 连接,这样我的数据源就可以有密码了。我的所有枢轴 table 都指向相同的连接,因此使用相同的连接不会导致问题。
在此先感谢,如果我需要澄清任何内容,请发表评论。
IIR 没有可以执行此操作的数据提供程序。即使您尝试将密码存储在连接字符串中,该驱动程序也会给出“无法解密文件”的错误。
第二段代码基本上是绕过这个问题的 hack,它依赖于 Excel 来管理用户的凭据提示。它 not 解决了您无法在连接字符串中提供密码的问题 - 这是一种变通方法。鉴于您无法提供适用于 ADO 的连接字符串,您也无法将其提供给存储的连接字符串。
我建议为后端使用实际数据库而不是 Excel 文件。这将使您更灵活地管理用户访问权限。
您好,我正在使用具有 46 个枢轴 tables 的 excel 文件。下面的代码将每个枢轴 table 的连接更改为新的现有连接。
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
我希望我的枢轴 tables 的所有内容都保持不变,但我想要连接到的文件的密码。由于 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
上面的代码将访问外部存储的受密码保护的工作簿中的 table。然后使用记录集在调试中打印出所有项目。
我想在第二个代码片段中使用我的变通方法,这样我就可以替换我所有的枢轴 table 连接,这样我的数据源就可以有密码了。我的所有枢轴 table 都指向相同的连接,因此使用相同的连接不会导致问题。
在此先感谢,如果我需要澄清任何内容,请发表评论。
IIR 没有可以执行此操作的数据提供程序。即使您尝试将密码存储在连接字符串中,该驱动程序也会给出“无法解密文件”的错误。
第二段代码基本上是绕过这个问题的 hack,它依赖于 Excel 来管理用户的凭据提示。它 not 解决了您无法在连接字符串中提供密码的问题 - 这是一种变通方法。鉴于您无法提供适用于 ADO 的连接字符串,您也无法将其提供给存储的连接字符串。
我建议为后端使用实际数据库而不是 Excel 文件。这将使您更灵活地管理用户访问权限。