Excel vba не работает функция

Skip to content

Почему пользовательская функция не работает: проблемы и решения

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

Вот о каких проблемах мы поговорим:

  • Почему не пересчитывается пользовательская функция?
  • Как создать функцию, которая всегда пересчитывается
  • Почему пользовательской функции нет в списке?
  • Не отображается подсказка

Почему не пересчитывается пользовательская функция?

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

Это позволяет избежать ненужных вычислений, которые ничего не меняют на вашем рабочем листе.

Это относится и к пользовательским формулам. Excel не может проверить код VBA и определить другие ячейки, которые также могли повлиять на результат.

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

Чтобы решить эту проблему, вам просто нужно использовать оператор Application.Volatile. Прочтите следующую главу, чтобы получить пошаговые инструкции по его применению.

Как создаются волатильные и не волатильные функции. 

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

К примеру, вам необходимо записать в ячейке имя вашей рабочей книги.

Для этого вы создали пользовательскую функцию:

Function WorkbookName() As String
WorkbookName = ThisWorkbook.Name
End Function

Вы записали  =WorkbookName() в ячейку и получили там имя файла. Но вот вы решили переименовать файл и сохранили его под другим именем. И вдруг видите, что значение в ячейке не изменилось! Там по-прежнему старое имя файла, которое уже не существует.

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

Для пересчета всех формул в файле вам необходимо использовать комбинацию клавиш CTRL+ALT+F9.

Как решить эту проблему, чтобы лишний раз не нажимать клавиши?

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

Application.Volatile 

То есть, ваш код будет выглядеть так:

Function WorkbookName() As String
Application.Volatile 
WorkbookName = ThisWorkbook.Name
End Function

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

 Однако имейте в виду, что слишком много волатильных функций может замедлить работу Excel. Ведь многие формулы выполняют достаточно сложные вычисления и работают с большими диапазонами данных.

Поэтому рекомендую применять волатильность только там, где это действительно необходимо.

Почему пользовательской функции нет в списке?

При вводе первых букв имени пользовательской функции она появляется в выпадающем списке рядом с ячейкой ввода, как и стандартные функции Excel.

Вы можете видеть такой пример на скриншоте ниже.

Однако, это происходит не всегда. Какие ошибки могут стать причиной того, что вы не видите вашу функцию в списке?

Если у вас Excel 2003-2007, то пользовательская функция никогда не появляется в выпадающем списке. Там вы можете увидеть только стандартные функции.

Но даже если вы используете более новую версию Excel, есть еще одна ошибка, которую вы можете случайно сделать.

Пользовательская функция должна находиться в стандартном модуле VBA. Что это означает?

Когда вы добавляете новый модуль для записи кода, автоматически создается папка Modules, в которую записываются все модули. Это вы видите на скриншоте ниже.

Но иногда случается, что новый модуль не был создан.

На скриншоте ниже вы видите, что код находится в таких модулях, как ThisWorkbook или Sheet1.

Нельзя размещать настраиваемую функцию в области кода рабочего листа или рабочей книги. Эту ошибку вы и видите на скриншоте ниже.

В этом случае функция работать не будет. Она также не появится в выпадающем списке. Поэтому код всегда должен находиться в папке Modules, как показано на первом скриншоте.

Не отображается подсказка для пользовательской функции

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

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

Для этого я предлагаю дополнительно использовать метод Application.MacroOptions. Он поможет вам показать описание не только функции, но и каждого её аргумента в окне Мастера. Это окно вы видите, когда нажимаете кнопку fx в строке формул.

Давайте попробуем создать такую справку.

Ранее мы с вами рассматривали настраиваемую функцию GetMaxBetween(). Она находит максимальное число в указанном интервале и использует три аргумента: диапазон числовых значений, а также максимальное и минимальное значение для поиска. 

Добавим в нее описание и справочную информацию. Для этого нужно создать и запустить команду Application.MacroOptions.

Для GetMaxBetween вы можете выполнить следующую команду:

Sub RegisterUDF()
Dim strFuncName As String   ' имя функции, которую регистрируем
Dim strDescr As String   'описание для самой функции
Dim strArgs() As String ' описание для аргументов
    'Регистрируем функцию GetMaxBetween 
    ReDim strArgs(1 To 3) ' номер аргумента (от 1 до 3)
    strFuncName = "GetMaxBetween"
    strDescr = "Максимальное значение в указанном диапазоне"
    strArgs(1) = "Диапазон ячеек"
    strArgs(2) = "Нижняя граница интервала"
    strArgs(3) = "Верхняя граница интервала"
    Application.MacroOptions Macro:=strFuncName, _
                             Description:=strDescr, _
                             ArgumentDescriptions:=strArgs, _
                             Category:="Определенные пользователем"
End Sub

или

Sub RegisterUDF()
    Application.MacroOptions Macro:="GetMaxBetween", _
        Description:= "Максимальное значение в указанном диапазоне", _
        Category:= "Определенные пользователем", _
        ArgumentDescriptions:=Array( _
            "Диапазон ячеек", _
            "Нижняя граница интервала", _
            "Верхняя граница интервала")
End Sub

Переменная strFuncName — это имя. strDescr —описание. В переменных strArgs записаны подсказки для каждого аргумента.

Вы спросите, для чего нужен четвертый аргумент  Application.MacroOptions? Этот необязательный аргумент называется Category и указывает на категорию функций Excel, в которую будет помещена наша пользовательская функция GetMaxBetween(). Вы можете присвоить ему имя любой из существующих категорий: Математические, Статистические, Логические и т.д. Можно указать имя новой категории, в которую вы будете помещать созданные вами макросы. Если же не использовать аргумент Category, то она будет автоматически помещена в раздел «Определенные пользователем».

Вставьте код в окно модуля, как показано на скриншоте ниже:

Затем нажмите кнопку “Run”.

Команда выполнит все настройки для использования кнопки fx с вашей функцией GetMaxBetween().

Теперь посмотрим, что у нас получилось. Если попробовать вставить в ячейку функцию при помощи инструмента Вставка функции, то увидите, что GetMaxBetween() находится в категории «Определенные пользователем»:

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

После этого вызовите Мастер при помощи кнопки fx.

Чтобы открыть Мастер функций, вы также можете использовать комбинацию клавиш CTRL + A.

В окне Мастера вы видите описание для функции, а также подсказку для первого аргумента. Если установить курсор на второй или третий аргумент, вы также увидите подсказки для них.

Если вы захотите поменять текст этих подсказок, в коде RegisterUDF() измените значения переменных strDescr  и strArgs. Затем снова выполните команду RegisterUDF().

Если вы захотите отменить все сделанные настройки и очистить описание, выполните этот код:

Sub UnregisterUDF()
    Application.MacroOptions Macro:="GetMaxBetween", _
Description:=Empty, ArgumentDescriptions:= Empty, Category:=Empty
End Sub

Есть еще один способ получить подсказку при вводе пользовательской функции.

Введите название функции и затем нажмете комбинацию CTRL+SHIFT+A :

=GetMaxBetween( + CTRL + Shift + A

Вы увидите список всех аргументов функции:

К сожалению, здесь вы не увидите описания функции и её аргументов. Но если названия аргументов достаточно информативны, то это может помочь. Всё же это лучше, чем ничего.

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

Единственным доступным решением в настоящее время является  Excel-DNA IntelliSense extension. Более подробную информацию вы можете найти по этой ссылке.

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

Сумма по цвету и подсчёт по цвету в Excel В этой статье вы узнаете, как посчитать ячейки по цвету и получить сумму по цвету ячеек в Excel. Эти решения работают как для окрашенных вручную, так и с условным форматированием. Если…
Проверка данных с помощью регулярных выражений В этом руководстве показано, как выполнять проверку данных в Excel с помощью регулярных выражений и пользовательской функции RegexMatch. Когда дело доходит до ограничения пользовательского ввода на листах Excel, проверка данных очень полезна. Хотите…
Поиск и замена в Excel с помощью регулярных выражений В этом руководстве показано, как быстро добавить пользовательскую функцию в свои рабочие книги, чтобы вы могли использовать регулярные выражения для замены текстовых строк в Excel. Когда дело доходит до замены…
Как извлечь строку из текста при помощи регулярных выражений В этом руководстве вы узнаете, как использовать регулярные выражения в Excel для поиска и извлечения части текста, соответствующего заданному шаблону. Microsoft Excel предоставляет ряд функций для извлечения текста из ячеек. Эти функции…
4 способа отладки пользовательской функции Как правильно создавать пользовательские функции и где нужно размещать их код, мы подробно рассмотрели ранее в этой статье.  Чтобы решить проблемы при создании пользовательской функции, вам скорее всего придется выполнить…
Как создать пользовательскую функцию? В решении многих задач обычные функции Excel не всегда могут помочь. Если существующих функций недостаточно, Excel позволяет добавить новые настраиваемые пользовательские функции (UDF). Они делают вашу работу легче. Мы расскажем,…

Вить, готов поспорить. Проблема-то не в конкретной функции(точнее не в том, что она делает) — а в любой функции пользователя независимо от того, что она должна вернуть. И для поиска именно это должно быть важно. Единственное, я бы все же назвал тему так: Функция пользователя не отображается в списке при наборе в ячейке 2013 Excel. Это наиболее правильно отражает суть проблемы. Но тут вопрос спорный — мы уже обсуждали — мне легко сформулировать это, а человеку иному может быть весьма сложно обозначить в таких случаях корень проблемы. Это один из тех случаев, когда действительно может быть сложно отразить правильно суть самой проблемы в названии.

По самой проблеме: возможно, это проблема самого офиса. Так себя ведут все функции пользователя? Или только эта? Если только эта — ищите, нет ли где задвоения названия функции(например, в какой-то книге есть макрос с таким же именем).
И еще вопрос: если полностью ввести функцию — она все же работает? Возвращает нужный результат?

Содержание

  1. Не работают макросы в Excel: кто виноват и что делать?
  2. Причины
  3. Что делать
  4. Включите опцию
  5. Добавьте нужный модуль в книгу
  6. Проверьте операционную систему
  7. Обратите внимание на разработчика
  8. Проверьте версию Майкрософт Офис
  9. Убедитесь в наличии пакета VBA
  10. Активируйте Офис
  11. Снимите блокировку файла
  12. Проверьте библиотеки
  13. Проверьте настройки безопасности
  14. Пользовательская функция может не вычислить ожидаемое значение в Excel
  15. Симптомы
  16. Причина
  17. Обходной путь
  18. Метод 1. Измените функцию так, чтобы были переданы все соответствующие диапазоны ячеек.
  19. Метод 2. Обеспечение переменной пользовательской функции
  20. Метод 3. Принудительное вычисление всех открытых книг в Excel
  21. Дополнительные сведения
  22. Пример проблемы
  23. Excel не работает функция vba
  24. Лучший отвечающий
  25. Вопрос
  26. Excel не работает функция vba
  27. Лучший отвечающий
  28. Вопрос

Не работают макросы в Excel: кто виноват и что делать?

Не работают макросы в Excel? Включите их выполнение, добавьте специальный модель с кодом, проверьте версию ОС и Эксель, убедитесь в соответствии пакета приложений, активируйте Майкрософт Офис, снимите блокировку файла, проверьте систему безопасности и применяемые библиотеки. Ниже подробно рассмотрим, в чем могут быть причины подобной неисправности, и какие шаги предпринимать для ее устранения.

Причины

Для начала стоит разобраться, почему не работает макрос в Excel, ведь от этого зависят дальнейшие шаги. К основным причинам стоит отнести:

  1. Функция отключена.
  2. Отключение отслеживания событий.
  3. Устаревшая операционная система.
  4. Несоответствие разработчика пакета офисных приложений.
  5. Устаревшая версия Майкрософт Офис.
  6. Неактивированная версия Excel.
  7. Заблокированный файл.
  8. Неправильные настройки безопасности.
  9. Отсутствие необходимой библиотеки и т. д.

Выше рассмотрены основные причины, почему не удается выполнить макрос в Excel. Все они могут быть решены самостоятельно с помощью приведенных ниже рекомендации. Подробнее на решении вопроса остановимся ниже.

Что делать

Многие пользователи теряются в ситуации, когда не включаются или вообще не работают макросы в Excel. Такая проблема не дает нормально пользоваться приложением и заставляет искать альтернативные варианты.

Включите опцию

Первое, что необходимо сделать — включить функцию для обеспечения ее работоспособности. Здесь многое зависит от версии Эксель.

Если не работают макросы в Excel 2003, сделайте следующие шаги:

  1. Войдите в «Сервис».
  2. Перейдите в раздел «Безопасность».
  3. Кликните «Уровень макросов «Низкий».

В случае, когда не работают макросы в Excel 2007, включите их следующим образом:

  1. Жмите на кнопку «Офис».
  2. Войдите в параметры Excel.
  3. Кликните на «Центр управления безопасности».
  4. Войдите в «Параметры центра управления безопасностью».
  5. Жмите на «Параметры макросов».
  6. Кликните на «Разрешить все …».

В ситуации, когда не работают макросы в Excel 2016, сделайте следующие шаги:

  1. Войдите в раздел «Файл».
  2. Кликните на кнопку «Параметры».
  3. Зайдите в «Центр управления безопасностью».
  4. Войдите в «Параметры центра управления безопасностью».
  5. Кликните на «Параметры …».
  6. Жмите на «Разрешить все …».

После внесения изменений параметра безопасности перезапустите приложение Excel, а именно закройте его полностью и откройте снова. Лишь после этого изменения вступают в силу.

Добавьте нужный модуль в книгу

Бывают ситуации, когда макросы включены, но не работают в Excel из-за отключения каким-либо элементом отслеживания событий. В таком случае сделайте следующее:

  1. Перейдите в редактор VBA с помощью клавиш Alt+F11.
  2. Вставьте указанный ниже код.
  1. Для выполнения кода поставьте курсор в любой точке между началом и концом.
  2. Кликните F5.

Проверьте операционную систему

В ситуации, когда не отображаются макросы в Excel, обратите внимание на тип операционной системы. К примеру, Майкрософт Офис, который подходит для Виндовс, на Мак ОС уже работать не будет. Причина в том, что в приложении используются разные библиотеки. Даже если надстройки и функционируют, могут быть сбои в работе. Вот почему при появлении проблем нужно проверить ОС на соответствие.

Обратите внимание на разработчика

Если в Экселе не работают макросы, причиной может быть другой разработчик. Так, пользователи Excel часто применяют OpenOffice или LibreOffice. Эти пакеты созданы на разных языках программирования, которые имеют индивидуальные особенности. Так, если надстройки написаны на Visual Basic for Application, он может не работать в указанных выше офисных приложениях. Вот почему необходимо уточнять, для какого пакета создан макрос / надстройка.

Проверьте версию Майкрософт Офис

В Макрософт Офис 2003 применяются надстройки xla для Excel. В современных версиях расширение поменялось на xlam. Если ставить макросы старого типа в приложения Офис 2007 и больше, никаких трудностей не происходит. Если же вы попытаетесь поставить новую надстройку на старую версию Excel, она зачастую не работает. Вот почему важно обратить внимание на этот параметр при выборе.

Убедитесь в наличии пакета VBA

Одной из причин, почему не запускается макрос в Excel, может быть отсутствие пакета VBA. Для успешного запуска надстройки необходимо, чтобы этот пакет был установлен. Иногда он уже установлен в Офис, но так происходит не всегда. Для проверки жмите комбинацию на Alt+F11. Если после этого появляется Visual Basic, компонент можно считать установленным. В ином случае его нужно поставить. Для этого:

  • Зайдите в «Пуск», а далее «Панель управления / Программы и компоненты».

  • Выберите программу Майкрософт Офис.
  • Жмите на кнопку «Изменить».

  • Запустить файл установки Setup.exe.
  • Кликните на «Добавить или удалить компоненты».
  • Выберите в списке Visual Basic и установите его.

Активируйте Офис

Если в Excel 2007 не работает кнопка «макросы», причиной может быть отсутствие активации приложения. Для этого жмите на кнопку «Активировать» и следуйте инструкции. В большинстве случаев такая опция является платной.

Снимите блокировку файла

Учтите, что документ, полученный с другого ПК / ноутбука, может заблокироваться. Для разблокировки файла нужно нажать ПКМ и в разделе «Общие» кликнуть на «Разблокировать».

Проверьте библиотеки

В случае, когда параметры макросов не активны в Excel, причиной может быть появление ошибки «Can’t find project or library». При этом, надстройка работает на другом ПК / ноутбуке, а здесь возникают проблемы. Ошибку легко устранить, если в окне, которое идет за сообщением об ошибке, снять отметки в полях Missing. Для вызова окна можно выбрать пункт меню Tools / References.

Проверьте настройки безопасности

В ситуации, когда не работают макросы в Excel, можно добавить надежные расположения или настроить доступ к объектной модели VBA. Для этого в Офис 2007 необходимо сделать следующее:

  1. Войдите в Меню
  2. Кликните на пункт «Параметры».
  3. Жмите на «Центр управления безопасностью».
  4. Войдите в «Параметры центра управления безопасностью».
  5. Кликните на «Параметры макросов» и «Доверять доступ к объектной модели проектов».

Зная, почему не работают макросы в Excel, вы можете с легкостью исправить проблему и восстановить работоспособность. Если же сложности в работе возникают, вы всегда можете воспользоваться инструкцией в статье.

В комментариях расскажите, какой из приведенных выше вариантов вам помог, и что еще можно сделать.

Источник

Пользовательская функция может не вычислить ожидаемое значение в Excel

Симптомы

При вычислении листа некоторые ячейки, возможно, вычислили неправильное значение.

Причина

Эта проблема возникает при выполнении указанных ниже условий.

Ячейка на листе содержит пользовательскую функцию.

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

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

Это поведение за счет разработки Microsoft Excel. Когда Excel вычисляет ячейку, содержащую пользовательскую функцию, он пересчитывает все диапазоны ячеек, передаваемые в качестве аргументов в пользовательскую функцию. Если результат выполнения функции зависит от ячеек, на которые функция явно не ссылается, пересчет этих ячеек может не выполняться.

Обходной путь

Чтобы обойти эту проблему, используйте любой из следующих методов.

Метод 1. Измените функцию так, чтобы были переданы все соответствующие диапазоны ячеек.

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

Метод 2. Обеспечение переменной пользовательской функции

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут помочь объяснить функциональные возможности конкретной процедуры, но они не будут изменять эти примеры, чтобы предоставить дополнительные функциональные возможности или процедуры создания в соответствии с конкретными требованиями. Если сделать пользовательскую функцию переменной, эта проблема не будет возникать. Чтобы сделать пользовательскую функцию переменной, добавьте в нее следующую строку кода.

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

Метод 3. Принудительное вычисление всех открытых книг в Excel

Нажмите клавиши CTRL+ALT+F9, чтобы пересчитать значения во всех открытых книгах. В Microsoft Office Excel 2007 нажмите клавиши CTRL+ALT+SHIFT+F9, чтобы пересчитать значения во всех открытых книгах.

Дополнительные сведения

Пример проблемы

Чтобы продемонстрировать эту проблему, выполните следующие действия.

Закройте и сохраните открытые книги, а затем откройте новую книгу.

Запустите редактор Visual Basic (нажмите клавиши ALT+F11).

В меню Вставка выберите пункт Модуль.

Введите следующий код в лист модуля:

Нажмите клавиши ALT+F11, чтобы вернуться в Excel.

Введите test в ячейке A2 и нажмите клавишу ВВОД.

Введите следующую формулу в ячейку A10 и нажмите клавишу ВВОД:

Формула возвращает значение 7.

Введите еще один тест в ячейке A5 и нажмите клавишу ВВОД.

Формула по-прежнему возвращает значение 7, если ожидается значение 4. В этом примере функция FindTextUp явно ссылается на ячейку A9. Однако функция может зависеть от ячеек A1:A8 в зависимости от данных, введенных на листе.

Если вы реализуете метод 1 в разделе «Обходной путь» этой статьи, функция вычислит ожидаемый результат. В следующей строке кода показано, как изменить функцию в этом примере для вычисления ожидаемого результата.

Теперь, если заменить вызов функции на шаге 7 следующим вызовом функции, функция всегда возвращает ожидаемый результат.

Источник

Excel не работает функция vba

Лучший отвечающий

Вопрос

Доброго времени суток!

Возникла следующая проблема, и я уже все перепробовал что знал и что нашел.

У меня есть программа. Она в какой то момент вызывает excel 2010 через ShellExecute (пользую Delphi), и он начинает обрабаывать данные.

Только при попытке обратиться к функции Right или left или mid она выдает ошибку о том, что библиотека или метод не найдены.

попробовал обратиться напрямую vba.string.right — работает. просто right — нет.

Пункт меню tools->reference серый, т.е. недоступен. «C:/windo. /excel.exe» regserver делал. Не помогло.

Запустил Excel отдельно — все ОК.

Запустил выгрузку отчета в программе — открывается другой процесс excel, в котором методы не работают. (такое поведение нетипично — всегда запускался только 1 процесс)

Такая ошибка возникла 4 дня назад. Компьютеры, естественно, имеют лицензионный софт на борту, все обновления устанавливаются раз в неделю. И ошибка произошла лишь на третьи сутки после последнего обновления. Офис 2003 открывается нормально.

в ПО никаких изменений не было, доменную политику не трогали.

Источник

Excel не работает функция vba

Лучший отвечающий

Вопрос

Доброго времени суток!

Возникла следующая проблема, и я уже все перепробовал что знал и что нашел.

У меня есть программа. Она в какой то момент вызывает excel 2010 через ShellExecute (пользую Delphi), и он начинает обрабаывать данные.

Только при попытке обратиться к функции Right или left или mid она выдает ошибку о том, что библиотека или метод не найдены.

попробовал обратиться напрямую vba.string.right — работает. просто right — нет.

Пункт меню tools->reference серый, т.е. недоступен. «C:/windo. /excel.exe» regserver делал. Не помогло.

Запустил Excel отдельно — все ОК.

Запустил выгрузку отчета в программе — открывается другой процесс excel, в котором методы не работают. (такое поведение нетипично — всегда запускался только 1 процесс)

Такая ошибка возникла 4 дня назад. Компьютеры, естественно, имеют лицензионный софт на борту, все обновления устанавливаются раз в неделю. И ошибка произошла лишь на третьи сутки после последнего обновления. Офис 2003 открывается нормально.

в ПО никаких изменений не было, доменную политику не трогали.

Источник

Доброго времени суток!

Возникла следующая проблема, и я уже все перепробовал что знал и что нашел.

У меня есть программа. Она в какой то момент вызывает excel 2010 через

ShellExecute (пользую Delphi)
, и он начинает обрабаывать данные.

Только при попытке обратиться к функции Right или left или mid она выдает ошибку о том, что библиотека или метод не найдены.

попробовал обратиться напрямую vba.string.right — работает. просто right — нет.

Пункт меню tools->reference серый, т.е. недоступен. «C:/windo…./excel.exe» regserver делал. Не помогло.

Запустил Excel отдельно — все ОК.

Запустил выгрузку отчета в программе — открывается другой процесс excel, в котором методы не работают. (такое поведение нетипично — всегда запускался только 1 процесс)

Такая ошибка возникла 4 дня назад. Компьютеры, естественно, имеют лицензионный софт на борту, все обновления устанавливаются раз в неделю. И ошибка произошла лишь на третьи сутки после последнего обновления. Офис 2003 открывается нормально.

в ПО никаких изменений не было, доменную политику не трогали.

Понравилась статья? Поделить с друзьями:
  • Excel vba операции со строками
  • Excel vba не работает прокрутка
  • Excel vba оператор выбора
  • Excel vba не работает for
  • Excel vba оператор set