如何在VB.NET中动态更改PivotTable的源文件路径?
动态修改数据透视表CSV源文件的正确方法
PivotTable.ChangeConnection方法不能直接传入文件路径字符串,它要求接收一个WorkbookConnection对象,所以你直接传路径会触发错误。以下是两种可行的实现方式:
方式一:修改现有连接的源路径
如果你的透视表已经关联了一个CSV类型的连接,直接修改该连接的路径即可:
Dim strCSV_Location As String strCSV_Location = "\\...\massprops.csv" ' 获取透视表对应的连接对象 Dim pivotConn As WorkbookConnection Set pivotConn = MPPivotTable.PivotCache.WorkbookConnection ' 更新连接的路径信息 With pivotConn.OLEDBConnection .Connection = "TEXT;" & strCSV_Location .CommandText = strCSV_Location .Refresh ' 刷新连接获取新数据 End With ' 刷新透视表展示最新数据 MPPivotTable.RefreshTable
方式二:新建连接并关联到透视表
如果需要创建全新的CSV连接来替换原有连接:
Dim strCSV_Location As String strCSV_Location = "\\...\massprops.csv" Dim newConn As WorkbookConnection ' 创建新的CSV文本连接 Set newConn = ThisWorkbook.Connections.Add2( _ Name:="CSV_Source_Connection", _ Description:="动态关联的CSV数据源", _ ConnectionString:="TEXT;" & strCSV_Location, _ CommandText:=strCSV_Location, _ lCmdtype:=xlCmdText, _ CreateModelConnection:=False, _ ImportRelationships:=False _ ) ' 将透视表切换到新连接 MPPivotTable.ChangeConnection newConn ' 刷新透视表 MPPivotTable.RefreshTable
注意事项
- 确认CSV文件路径正确,且当前用户对该路径有读写权限
- 若使用Excel 2016及更早版本,需将
Add2替换为Add方法,参数略有调整 - 修改或切换连接后必须调用
RefreshTable,否则透视表不会加载新数据源的数据
内容的提问来源于stack exchange,提问作者BladesAero
相关产品推荐
相关产品推荐

