Есть ли способ указать диапазон PDF по имени листа в Excel через VBA? - PullRequest
0 голосов
/ 15 января 2020

Таким образом, в примере кода, подобном приведенному ниже, он работает в PDFing, специфицируя c листов в Excel, указав номер листа #, но есть ли способ указать диапазон PDF по имени листа вместо числа?

Sub createPdf()

Dim SheetArr() As String
Dim i As Integer
Dim startSheet As Integer
Dim endSheet As Integer

startSheet = 1
endSheet = 2
Dim folderPath As String
folderPath = "C:\Users\xxxx\Desktop\Pdfs" 'change to your 
user.
MkDir (folderPath)

For Each ws In ThisWorkbook.Worksheets 'This statement 
starts the loop
If ws.Index >= startSheet And ws.Index <= endSheet Then ' <> 
"Sheet3" Then
    ReDim Preserve SheetArr(i)
    SheetArr(i) = ws.Name

    i = i + 1
    Debug.Print (ws.Name)

End If
Next

Sheets(SheetArr).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, 
Filename:=folderPath & "\Sales", _
openafterpublish:=False, ignoreprintareas:=False

MsgBox "All done with pdf's"

End Sub

1 Ответ

2 голосов
/ 15 января 2020

Если я правильно понимаю, вы хотите начать с этого подпункта, изменив это:

startSheet = 1
endSheet = 2

На имена листов вместо их номера индекса. Это можно легко сделать, добавив листы в качестве ссылки и получив код, извлекающий из них индекс, заменив вышеприведенное на следующее:

startSheet = Sheets("Start sheet name here").Index
endSheet = Sheets("End sheet name here").Index

Остальная часть кода будет работать так же, как и раньше.

Обратите внимание, что вместо жесткого кодирования это можно сделать с помощью простого поля ввода:

startSheet = Sheets(InputBox("Sheet name?", "CreatePDF")).index

Это может сделать его более доступным и удобным для пользователя, чем необходимость все время путаться с кодом VBA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...