打开/closures工作簿和刷新连接
我有一个共享的networking驱动器上的两个工作簿:
- 工作簿A(表)
- 工作簿B(数据透视表 – 连接到源工作簿A)
我试图在打开工作簿B时运行macros并执行以下操作:
- 在工作簿B上取消保护某个工作表
- 如果工作簿A处于打开状态,请刷新工作簿B上的数据连接
- 如果工作簿A已closures,请打开工作簿A并刷新工作簿B上的数据连接,然后closures工作簿A.
- 保护工作簿B上的某个工作表
下面的代码在大多数情况下的testing到目前为止都是按照预期进行的,但是如果其他人试图在其他人在另一台计算机上打开工作簿A时在其计算机上打开工作簿B,则会将工作簿A作为只读文件打开并保留在他们的电脑上打开。 我需要closures他们的电脑,并保持其他电脑上打开的第一个。
Public Sub RefreshPvt() ThisWorkbook.Worksheets("Sheet1").Unprotect Application.ScreenUpdating = False Application.DisplayAlerts = False Dim wkb As Workbook If IsFileOpen("S:\\Testing\Job Closeout Status Test.xlsx") Then ThisWorkbook.RefreshAll Else Set wkb = Workbooks.Open(filename:="S:\\Testing\Job Closeout Status Test.xlsx") ThisWorkbook.RefreshAll wkb.Close SaveChanges:=False End If ThisWorkbook.Worksheets("Sheet1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub Function IsFileOpen(filename As String) Dim filenum As Integer, errnum As Integer On Error Resume Next ' Turn error checking off. filenum = FreeFile() ' Get a free file number. ' Attempt to open the file and lock it. Open filename For Input Lock Read As #filenum Close filenum ' Close the file. errnum = Err ' Save the error number that occurred. On Error GoTo 0 ' Turn error checking back on. ' Check to see which error occurred. Select Case errnum ' No error occurred. ' File is NOT already open by another user. Case 0 IsFileOpen = False ' Error number for "Permission Denied." ' File is already opened by another user. Case 70 IsFileOpen = True ' Another error occurred. Case Else Error errnum End Select End Function
如果在即时窗口中的工作簿B上运行ThisWorkbook.RefreshAll,它是否工作?
你也可以使XLApp.Visible = true来查看它是否打开
我想你应该使用更像是的东西:
Dim pt As PivotTable For Each pt In ActiveSheet.PivotTables pt.RefreshTable Next pt
要完成整个工作簿,您可以使用:
Sub AllWorkbookPivots() Dim pt As PivotTable Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets For Each pt In ws.PivotTables pt.RefreshTable Next pt Next ws End Sub
- r – Library:gdata – parsing文件时出错,而read.xls无法创buildIntermediate csv
- 使用C#编写Excel文件时出现奇怪的字符
- 如何使用公式在Excel中将单词转换为唯一代码而不使用VBA?
- 为什么单个字母的UDF名称不能使用C或R?
- 在内存中使用Java创build一个Excel文件,并作为字节传递下载
- Access / Excel VBA – 删除显示警报和消息
- Excel自定义数据validation
- 在Microsoft Excel中,select每个组的最大值及其关联的值
- 插入错误:java.sql.SQLException:ORA-00911:无效的字符