创建动态Excel宏以打印到PDF

时间:2014-10-23 17:22:03

标签: excel vba excel-vba office-2013

我有一个excel文档,里面有几百行。基本上,该文档包含用户列表,其中包含每个用户的信息。每个用户可以拥有多行不同的信息。

我在过去几个小时内一直在尝试创建一个宏,允许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"和"用户3"等等。

我尝试使用"记录宏"选项与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

1 个答案:

答案 0 :(得分:0)

我不会使用autofilter。

我会按用户名排序,然后创建一个打印的循环“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) <> ""

这假设您的用户ID位于第1列(“A”)。

但这只是打印,我想?我没有看到你的宏在哪里保存文件。