VBA:根据工作簿名称确定date

我有一个工作表,每个月都会收到MONTH YEAR Report (例如January 2016 Report

除了月份和年份之外,报告还包含工作表中的所有必要信息。 有没有办法将基于工作簿名称的月份和年份拉到一列?

另一种方式来实现这个名字结构

 Sub GetMonthAndYear() Dim i As Integer, yr As Integer Dim na As String, mnth As String Dim arr na = ThisWorkbook.Name For i = 1 To 12 If InStr(1, na, MonthName(i, True)) > 0 Then mnth = MonthName(i) Exit For End If Next i arr = Split(na, " ") On Error Resume Next yr = Join(Filter(arr, 19), "") yr = Join(Filter(arr, 20), "") On Error GoTo 0 If yr = 0 Then MsgBox "Can't find year of report for " & na Else MsgBox "Month of report is: " & mnth & vbNewLine & "Year of report is: " & yr End If End Sub 

如果文件名的格式保持不变,您可以试着从给定的文件名获取月份和年份。

  Sub MonAndYear() Dim MyNAme As String Dim Cet MyName = ThisWorkbook.Name Cet =Split(MyName," ") Dim Mon As String Dim Yr As String Mon = Cet(0) Yr = Cet(1) MsgBox "Month is " & Cet(0) MsgBox "Year is " & Cet(1) End Sub 

你可以把这个公式放到工作手册里,

 =MID(CELL("filename",B1),FIND("[",CELL("filename",B1))+1,FIND(".xls",CELL("filename",B1))-FIND("[",CELL("filename",B1))-1) 

这将查看工作簿自己的文件名,并拉取“[”&“]”括号中的每个字符。 也就是说,它不包含文件path和工作表名称。