![将打印区域设置为大于 255 个字符的范围](https://linux22.com/image/1551985/%E5%B0%86%E6%89%93%E5%8D%B0%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE%E4%B8%BA%E5%A4%A7%E4%BA%8E%20255%20%E4%B8%AA%E5%AD%97%E7%AC%A6%E7%9A%84%E8%8C%83%E5%9B%B4.png)
我编写了一些 VBA 代码来定义一个有点复杂的范围,我想将工作表的打印区域设置为该范围。但是,当我通过以下方式设置打印区域时
Worksheets("Sheet1").PageSetup.PrintArea = myRange.Address
打印区域似乎被截断为我的范围的前 255 个字符。
我有哪些选项可以仅打印(实际上是保存为 .pdf)我定义的范围?我想避免任何过于手动的操作,因为我要处理大约 150 个工作簿。我使用的是 64 位 Excel 2016。
我知道这里有一个类似的问题(https://stackoverflow.com/questions/11410374/increase-the-maximum-string-length-of-excel-printarea) 但接受的解决方案并不令人满意,因为生成的 pdf 中的页码不正确。
答案1
这些只是权宜之计,而不是修复。尽可能使用宏,例如 #1
隐藏所有不想打印的单元格。打印 A1:z99。取消隐藏所有单元格。
是否临时创建新工作表。
测试
sub macro1()
Location = "A1 B2:B10 C4:C10 "
Position = 1
While (Position < Len(Location))
found = InStr(Position, Location, " ")
if found=0 then found=len(location)
printRange = Mid(Location, Position, (found - Position))
Sheets("Sheet1").Select
Range(printRange).Select
Selection.Copy
Sheets("Sheet2").Select
Range(printRange).Select
ActiveSheet.Paste
Position = found + 1
Wend
End Sub
打印整个临时表。
删除(或不删除)临时表。
与 #2 类似,但你也可以
temp.a1 = 连接(a1、a2、a5、a7、a8、a11)