【问题标题】:VBA EXCEL Setting print range based on dateVBA EXCEL根据日期设置打印范围
【发布时间】:2014-11-18 08:27:31
【问题描述】:

基本上,我有每天更新的工作表,并且希望能够将其设置为每周自动打印。每周假设星期五它将打印最后 7 天的数据(7 天 = 最后 7 行)。

我已经在运行 .vbs 宏的任务计划程序的帮助下进行了管理,以自动打开 Excel 工作表,打印然后关闭。

如何将最后一步添加到此自动化中,即仅打印当前周数据而不是整个工作表。

所以我需要可指定的列范围和行范围,也许可以与 Excel 的 TODAY 函数结合使用?如果可能的话。

【问题讨论】:

  • 总是很高兴分享您的代码,这样您就可以向我们展示您在代码中遇到的问题。
  • @Chrismas007 好的,很高兴知道,但在这种特殊情况下,除了正在工作的打开工作表>打印工作表>关闭工作表之外,我还没有任何工作代码。但它仍然在这里:Dim XLApp Dim XLWkb Set XLApp = CreateObject("Excel.Application") xlapp.visible = true xlapp.workbooks.open "C:\Users\User\Desktop\luboil.xlsx" xlapp.activeworkbook.worksheets("sheet2").printout xlapp.activeworkbook.close xlapp.quit 我通过任务计划程序运行这个可执行文件。我只需要在打印之前指定打印范围,但我会在工作表中使用宏。

标签: excel vba date printing


【解决方案1】:

如果总是最后7行那么

Dim XLApp
Dim XLWkb
Set XLApp = CreateObject("Excel.Application")
xlapp.visible = true
xlapp.workbooks.open "C:\Users\User\Desktop\luboil.xlsx"
    Dim LastRow As Long
    Dim LastCol As Long
        LastRow = xlapp.activeworkbook.worksheets("sheet2").Range("A" & .Rows.Count).End(xlUp).Row
        LastCol = xlapp.activeworkbook.worksheets("sheet2").Cells(LastRow, Columns.Count).End(xlToLeft).Column
        xlapp.activeworkbook.worksheets("sheet2").PageSetup.PrintArea = xlapp.activeworkbook.worksheets("sheet2").Range(Cells(LastRow - 7, 1), Cells(LastRow, LastCol)).Address
xlapp.activeworkbook.worksheets("sheet2").printout
       xlapp.activeworkbook.worksheets("sheet2").PageSetup.PrintArea = ""
xlapp.activeworkbook.close
xlapp.quit

【讨论】:

  • 我将代码放在“ThisWorkbook”excel 对象工作簿中,而不是通用的,因此代码在工作表启动时运行,我收到:无效或不合格的参考,即使我将其设置为单独的宏并手动运行它我仍然得到同样的错误
  • 您需要将我的代码放入您现有的代码中...我将更新我的代码以反映这一点。