【发布时间】:2018-12-22 01:01:12
【问题描述】:
我正在查看一系列单元格并使用单元格中的每个值打开工作簿,然后打印出第一个工作表,关闭工作簿,然后循环到下一个值,直到范围达到空白单元格。
这是我目前所拥有的:
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
【问题讨论】:
-
你不需要 range(cell).value,cell.value 应该为你做
-
然后我的宏返回不匹配错误?
-
另外,除非你所有的电子表格都是数字,否则我不会让 varcellvalue 长。我认为你甚至不需要它,你可以在整个过程中使用 cell.value。 wb 应该是 Excel.workbook,而不是很长。
-
废话,再来一张,用。设置 wb = workbooks.open(... etc 然后 wb.selected... 和 wb.close
-
好的,还没有完成。使用保留字作为变量是不好的形式,单元格应该有不同的拼写,也许是 rngCell?我相信您可能想要做一些类似“为 rng.cells 中的每个 rngCell”的事情,但没有那么自信。
标签: excel vba if-statement printing