用于根据时间/日期打开特定Excel文件/表的脚本

时间:2015-11-25 20:59:53

标签: excel batch-file vbscript

我们每个月都有一个包含子文件夹的文件夹,每个子文件夹包含每天的Excel文件。每个Excel文件有三张表,包括早班,晚班和夜班。我想要的是一个脚本,可以检查当前的日期和时间,并打开Excel文件,使用正确的班次表。可以使用时间指定Shift。对于夜班,我需要前一天的Excel文件。

脚本检查检查月份后的年份(打开文件夹2015)(打开文件夹11(例如))然后检查时间和日期(如果是7AM或更早,然后从昨天开始夜班,如果是7AM或更晚,则打开今天的Excel用于提前换班表,如果下午3点或以后开放晚班正确的一天)。 excel文件的名称如下:25.11.2015.xlsx。 文件夹的层次结构是:

X:\ Shifts(这里是VBS脚本)\ 2015 \ 11 \ 25.11.2015.xlsx

这是我到目前为止的代码。它是一个批处理文件,虽然我在某个地方读到了批处理不可能,但我最好再问这里。 我只是不知道应该在哪里添加代码来打开特定的工作表。 *我没有自己编写所有内容,我搜索了很多内容并将特定部分组合在一起。

@echo off
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "data=%dd%.%mm%.%yyyy%"

IF %time:~0,2% GTR 7 (
START "" "Path to file\%DATE:~6,4%\%DATE:~3,2%\%DATE%.xlsm"
)
IF %time:~0,2%== 7 (
START "" "Path to file\%DATE:~6,4%\%DATE:~3,2%\%DATE%.xlsm"
)
IF %time:~0,2% LSS 7 (
START "" "Path to file\%DATE:~6,4%\%DATE:~3,2%\%data%.xlsm"
)

1 个答案:

答案 0 :(得分:0)

使用vbs,您可以控制Excel以显示正确的工作表 不确定您是否可以使用批处理脚本执行此操作,但您可以执行 .vbs ...
.bat

相同

将以下内容保存到 .vbs
应该工作,或接近......

'Folder - x:\shifts\year\month\dd.mm.yyyy.xlsx
'3 sheets - early, late, night
'Check date/time, open Excel file, set active sheet
'If 7AM or earlier open night shift from yesterday
'If 7AM or later open early shift for today
'If 3PM or later open late shift for today

Dim path   'file path
Dim today  'current date
Dim name   'sheet name  

Dim xclApp  'Excel application
Dim xclWbk  'Excel workbook

'set current date
today = Now()
name = ""

'check shift, set sheet name
If Hour(today) < 7 Then
  'modify date
  today = DateAdd("d", -1, today)
  name = "night"
Else
  If Hour(today) < 15 Then
    name = "early"
  Else
    name = "late"
  End If
End If

'set file path
path = "X:\Shifts\" & Year(today) & "\" & Month(today) & "\" & Day(today) & _
       "." & Month(today) & "." & Year(today) & ".xlsx"

Set xclApp = CreateObject("Excel.Application")
xclApp.Visible = True

Set xclWbk = xclApp.Workbooks.Open(path)
xclWbk.Sheets(name).Activate

Set xclApp = Nothing
Set xclWbk = Nothing