Ошибка времени выполнения 1004 размещение формулы индекса в ячейке

У меня есть динамический список проверки внутри шаблона excel, который показывает по умолчанию «пользователь», который выполняет файл excel, (используя формулу=INDEX(user; 1), пользовательname range, у которого есть текущий» пользователь», показанный сначала.

После того, как шаблон полностью заполнен, лист копируется в новый файл и новый файл get отправляется по электронной почте.

Поскольку «пользователь» изменяется при открытии нового файла, мне нужно было вставить значения из проверки в шаблон, непосредственно перед копированием листов.

Моя идея заключается в том, что шаблон может быть очищен для повторного использования, чтобы формулы были повторно введены макросом в ячейки. Я пробовал использоватьWorksheets("template").Range("D3").Formula = "=INDEX(user; 1)", но я получаю runtime error 1004 application defined or object defined error.

Пожалуйста, посоветуйте. Я представил более широкую идею, чтобы позволить альтернативные решения для цели, которую я пытаюсь достичь.

1 ответ

  1. Я предлагаю сохранить книгу «шаблон excel» как настоящий шаблон Excel, используя соответствующее FileFormatзначение ( xlOpenXMLTemplateMacroEnabled если шаблон имеет макросы или xlOpenXMLTemplate если у него нет макросов) .

    При сохранении шаблона с помощью процедуры можно использовать следующие строки:

    ActiveWorkbook.SaveAs _
        Filename:="Workbook FullName.xltm", _
        FileFormat:=xlOpenXMLTemplateMacroEnabled, _
        Password:="If Required", WriteResPassword:="If Required", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    
        Rem Replace these lines if template has no macros
        'Filename:="Workbook FullName.xltx", _
        'FileFormat:=xlOpenXMLTemplate, _
    

    Когда пользователь дважды щелкает шаблон книги, открывается копия книги исходного шаблона, оставляя исходный шаблон нетронутым, поэтому не будет необходимости сбрасывать формулы для повторного использования.

    Если шаблон открыт с помощью процедуры, вместо doubleclick пользователя используйте эту строку:

    Workbooks.Open Filename:="Workbook_FullName.xltm", Editable:=True
    

    см. раздел Сохранение книги или листа в качестве шаблона, сохранение книги в качестве шаблона