2016-02-12 3 views
1

У меня есть рабочий лист, который отправляется каждый месяц с именем MONTH YEAR Report (например January 2016 Report)VBA: Определение даты на основе Workbook Название

В отчете есть вся необходимая информация в листе за исключением месяца и год. Есть ли способ вывести месяц и год на основе названия книги в колонку?

+0

В vba вы должны использовать функции Left() и Instr(). –

+2

'sFileName = Формат (месяц (дата)," мммм ") и" "и формат (год (дата," yyyy ") и" отчет "или' sFileName = формат (месяц (дата), "мммм") & «» И «Формат» (Год (Дата, «yyyy») и «» и Range («A1»). Диапазон значений2 и «» («A2»). Value2', если есть конкретные данные именования, хранящиеся в диапазонах. –

+1

для не-vba-решение, которое вы можете поместить прямо в ячейку, смотрите '= Cell (" filename ", A1)'. Это вернет полный путь к файлу, который вы можете извлечь, используя 'Find, Mid, Left и т. д. ' –

ответ

1

Другой способ достижения этой Вне зависимости от структуры имени

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 
+0

Этот ответ работал наилучшим образом для моих целей, спасибо. – aLearningLady

3

Вы можете попробовать это, чтобы получить месяц и год от имени файла, если поддерживается формат имени файла.

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 
1

Вы можете иметь эту формулу поместить в книгу, которая уносится вперед ежемесячно:

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

Это выглядит на собственного имени рабочей книги и вытаскивает каждый символ между «[» & «]» скобками. То есть он не включает имя файла и имя листа.

Смежные вопросы