1

我正在尝试每周进行一次自动文件夹生成过程。我们收到了时间表,我们必须将它们放入一个有组织的文件夹结构中(它位于共享驱动器上,例如:Y:\Timesheets\2013-09-22"(对于截至 9 月 22 日的那一周的时间表) ). 该文件夹将包含与员工姓名相关的文件夹。

我们使用始终保持最新的最新信息的 Excel 勾选表,以确保我们已收到时间表。我在想我可以每周进行一个自动文件夹生成过程,而不是从下周到下周复制和粘贴每个空文件夹(因为它传输了很多根本不使用的旧文件夹)。

到目前为止,我可以用这个创建文件夹:

Sub CreateDirs()

    createDirsFromRange "Z:\Timesheets", "2013-10-13", Range("B2:B182")

End Sub

我唯一的问题是:

  1. 我可以让该代码的日期部分从 PC 获取日期(因此每周日运行它)以确保每个文件夹的标题正确吗?

  2. 我可以运行一个批处理文件来打开 Excel 电子表格,运行 VBA 代码然后再次关闭它吗?如果是这样,那将是什么编码?

4

3 回答 3

2
  1. 使用该Date()功能(有关更多选项,请参阅此链接)

  2. 一个解决方案可能是:

在您的批处理中,只需运行 excel 将您的工作簿文件名作为参数:

"C:\Program Files\...\excel.exe" "C:\...\myworkbook.xls"

然后,您可以使用Workbook.Open事件和Workbook.Close函数,以便您的宏在每次打开工作簿时运行(因此您只需使用批处理文件打开它)。

Private Sub Workbook_Open() 
    ' Call your macro here
    ThisWorkbook.Close()
End Sub

但这意味着宏每次都会运行,因此如果没有运行宏并且工作簿自动关闭,您将无法打开工作簿......

因此,您可以考虑使用特定的命令行参数来触发宏执行(请参阅此链接

于 2013-09-20T14:34:30.753 回答
0

我假设您在 Windows 环境中。如果是这样,为什么不直接使用 Windows 任务计划程序?它是内置的,您可以告诉它每周日或一周中的任何一天启动您的 Excel 工作表(或 BAT 文件)。

这是Windows 7版本的链接。另一个用于Windows XP版本。

这是一个关于如何使用 BAT 文件提取当前日期的非常好的页面的链接。您可能会弄清楚如何编辑它以满足您的需求。

于 2013-09-20T16:11:48.153 回答
0

就 1) 而言,将日期字符串更改为Date$,这将以可接受的格式 (mm-dd-yyyy) 为您提供当前日期。

就 2) 而言,与其尝试自动化这部分,为什么不在周五业务结束时或周五文件打开时运行代码?您可以使用此代码作为您的日期(以显示星期日而不是星期五的日期)mid(date$,1,3) & mid(date$,4,2)+2 & mid(date$,6,5):.

于 2013-09-20T14:39:35.837 回答