通过VBA将共享工作簿中的工作表另存为PDF

通过VBA将共享工作簿中的工作表另存为PDF,vba,pdf,excel,Vba,Pdf,Excel,我在打开工作簿时调用了以下VBA代码,该代码将检查当天,并查看是否有该周的工作表,这是供人们填写的时间表。它查看从周六开始的最近一周是否已经是有效的工作表,如果不是,它知道该周已经结束,并以PDF格式生成该周的报告,并为当前周创建新的工作表 Sub getFirstDayofWeek() Application.ScreenUpdating = False Dim ws As Worksheet Dim summWS As Worksheet Dim loopSht As Worksheet D

我在打开工作簿时调用了以下VBA代码,该代码将检查当天,并查看是否有该周的工作表,这是供人们填写的时间表。它查看从周六开始的最近一周是否已经是有效的工作表,如果不是,它知道该周已经结束,并以PDF格式生成该周的报告,并为当前周创建新的工作表

Sub getFirstDayofWeek()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim summWS As Worksheet
Dim loopSht As Worksheet
Dim thisWeek As String, lastWeek As String
Dim dateExists As Boolean
dateExists = False
Set summWS = ThisWorkbook.Sheets("Summary")
thisWeek = Format(Now() - Weekday(Now(), vbSaturday) + 1, "ddmmyy")
lastWeek = Format(Now() - Weekday(Now(), vbSaturday) - 6, "ddmmyy")
For Each loopSht In ThisWorkbook.Worksheets
If loopSht.Name = thisWeek Then
dateExists = True
Exit For
End If
Next
If dateExists Then
Debug.Print "Do nothing"
Else
Debug.Print "Do something"

runReport ("\\save\report\here\")

Sheets("Template").Copy After:=Sheets("Summary %")
Set ws = ActiveSheet
ws.Name = thisWeek
ws.Range("A1").Value = Now() - Weekday(Now(), vbSaturday) + 1
summWS.Rows("25:26").Copy
summWS.Rows("25:25").Insert Shift:=xlDown
Application.CutCopyMode = False
summWS.Rows("5:26").Replace What:=lastWeek, Replacement:=thisWeek, LookAt:=xlPart
End If
Sheets(thisWeek).Activate
Application.ScreenUpdating = True
End Sub
还有那艘救生艇

Sub runReport(Optional fileString As String = "C:\Temp\")
Dim reportWeek As String, filePath As String

If Right(fileString, 1) <> "\" Then
fileString = fileString & "\"
End If

reportWeek = Format(Now() - Weekday(Now(), vbSaturday) - 6, "ddmmyy")

If Dir(fileString, vbDirectory) = vbNullString Then
fileString = "\\another\backup\failsafe\path\"
MsgBox "Filepath not found. Will be saved as " & fileString
End If

filePath = fileString & "Times PDF - " & reportWeek & ".pdf"
Sheets(Array("Summary", "Summary %", reportWeek)).Select
Application.DisplayAlerts = False
ThisWorkbook.SaveAs filePath, 57
Application.DisplayAlerts = True

End Sub
我发现在共享工作簿时,打开时会出现1004:方法“SaveAs”或对象“\u工作簿”失败错误,但是如果取消共享工作簿,则工作正常。显然,注释runReport行也可以使其工作良好

该工作簿需要作为时间表共享,供许多人使用,因此不能删除共享


有什么想法吗?谢谢

我忘记了这个问题

找到了解决此问题的方法。这并不能完全解决为什么它在这个实例中不起作用,但我在保存PDF文件的同时在VBA中短暂取消了工作簿的共享,然后立即重新启用共享

不理想,也不确定如果其他人在那个时候打开它,是否会引起任何问题,但它满足了我的需要,因为我们中只有少数人使用它,而且我们彼此距离都很近