Каждый день программа создает для меня файл excel с некоторыми данными за текущий день. Например, какая цена на продукты, сколько людей доступно сегодня и тому подобное.

На основании всего этого мне нужно сделать некоторые прогнозы и распределение рабочих мест для работников. Проблема в том, что мне нужно постоянно перетаскивать всю эту информацию вручную. Таким образом, чтобы сделать это автоматически, я поместил формулу в ячейки как:

='c:\ABC\[ABC 29-01-14.xlsx]sheet'!a1

Все работает нормально, но на следующий день я должен изменить имя файла на « ABC 30-01-14 » для каждой ячейки, что аналогично вводу данных вручную.

Поэтому я использовал формулу « concatenate » для автоматического изменения даты в соответствии с сегодняшней датой. Я использовал « indirect » формулу, чтобы превратить ее в настоящую формулу, а не в текстовую строку, и понял, что она работает только для открытых файлов, а не для закрытых.

Есть ли способ сделать это для закрытых файлов без VBA, потому что я не знаю, или с VBA, но объяснил для идиота.

1 ответ1

0

Столь забавный факт, я исследовал это, потому что для большого документа Excel (собирая примерно 50 ячеек в неделю в один документ, который тянется полтора года назад)

Мне удалось получить данные из закрытых рабочих книг (Excel 2013 и 2016), но теперь в новом документе у меня возникли проблемы с этим.

Способ, которым я смог сделать это ранее, заключался в создании составной формулы, имеющей макропрограмму, которая для каждого нового месяца создает новую строку в качестве значений, а затем в работе с фрагментом (спасибо мастеру форума без имени, который предоставил его в прошлом) ) внутри макроса, чтобы удалить все ведущие апострофы, затем перетаскивая формулы вниз для каждой ячейки.

Как и выше, вам необходимо убедиться, что это полный относительный путь ('c:\abc\[abcdoc.xlsx]sheet').

Snippet:

'Removes Apostrophes from A14:AR14
    Range("A14:AI14").Select
' Removes hidden apostrophes as first character
' Works on formulas as well as text and values
    For Each CurrentCell In Selection
    If CurrentCell.HasFormula = False Then

'Checks to make sure that procedure does not
'change cell with a formula to be only the value
    CurrentCell.Formula = CurrentCell.Value
    End If
    Next

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .