有没有办法避免error handling程序的帮助下execel vba错误9

Sub my code () Windows."mysheet.xlsm".activate end sub 

我想从我的办公室网站上提取每日报告。 名称应该根据date每天更改(例如“ Detail report 11 28 2014.xls ”)。 所以,如果我运行我的代码,它将最终出现错误( error 9 ),所以我的macros变得无用。 请给我一个解决scheme

如果这个名字的结构总是一样的,而它所改变的只是名字(因为日子过去了),那么你可以:

A.今天创build工作簿名称的datestring:

 Dim todayYear As Integer: todayYear = Year(Now()) Dim todayMonth As Integer: todayMonth = Month(Now()) Dim todayDay As Integer: todayDay = Day(Now()) 'following to put the "0" before the number in case it is < 10 If todayMonth < 10 Then todayMonth = "0" & todayMonth If todayDay < 10 Then todayDay = "0" & todayDay 'so you build your string MM DD YYYY Dim myName As String: myName = todayMonth & " " & todayDay & " " & todayYear 

B.定义你今天的工作簿名称:

 Dim myWorkbookToday As String: myWorkbook = "Detail report " & myName & ".xls" 

C.激活你的工作簿:

 Windows(myWorkbookToday).Activate 

从代码结构的angular度来看,具体来说,我会把点A和B放到一个函数中,直接返回我今天需要的名字:

 Public Function nameToday() As String 'code of the points A and B here nameToday = myWorkbookToday End Function Sub myCode() Windows(nameToday).Activate End Sub 

function名称的示例输出今天

  • 2014年11月28日,返回nameToday = "Detail report 11 28 2014.xls"
  • 2014年11月29日,返回nameToday = "Detail report 11 29 2014.xls"
  • 等等