【发布时间】:2017-04-03 18:51:25
【问题描述】:
这会遍历学生列表,但在打印区域失败,该区域在导出行中设置和编码 - 它为每个学生打印 130 页,而应该只有一个。所有打印机都被调用,打开一个对话框(登录 6 密码)并停止宏 - 打印机是网络上的工作打印机,并不总是可用。 有没有办法阻止打印机被调用? 并控制页面到打印区域?
Option Explicit
Sub PdfExportMacro()
Dim rCell As Range, rRng As Range
'Student numbers in cells A7:A160
Set rRng = Worksheets("studentlist").Range("A7:A160") '<--| set your "students" range
With Worksheets("Feedback") '<--| reference "Feedback" worksheet
For Each rCell In rRng '<--| loop through "students" range
.Range("A1").Value = rCell.Value '<--| write current student number to cell A1 on Feedback sheet
' Export & save file as pdf using SNum as filename:
.ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
"Macintosh HD:Users:Michael:Desktop:" & rCell.Value, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Next rCell
End With
End Sub
【问题讨论】:
-
您那里的代码,它将始终将反馈复制到反馈表中的单元格 A1,然后将其导出为新文件。这意味着您将拥有 130 个 PDF 文件。这是你想要的吗?还有你用什么打印代码?
-
嗨 Niclas,感谢您查看此内容。复制到单元格 A1 的值是学生列表表中的学生编号 - 该循环工作正常,发生的情况是创建的 pdf - 反馈表中应该只有 1 张(定义的打印区域),而不是 130 页工作表上的数据(这是巨大的,...)。如果我理解正确,唯一的打印代码是导出格式语句。
-
不确定我是否理解。当前代码将创建 130 个 pdf 文件,而不是 130 页。它将学号复制到反馈表中的A1,然后将其保存为“学号.pdf”。那么根据您想要实现的目标,这是错误的吗?什么是打印区域?
-
好的,我们的想法是创建 160 个 pdf 文件 - 每个学生一个。该循环工作正常。但是,当它导出为 pdf 时,它实际上会获取所有工作表上的所有数据并创建一个包含 128 页不需要的数据的文件,而不是它应该使用的 1 页反馈(打印区域是 E3:W77 在反馈工作表)。这是反馈表上设置的打印区域 - 没有设置其他打印区域。
-
当我运行代码时,我会得到每个学生 1 个 pdf,其中学生号作为文件名。所以我不明白你是如何得到你的输出的?打印到A4打印区域会不会有点奇怪?