使用宏,我有一个工作簿,如果尚未打开,我想打开它,添加/修改页眉,然后在关闭时保存。
一切似乎都正常,直到保存并关闭部分。当我在保存工作簿之前检查时,页面标题就在那里。关闭并保存更改后,我打开工作簿,发现标题丢失了。
我使用网络驱动器,因此我尝试使用 C: 驱动器,以防万一出现网络问题(可能性极小,但我正在寻找任何原因)。 我尝试保存工作簿,重新打开它,更改页眉,然后重新保存。 我尝试在保存时重命名工作簿。 我确实需要为标头使用一个变量,因为当我运行它时它会发生变化。我在这里将其设置为“星期六”,以便使代码尽可能简单。
每次重新打开工作簿时标题都会消失。如果我手动执行此操作,这一切都有效,但在使用宏执行此操作时则无效。
Option Explicit
Sub Header_Test()
Dim WB As Workbook
Dim wPathName, wBookName, wExt, wFullPathName As String
Dim LHeader As String
wPathName = "C:\Temp\"
wBookName = "Header Test"
wExt = ".xlsx"
wFullPathName = wPathName & wBookName & wExt
LHeader = "Saturday"
'Open workbook (if not open) and make it active.
For Each WB In Workbooks
If WB.Name = wBookName Then 'If Header Test workbook is open then make it active.
WB.Activate
Else
Workbooks.Open (wFullPathName) 'Workbook isn't open so open it.
End If
Next WB
'Add left header.
Application.PrintCommunication = False
With Sheets("Sheet1").PageSetup
.LeftHeader = "&24 " & LHeader
.HeaderMargin = Application.InchesToPoints(0.3)
.Orientation = xlPortrait
.PaperSize = xlPaperLetter
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
End With
'Save and close
Workbooks(wBookName).Close savechanges:=True
End Sub
我已经在 M365 上测试了代码,没有标题设置问题
检查打开的工作簿的代码有错误。如果工作簿
Header Test
打开,但它不是第一个工作簿。您的代码Workbooks.Open (wFullPathName)
尝试再次打开它。
请尝试一下。
Dim bExist As Boolean
For Each WB In Workbooks
If WB.Name = wBookName Then 'If Header Test workbook is open then make it active.
WB.Activate
bExist = True
Exit For
End If
Next WB
If Not bExist Then
Workbooks.Open (wFullPathName) 'Workbook isn't open so open it.
End If