VBA - итерация по выпадающему / проверочному списку и сохранение сгенерированных листов в один PDF - PullRequest
0 голосов
/ 09 декабря 2018

Я выполняю итерацию по выпадающему / проверочному списку в данной ячейке:

Sub SpitValues()
Dim dvCell As Range
Dim inputRange As Range
Dim c As Range
Dim i As Long

'Which cell has data validation
Set dvCell = Worksheets(3).Range("D4")
'Determine where validation comes from
Set inputRange = Worksheets(2).Range("C4:C5")

i = 1
'Begin our loop
Application.ScreenUpdating = False
For Each c In inputRange
    dvCell = c.Value

    i = i + 1
Next c
Application.ScreenUpdating = True

End Sub  

На каждой итерации мне нужно сохранять весь Рабочий лист (3) в переменную, и в конце мне нужно сохранить все сохраненные Рабочие листы водин PDF, где каждая итерация данных будет на отдельной странице.Так, если у меня есть, например, пять элементов в выпадающем / проверочном списке, будет PDF с пятью страницами.Является ли это возможным?

1 Ответ

0 голосов
/ 09 декабря 2018

Возможно ли это?

Да.Это возможно.

Во-первых, некоторая очистка.Я удалил i, так как вы не используете эту переменную.Я не выключил обновление экрана, потому что вы хотите извлечь каждую итерацию.Но, да, отключение обновления экрана обычно является хорошим показателем производительности.

Общий алгоритм для этого:

Identify where you are going to store the new pages
Make the change
Copy the page to the new store
loop
print

Вы уже выполнили некоторые из них, теперь, чтобы завершитьjob.

Sub SpitValues()
    Dim dvCell As Range
    Dim inputRange As Range
    Dim c As Range
    Dim NewWorkbook as workbook

    'Which cell has data validation
    Set dvCell = ThisWorkbook.Worksheets(3).Range("D4")
    'Determine where validation comes from
    Set inputRange = ThisWorkbook.Worksheets(2).Range("C4:C5")
    Set NewWorkbook = Application.Workbooks.Add

    'Begin our loop
    For Each c In inputRange
        dvCell = c.Value
        ThisWorkbook.Worksheets(3).Copy Before:=NewWorkbook.Sheets(NewWorkbook.Sheets.Count)  ' should insert this before the blank sheet at the end.
    Next c
'After this loop, print/save the new workbook. Change the file name to something suitable
    NewWorkbook.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:="Whatever", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False

End Sub  

Отказ от ответственности: У меня еще не было возможности проверить этот код.

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