excel - 使用单元格引用周期(范围)打开和打印 Excel 工作簿
问题描述
我正在寻找一系列单元格并使用单元格中的每个值打开一个工作簿,然后打印出第一个工作表,关闭工作簿,然后循环到下一个值,直到该范围到达一个空白单元格。
这是我到目前为止所拥有的:
Sub Test()
Dim varCellvalue As Long
Dim rng As Range, rngcell As Range
Dim wb As Long
Set rng = Range("A1:A20")
For Each cell In rng
If Not cell = "" Then
varCellvalue = Range(cell).Value
Workbooks.Open "G:\_QA\Excel Workspace\Projects\Auto-print Processing Forms\Printouts\" & varCellvalue & ".xls"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Workbooks(varCellvalue).Close SaveChanges:=False
On Error Resume Next
End If
Next cell
End Sub
我有一个工作簿来处理每天更新的另一个导入工作表的数据。到目前为止,我已经获得了我需要的所有信息,然后循环浏览生成的列表并使用生成的单元格值打开并打印我需要的工作表。
编辑:
Sub Test()
Dim rng As Range, rngcell As Range
Dim wb As Excel.Workbook
Set rng = Range("A1:A20")
For Each rngcell In rng.cells
If Not rngcell.value = "" Then
Set wb = Workbooks.Open("G:\_QA\Excel Workspace\Projects\Auto-print Processing Forms\Printouts\" & rngcell.Value & ".xls")
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
wb.Close SaveChanges:=False
End If
Next rngcell
End Sub
解决方案
从范围打印
编码
Sub PrintFromRange()
Const cPath As String = "G:\_QA\Excel Workspace\Projects\" _
& "Auto-print Processing Forms\Printouts\"
Const cExt As String = ".xls"
Const cRng As String = "A1:A20"
Dim i As Integer
With Range(cRng)
For i = 1 To .Rows.Count
If .Cells(i, .Column) <> "" Then
With Workbooks.Open(cPath & .Cells(i, .Column) & cExt)
.ActiveSheet.PrintOut Collate:=True, IgnorePrintAreas:=False
.Close False
End With
' Else: Exit For
End If
Next
End With
End Sub
评论
该代码演示了有时不需要使用对象引用。
使用With
语句是分割代码的好方法,即使其更短、更易读。
我不清楚为什么使用Not
并且=
可能比使用更可取<>
。通过这种方式,我专门将它用于对象,通常是If Not ... Is Nothing Then
.
的PrintOut
属性Copies
默认为 1,因此可以安全地省略它。不清楚默认值是什么Collate
,我的 Excel 2003 无法识别IgnorePrintAreas
.
的第一个参数Close
是SaveChanges
所以它可以通过“添加”它的参数来简化(False
在这种情况下)。
通过不使用这些行Else: Exit For
,您允许范围不连续,即当代码“命中”一个空单元格时,它仍然在该范围的以下单元格中搜索,这在这种情况下可能更可取,因为您已经声明了一个小范围。在许多其他情况下,您可能不想忘记包含这些行。
推荐阅读
- javascript - 删除星号.... hasClass & removeClass JQuery 错误
- python - Flask 在 Colab 上发送双重 GET 信号
- heroku - 如何将 Heroku 连接默认行发送到 Salesforce 组织
- python - python:代码没有错误,但没有输出任何东西
- perl - Perl 脚本没有找到最新的文件
- typescript - Azure函数验证打字稿中的令牌
- c# - 如何更改 RadioButton 的内容?
- javascript - 如何从对象数组创建嵌套的对象数组
- python - 如何在熊猫 to_csv 中保留列索引名称
- progress-bar - SeekBar 不会通过 Java 代码更改可绘制的自定义进度