我有一个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
答案 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”)。
但这只是打印,我想?我没有看到你的宏在哪里保存文件。