2014-10-23 2 views
0

У меня есть документ excel с несколькими сотнями строк в нем. В основном документ содержит список пользователей с информацией для каждого пользователя. Каждый пользователь может иметь несколько разных строк информации.Создать динамический макрос Excel для печати в PDF

Я пытаюсь в течение последних двух часов создать макрос, который позволяет файлу excel сортировать пользователей в соответствии с их именем, затем брать имена и печатать их в pdf-документе с тем именем и датой, имя файла.

Example:

    1 User1 data data data 2 User1 data data data 3 User1 data data data
    4 User2 data data data 5 User2 data data data
    6 User3 data data data 7 User3 data data data 8 User3 data data data 9 User3 data data data

Так в основном столбец с именем "user1" должно быть напечатано со всеми этими строками информации в свой собственный PDF документ. То же самое относится к «User2» и «User3» и тому подобное.

Я попытался использовать опцию «Record Macro» с Excel, но это больше дало мне идеи, а не рабочее решение. Это мой рекордный макрос, хотя он не очень хорош для того, что я хочу делать. Если кто-то может дать некоторые рекомендации или оказать некоторую помощь, я бы очень признателен.

Спасибо

Sub ExportnamestoPDF2() ' ' ExportnamestoPDF2 Macro ' ' Keyboard Shortcut: Ctrl+j ' ActiveWindow.SmallScroll Down:=-36 Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter ActiveWorkbook.Worksheets("document - Copy").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("document - Copy").AutoFilter.Sort.SortFields.Add Key:= _ Range("B1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("document - Copy").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Rows("2:4").Select Selection.PrintOut Copies:=1, Collate:=True End Sub

ответ

0

я бы не использовать автофильтр.

Я хотел бы сортировать по имени пользователя, а затем создать цикл «A», который печатает, и цикл «B» внутри строки, которая идет строка за строкой и оценивает имя пользователя для изменений.

Что-то вроде:

i = 2 
lastRow = 0 
Do 
    firstRow = i 
    Do 
    If Cells(i, 1) <> Cells(i + 1, 1) Then 
     lastRow = i 
    End 
    i = i + 1 
    While lastRow < i 
    Rows(firstRow & ":" & lastRow).PrintOut Copies:=1, Collate:=True 
While Cells(i, 1) <> "" 

Это предполагает, что ваш идентификатор пользователя в столбце 1 ("A").

Но это только печатает, я думаю? Я не вижу, где ваш макрос сохраняет файл в любом месте.