Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 关闭excel中每周更改名称的工作簿_Vba_Excel - Fatal编程技术网

Vba 关闭excel中每周更改名称的工作簿

Vba 关闭excel中每周更改名称的工作簿,vba,excel,Vba,Excel,我有一个包含以下宏的文件。基本上,我需要它来关闭所有打开的工作簿,但是我的一个文件名每周都会更改,例如,本周名为Special Services 1503,下周名为Special Services 1504等。您知道如何编辑下面的代码,以便我可以关闭此文件,而无需手动编辑vba中的数字吗 Workbooks("2014 Actuals").Close SaveChanges = True Workbooks("Special Services Budget 2015").Close SaveCh

我有一个包含以下宏的文件。基本上,我需要它来关闭所有打开的工作簿,但是我的一个文件名每周都会更改,例如,本周名为Special Services 1503,下周名为Special Services 1504等。您知道如何编辑下面的代码,以便我可以关闭此文件,而无需手动编辑vba中的数字吗

Workbooks("2014 Actuals").Close SaveChanges = True
Workbooks("Special Services Budget 2015").Close SaveChanges = True
上面的工作,因为没有编辑,下面的工作,但我手动改变每周从1504到1505等周数

Workbooks("Special Services 1504").Close SaveChanges = True

有什么想法吗,伙计们

如果我理解了逻辑,您只需要构建一个动态索引:

firstWeek2015 = 1500 '<-- starting seed
yearFactor = Year(Now()) - 2015 '<-- we take the current year and we subtract 2015: this year it will be 0, next year 1 etc.
weekFactor = WorksheetFunction.WeekNum(Now()) '<--we just take the current week
newIndex = firstWeek2015 + yearFactor*52 + weekFactor
即使我宁愿:

1) Use the same logic that you used to open the file;
2) Use a RegEx-based solution (if "Special Services ????" is the only file of that kind).

我添加这个作为一个单独的答案,因为它与前一个完全不同:

如果且仅当您确定只有该工作簿的名称类似于特殊服务1054,则可以使用如下类似运算符:


正如我在前面的回答中所述,这种方法比另一种方法更可靠,但只有当您100%确定可能没有其他类似名称的工作簿打开时,1504与当前周有任何关系(例如,您能根据日期函数计算出来吗?)怎么样:
FileName=Dir$(“特殊服务预算*.xls*)
?顺便问一下,你是如何在不知道名字的情况下打开它的?嘿,本周与前一周相关,而不是本周,而是你看到的前一周。文件总是在本周的前一周生成。关于如何打开它,我有另一个宏,可以打开并复制文件中的数据,我的原始问题中没有包含这些数据。我意识到在我以前的“newIndex”生成中有一个bug,现在应该可以了(请参阅编辑的代码).有没有办法用相同的代码来代替本周的日期?例如,这是1月的第5周,但该文件现在将被称为“特殊服务1504”@nwaaa,我不这么认为,因为对于您如何描述您的问题,日期不在代码中,而只是工作簿的名称。如果我很好地解决了您的问题,我建议您使用下面的解决方案(这是一个定义名称的算法,但如果您不确定,我宁愿选择“Like*”解决方案。Matteo NNZ-对于您的第二个答案:我猜我必须在52周内写下代码。例如“特殊服务1504”etc@Nwaaaa不,您不必在52周内写下代码,它将始终找到当前打开的工作簿,其名称类似于“特殊服务”“如果是其他内容,它将关闭它。您所需要的只是该代码段。太棒了!我现在就尝试它。非常感谢!非常有用,非常感谢!我不断收到一个错误,说语法错误,您能解释一下”*“是什么吗?”代表?我需要进一步修改代码吗?我刚刚复制并粘贴到我已有的vba代码中。@nwaaa“*”表示查找任何以“特殊服务”开头的wb名称最后,不管如何。上面的代码没有语法错误,你可能复制粘贴了错误的东西。也许你想在这里添加代码,让我看看。
1) Use the same logic that you used to open the file;
2) Use a RegEx-based solution (if "Special Services ????" is the only file of that kind).
For Each objWb In Workbooks
    If objWb.Name Like "Special Services *"
        objWb.Close SaveChanges = True
    End If
Next objWb