1
我有以下VBA代碼,我致電ThisWorkbook_Open
,該代碼將檢查當天並查看該周是否有工作表(其時間表供人填寫) 。它會查看最近一週(從星期六開始)是否已經是有效工作表,如果不是,那麼它知道本週已經結束,並生成該周的報告(以PDF格式),併爲當週創建一個新工作表。通過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: Method 'SaveAs' or object '_Workbook' failed
錯誤,但是如果我停止共享工作簿,然後它的工作原理精細。顯然,評論出runReport
行也使它工作正常。
工作簿需要共享(因爲它是許多人使用的時間表),所以刪除共享不是一個選項。
任何想法?由於