2015-08-20 2 views
0

У меня есть файл Excel с формулой в одной ячейке:Как извлечь часть формулы и скопировать ее в переменную?

=[file1_January-2015.xls]Sheet1!A1+[file2_January-2015.xls]Sheet1!A1

Мне нужно написать макрос, который извлечь January-2015 часть и изменить его в ... в следующем месяце. Поэтому, если есть December-2015, он должен изменить его на January-2016. Я не знаю, как извлечь часть формулы и скопировать ее в переменную ...

+2

Добро пожаловать на SO, вы прописан какой-либо код еще, чтобы попытаться решить проблему? Если это так, сообщите об этом и объясните, в чем проблема. Если не SO - это не веб-сайт для запроса кода, я бы предложил Google искать примеры или справочный форум. SO - это сайт для Q/A о проблемах или ошибках кода, сделанных пользователем. – DragonSamu

ответ

0

Я отвечаю.

Я написал почти то, что мне было нужно. Он работает, когда в месяце есть число «01», «02», ..., «12». Так это работает, когда формула =[file1_01-2015.xls]Sheet1!A1

Sub change_path_in_a_formula() 

    Dim cell As String 
    cell = ActiveCell.FormulaR1C1 

    Dim month As Integer 
    month = Mid(cell, 9, 2) 

    Dim change_year As Byte 
    If month = 12 Then change_year = 1 

    Dim year As Integer 
    year = Mid(cell, 12, 4) + change_year 
    month = (month Mod 12) + 1 

    Dim zero_month As String 
    If month < 10 Then zero_month = "0" 

    ActiveCell.FormulaR1C1 = _ 
     Left(cell, 8) & zero_month & month & _ 
     Mid(cell, 11, 1) & _ 
     year & Mid(cell, 16, Len(cell) - 15) 

End Sub 
+0

Я думал об этом, поэтому я просто упомянул, что вам нужно установить максимальный месяц и год и работать в обратном направлении. Вы можете изменить февраль на Мар, затем с января по февраль, но если вы попробуете это наоборот, вы в конечном итоге перепишете свои предыдущие изменения. Кроме того, выбор одного формата даты/имени файла и его использования имеет первостепенное значение. Трудно попасть в движущуюся цель. – Jeeped

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