我发现一个严重问题就是,共享模式只能玩一些低端的操作,稍微高端一点的操作,会带来无穷无尽的问题.所以,解题思路需要变通.
我现在的思路就是:做一个"数据源文件,启用共享,大家都可以编辑.
然后每个用户有一个本机的查询文件,直接引用"共享文件夹"里的这个数据源文件,不开启共享功能,这样也许就可以玩各种高级功能,比如数据透视表,vba什么的...
这个问题本身也简单,用vba关闭共享,刷新透视表,再开启共享,就算解决了.之后会产生新问题:共享功能无法关闭.可以单独运行"取消共享"的宏.
Sub 按钮1_Click()
Call stopshare
ActiveSheet.PivotTables("数据透视表1").PivotCache.Refresh
Call startShare
End Sub
Sub startShare() '开始共享
If Len(ThisWorkbook.FullName) = 0 Then
MsgBox "文件没有保存"
Exit Sub
End If
Application.DisplayAlerts = False
ActiveWorkbook.ProtectSharing Filename:=ThisWorkbook.Name
Application.DisplayAlerts = True
End Sub
Sub stopshare() '取消共享
On Error Resume Next
Application.DisplayAlerts = False
'MsgBox ActiveWorkbook.MultiUserEditing
ActiveWorkbook.UnprotectSharing
ActiveWorkbook.ExclusiveAccess
Application.DisplayAlerts = True
End Sub
一、VBA代码
用一段简单的VBA代码,可以实现如下效果:当数据源中的数据更改后,切换到包含数据透视表的工作表中时,数据透视表将自动更新。假如包含数据透视表的工作表名称为“Sheet1”,数据透视表名称为“数据透视表1”。
1.按Alt+F11,打开VBA编辑器。
2.在“工程”窗口中,双击包含数据透视表的工作表,如此处的“Sheet1”表。
3.在右侧代码窗口中输入下列代码:
Private Sub Worksheet_Activate()
Sheets("Sheet1").PivotTables("数据透视表1").RefreshTableEnd Sub
4.关闭VBA编辑器。
二、打开工作簿时自动刷新数据透视表
Excel 2003:
1.右击数据透视表,在弹出的快捷菜单中选择“表格选项”。弹出“数据透视表选项”对话框。
2.在“数据源选项”下方选择“打开时刷新”。
3.单击“确定”按钮。
Excel 2007:
1.右击数据透视表,在弹出的快捷菜单中选择“数据透视表选项”。弹出“数据透视表选项”对话框。
2.选择“数据”选项卡,选择“打开文件时刷新”。
3.单击“确定”按钮。
这样,以后当更改数据源并保存后,重新打开该工作簿时,数据透视表将自动刷新。