Печатать только выбранные листы ... но вместо этого активный лист продолжает печатать - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь перебрать все активные листы и сохранить их в виде отдельных файлов PDF.

dim ws as worksheet
dim path as string
...
For Each ws In ActiveWindow.SelectedSheets
    ws.ExportAsFixedFormat _
        xlTypePDF, _
        Filename:=path & ws.Name, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, _
        OpenafterPublish:=False
Next

Это работает:

Файл PDF создается для каждого выбранного листа в правильной папке ... но ...

Содержимое этихPDF файлы все одинаковые.Это Активный Лист, который печатается каждый раз, но с другим именем файла.

Как это исправить?Имейте в виду, я хочу, чтобы печатались только выбранные листы.

РЕДАКТИРОВАТЬ: Я слишком новичок, чтобы upvote.Спасибо за ваши ответы!

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Вам необходимо Select лист перед печатью.Просто добавьте команду ws.Select прямо перед ws.ExportAsFixedFormat, и она будет работать:

For Each ws In ActiveWindow.SelectedSheets
    ws.Select '<-- the only thing you have to add.
    ws.ExportAsFixedFormat _
        xlTypePDF, _
        Filename:=path & ws.Name, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, _
        OpenafterPublish:=False
Next

Кроме этого:

  • Совет 1: , чтобы избежатьвидя, как листы перепрыгивают снова и снова, вы можете добавить Application.ScreenUpdating = False до начала цикла и затем установить его обратно в Application.ScreenUpdating = True в конце цикла.
  • Совет 2: для удобства пользователя вы можете получить текущий активный лист в начале цикла с помощью Dim currentlySelectedSheet As Worksheet: Set currentlySelectedSheet = ActiveSheet, а когда цикл заканчивается, вы просто выбираете его обратно с помощью currentlySelectedSheet.Select чтобы пользователь не увидел изменений на своем экране при запуске макроса.
0 голосов
/ 25 февраля 2019

вы можете указать это, прежде чем экспортировать в pdf enter image description here

0 голосов
/ 25 февраля 2019
Option Explicit

Sub Save_SelectedSheets_AsPdf()

Dim ws As Worksheet
Dim path As String
Dim actSheet As Worksheet
'...
Set actSheet = ActiveSheet
For Each ws In ActiveWindow.SelectedSheets
    ws.Select
    ws.ExportAsFixedFormat _
        xlTypePDF, _
        Filename:=path & ws.Name, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, _
        OpenafterPublish:=False
Next
actSheet.Select
End Sub

Sub Create_5_Sheets_and_name_them()
    Dim iCt As Integer
    For iCt = 2 To 5
        Sheets.Add after:=Sheets(Sheets.Count)
        ActiveSheet.Name = "Sh" & iCt
        Range("A1").Value = ActiveSheet.Name
    Next iCt
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...