Возможно ли это?
Да.Это возможно.
Во-первых, некоторая очистка.Я удалил 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
Отказ от ответственности: У меня еще не было возможности проверить этот код.