Я делаю книгу Excel для Windows и Mac. У меня есть кнопка в моей рабочей книге, которая позволяет пользователю ПЕЧАТЬ рабочих листов по своему выбору, и еще одна, которая позволяет им создавать PDF-файлы рабочих листов по своему выбору.
Обе кнопки отлично работают в Windows. На Mac 2016/2019/365 кнопка PDF работает нормально. Это кнопка PRINT, которая иногда вызывает проблемы. Он не работает должным образом, когда пользователь нажал кнопку PDF до , нажав кнопку PRINT. В этом случае строка кода .PrintOut либо выдает ошибку, либо сохраняет файл PDF вместо печати.
Если я закрою книгу и снова открою ее, она будет печататься очень хорошо до тех пор, пока не создаст PDF, а затем проблема повторится снова. Я чувствую, что это может быть ошибка в Excel для Mac, но я не уверен на 100%. Я могу проверить его только на одном компьютере Mac, поэтому знаю, что, возможно, это как-то связано с моим компьютером.
Вот простой код для проверки этого. Я ценю любого, кто попробует это на своем Mac и сообщит мне результаты.
Sub PrintButton()
'this should send Sheet1 to the default printer
ThisWorkbook.Sheets("Sheet1").PrintOut Preview:=False, IgnorePrintAreas:=False
End Sub
Sub PDFButton()
'this should create a PDF file of Sheet1 on the Desktop of the Mac
Dim UserName As String
Dim FileNameAndPath As String
ThisWorkbook.Sheets("Sheet1").Activate
UserName = MacScript("do shell script ""echo $USER""")
FileNameAndPath = "/Users/" & UserName & "/Desktop/TestPDF.pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
FileNameAndPath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False
End Sub
Способ проверить это:
Запустите подпрограмму PrintButton. Он должен отправить «Лист1» на ваш принтер.
Запустите сабвуфер PDFButton. Он должен создать PDF «Sheet1» на вашем рабочем столе.
Запустите саб PrintButton снова. Вот где проблема происходит для меня. Мне интересно, работает ли он правильно для вас или вы получаете сообщение об ошибке? Я получил ошибку во время выполнения 1004. (Я видел при некоторых обстоятельствах, что вместо того, чтобы печатать лист здесь или выдавать ошибку, он создает PDF, когда попадает в строку .PrintOut.)