Меню

Ошибка программный доступ к проекту visual basic не является доверенным

Проблема

Код, написанный для автоматизации приложений Office и программного манипулирования средой VBA и объектной моделью, может дать сбой при работе в Office, отобразив одно из следующих сообщений об ошибке:

От Visual Basic или VBA:

Ошибка выполнения ‘6068’: Программный доступ к проекту Visual Basic не является доверенным.

От Microsoft Visual C++, Microsoft Foundation Classes (MFC) или ActiveX Template Library (ATL):

HRESULT = 0x800A17B4 (-2146822220) «Программный доступ к проекту Visual Basic не является доверенным»

Тот же самый код будет работать без ошибок на компьютерах с установленным Office 97 и Office 2000.

Причина

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

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

Решение

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

Office 2003 и Office XP

  1. Откройте приложение Office 2003 или Office XP соответственно. В меню Сервис выберите пункт Макрос, а затемБезопасность, чтобы открыть диалоговое окно Безопасность макросов.

  2. Во вкладке Надежные источники установите флажок Доверять доступ к Visual Basic Project.

  3. Нажмите кнопку OK, чтобы изменения вступили в силу. При автоматизации из надстройки Component Object Model или шаблона, возможно, придется перезапустить приложение, чтобы код запустился правильно.

Office 2007

  1. Откройте вызывающее вопросы приложение версии 2007 системы Microsoft Office. Нажмите кнопку Microsoft Office, затем выберите Приложение Параметры.

  2. Перейдите на вкладку Центр доверия и нажмите кнопку Параметры центра доверия.

  3. На вкладке Параметры макроса установите флажок Доверять доступ к объектной модели VBA project и нажмите кнопку OK.

  4. Нажмите кнопку ОК.

Нужна дополнительная помощь?

Не получается запустить макрос vba в проекте c#. Подскажите, что я делаю не так.
Сначала открываю excel файл,а затем прогоняю макрос. Но вылезает ошибка в строке
«oModule = oWb.VBProject.VBComponents.Add(VBA.vbext_ComponentType.vbext_ct_StdModule);»
Программный доступ к проекту Visual Basic не является доверенным

string xlSheetPath = textBox1.Text;
        string ext = xlSheetPath.Substring(xlSheetPath.LastIndexOf("."),
            xlSheetPath.Length - xlSheetPath.LastIndexOf("."));
        int xlVersion = (xlSheetPath.Substring(xlSheetPath.LastIndexOf("."),
            xlSheetPath.Length - xlSheetPath.LastIndexOf(".")) == ".xls") ? 
 8 : 12;

        Microsoft.Office.Interop.Excel._Application xlApp = new 
  Excel.Application();
        xlApp.Visible = true;
        Excel.Workbook workbook = xlApp.Workbooks.Open(xlSheetPath);
        Excel.Worksheet worksheet = workbook.Sheets[1];


        //Где то тут включить макрос.

        Excel.Workbook oWb;
        Excel.Workbooks oWbs;
        Excel.Worksheet oSheet;
        VBA.VBComponent oModule;

        String sCode;

        //xlApp.SheetsInNewWorkbook = 1;
        oWbs = (Excel.Workbooks)xlApp.Workbooks;
        oWb = oWbs.Add(System.Reflection.Missing.Value);
        oSheet = xlApp.Worksheets.Add();
        oModule = 
 oWb.VBProject.VBComponents.Add(VBA.vbext_ComponentType.vbext_ct_StdModule);
        sCode = "Sub copyTable()rn" +
            "Dim colRange As Variantrn" +
            "colRange = Array(1, 2, 3, 4, 5, 6, 7) 'Columns where your data 
  is'rn" +
            "Dim destColRange As Variantrn" +
            "destColRange = Array(10, 11, 12, 13, 14, 15, 16, 17) 'Columns 
  where you want data be copied'rn" +
            "n = UBound(colRange) - LBound(colRange)rn" +
            "i = 2 'Initial row'rn" +
            "newI = irn" +
            "maxLen = 500 'Maximum size allowed in one cell'rn" +
            "While Not (Cells(i, colRange(0)) Is Nothing) And (Cells(i, 
  colRange(0)) <> "")rn" +
            "Text = Cells(i, colRange(n))rn" +
            "Dorn" +
            "For j = 0 To n - 1rn" +
            "Cells(newI, destColRange(j)) = Cells(i, colRange(j))rn" +
            "Next jrn" +
            "Cells(newI, destColRange(j)) = Mid(Text, 1, maxLen)rn" +
            "Text = Mid(Text, maxLen + 1)rn" +
            "newI = newI + 1rn" +
            "Loop Until Len(Text) <= 0rn" +
            "i = i + 1 rn" +
            "Wendrn" +
            "End Subrn";
        oModule.CodeModule.AddFromString(sCode);
        sCode = null;
        xlApp.Run("[copyTable]", Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing);

….

Содержание

  1. Запрещен программируемый доступ к проекту на VBA для Office
  2. Проблема
  3. Причина
  4. Решение
  5. Office 2003 и Office XP
  6. Office 2007
  7. Ошибка выполнения 1004, не удается запустить макрос в Excel
  8. Что такое ошибка времени выполнения 1004 в Excel
  9. Исправить ошибку 1004 в Excel
  10. Сканирование на наличие вредоносных программ
  11. Как исправить ошибку выполнения 1004 в Microsoft Excel?
  12. Что такое ошибка времени выполнения 1004 в Excel?
  13. Типы сообщений об ошибках
  14. Каковы причины?
  15. Исправить ошибку выполнения 1004 в Excel
  16. 1]Создайте новый шаблон Excel
  17. 2]Запустите сканирование на вирусы
  18. 3]Для VB: ошибка времени выполнения «1004», измените размер записей легенды.
  19. Ошибка времени выполнения 1004 при внесении изменений в записи условных обозначений на диаграмме в Excel
  20. Симптомы
  21. Причина
  22. Обходной путь
  23. Ошибка VBA 1004
  24. Excel VBA Ошибка 1004
  25. Пример VBA Runtime Ошибка 1004 в Excel
  26. Ошибка выполнения VBA 1004 — Пример № 1
  27. Ошибка выполнения VBA 1004 — Пример № 2
  28. Ошибка выполнения VBA 1004 — Пример № 3
  29. Ошибка выполнения VBA 1004 — Пример № 4
  30. Ошибка выполнения VBA 1004 — Пример № 5
  31. То, что нужно запомнить
  32. Рекомендуемые статьи

Запрещен программируемый доступ к проекту на VBA для Office

Проблема

Код, написанный для автоматизации приложений Office и программного манипулирования средой VBA и объектной моделью, может дать сбой при работе в Office, отобразив одно из следующих сообщений об ошибке:

От Visual Basic или VBA:

Ошибка выполнения ‘6068’: Программный доступ к проекту Visual Basic не является доверенным.

От Microsoft Visual C++, Microsoft Foundation Classes (MFC) или ActiveX Template Library (ATL):

HRESULT = 0x800A17B4 (-2146822220) «Программный доступ к проекту Visual Basic не является доверенным»

Тот же самый код будет работать без ошибок на компьютерах с установленным Office 97 и Office 2000.

Причина

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

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

Решение

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

Office 2003 и Office XP

Откройте приложение Office 2003 или Office XP соответственно. В меню Сервис выберите пункт Макрос, а затемБезопасность, чтобы открыть диалоговое окно Безопасность макросов.

Во вкладке Надежные источники установите флажок Доверять доступ к Visual Basic Project.

Нажмите кнопку OK, чтобы изменения вступили в силу. При автоматизации из надстройки Component Object Model или шаблона, возможно, придется перезапустить приложение, чтобы код запустился правильно.

Office 2007

Откройте вызывающее вопросы приложение версии 2007 системы Microsoft Office. Нажмите кнопку Microsoft Office, затем выберите Приложение Параметры.

Перейдите на вкладку Центр доверия и нажмите кнопку Параметры центра доверия.

На вкладке Параметры макроса установите флажок Доверять доступ к объектной модели VBA project и нажмите кнопку OK.

Источник

Ошибка выполнения 1004, не удается запустить макрос в Excel

Некоторые люди жаловались на Excel ошибка времени выполнения 1004. С самого начала эта ошибка может показаться серьезной проблемой, но по правде говоря, это больше отвлекает, чем что-либо еще. Ошибка времени выполнения 1004 может возникнуть, если Excel не получает доступ к Microsoft Visual Basic для приложений (VBA) или макросам.

Мы говорим это потому, что ошибку времени выполнения 1004 легко исправить, поэтому люди не должны терять из-за нее голову. Да, мы понимаем, что это замедляет ваш рабочий процесс, но как только вы поймете, как вращать вещи, все будет в порядке. Теперь необходимо указать, что любой, кто столкнется с этой ошибкой, не сможет использовать определенные библиотеки ресурсов. Кроме того, могут возникать проблемы с производительностью и постоянные сбои, что еще больше затрудняет использование Excel.

Что такое ошибка времени выполнения 1004 в Excel

По нашему опыту, ошибка появляется в основном, когда пользователь пытается запустить макрос MS Visual Basic для приложений. Все это является процедурой безопасности для блокировки MS VBA из Excel, но если пользователь решит предоставить ему доступ, то ошибка времени выполнения 1004, скорее всего, никогда не появится. Сообщение об ошибке может иметь несколько вариантов, а именно:

  • Ошибка выполнения 1004: ошибка, определяемая приложением или объектом
  • Ошибка выполнения 1004: сбой метода копирования класса листа
  • Ошибка 1004: программный доступ к проекту Visual Basic не является доверенным.

Исправить ошибку 1004 в Excel

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

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

Сразу должен появиться раздел Параметры доверия. Оттуда выберите Настройки макроса.

Наконец, нажмите на Доверять доступ к объектной модели проекта VBA, затем нажмите Ok кнопку и все тут.

Сканирование на наличие вредоносных программ

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

Microsoft Defender — отличный инструмент для этой работы, но если вам этого недостаточно, мы предлагаем использовать бесплатный автономный сканер вредоносных программ.

Источник

Как исправить ошибку выполнения 1004 в Microsoft Excel?

Майкрософт Эксель — одна из самых популярных электронных таблиц, используемых во всем мире как для личных, так и для деловых целей. Это универсальное место для хранения, организации и обработки данных организованным способом. MS Excel поставляется в основном с двумя расширениями, то есть в формате XLS и XLSX. Однако, помимо невероятной популярности, ошибки во время выполнения — обычная неприятность для очень многих пользователей Windows, и одной из самых распространенных является ошибка. Ошибка выполнения 1004.

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

Что такое ошибка времени выполнения 1004 в Excel?

Ошибка выполнения 1004 — это код ошибки, относящийся к Microsoft Visual Basic, который, как известно, беспокоит пользователей Microsoft Excel. С этой ошибкой сталкиваются любые версии MS Excel, такие как Excel 2007, 2010, 2013, 2016, 2019. Ни одна версия Microsoft Excel не застрахована от угрозы Runtime Error 1004.

С этой ошибкой в ​​основном сталкиваются пользователи, когда они работают с файлом Excel или пытаются создать макрос в документе Excel. Это может вызвать серьезные проблемы при работе с приложениями Visual Basic и привести к полному сбою программы или даже всей системы; иногда это может привести к зависанию системы, запрещая пользователям что-либо делать в своей системе.

Типы сообщений об ошибках

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

  • VB: ошибка времени выполнения ‘1004’: ошибка приложения или объекта
  • Ошибка выполнения Excel VBA 1004 «Ошибка выбора метода класса Range»
  • ошибка времени выполнения 1004 диапазон метода объекта _global не удалось Visual Basic
  • Макрос Excel «Ошибка выполнения» 1004?
  • Ошибка выполнения 1004 не удалось открыть метод объектных книг
  • Ошибка времени выполнения «1004»: сбой метода «Рейнджер» объекта «Рабочий лист»
  • «Сбой метода в ПРИЛОЖЕНИИ ПРИЛОЖЕНИЯ ОБЪЕКТНОЙ программы».

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

Каковы причины?

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

  • Значок рабочего стола MS Excel может быть поврежден
  • Файл VBA Excel конфликтует с другим приложением
  • Из-за ошибки, указанной в приложении или объекте
  • Из-за отсутствия зависимого файла
  • Из-за вируса, трояна или вредоносного ПО
  • Из-за неверных ключей реестра и так далее.

Это были некоторые из наиболее частых причин получения ошибки времени выполнения 1004 в MS Excel; Теперь давайте разберемся с различными исправлениями.

Исправить ошибку выполнения 1004 в Excel

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

  1. Создать новый шаблон Excel
  2. Запустите сканирование на вирусы
  3. Для VB: ошибка времени выполнения ‘1004’, измените размер записей легенды

Давайте подробно рассмотрим каждый из этих методов.

1]Создайте новый шаблон Excel

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

1]Откройте MS Excel в вашей системе

2]Нажмите ‘CTRL + N‘для создания нового листа Microsoft Excel или просто выберите’Пустая книга‘с первого экрана.

3]После этого удалите все листы в книге, кроме одного.

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

5]В конце перейдите к ‘Файл> Сохранить как‘, чтобы сохранить новый рабочий лист в формате файла шаблона Excel (.xltx или .xlt).

6]После успешного создания шаблона вы можете вставить его программно, используя следующую строку кода:

Таблицы.Добавить Тип: = путь имя файла

Пожалуйста, обрати внимание — Не забудьте заменить новое имя файла на настоящее имя документа.

2]Запустите сканирование на вирусы

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

3]Для VB: ошибка времени выполнения «1004», измените размер записей легенды.

Если вы столкнулись с ошибкой времени выполнения 1004 при запуске макроса Microsoft Visual Basic для приложений (VBA), вы можете использовать этот метод для временного решения.

Обычно эта ошибка возникает при попытке запустить макрос VBA, который использует метод LegendEntries для внесения изменений в записи легенды на диаграмме Microsoft Excel. На этот раз вы можете получить следующее сообщение об ошибке:

Ошибка времени выполнения ‘1004’: ошибка приложения или объекта

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

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

Мы надеемся, что эта статья поможет вам исправить ошибку времени выполнения 1004 в Microsoft Excel. Это руководство дает вам как ручное, так и автоматическое решение, чтобы избавиться от этой ошибки; вы можете использовать любое решение в зависимости от ваших потребностей.

Читать дальше: Клавиши со стрелками не работают в Microsoft Excel.

Источник

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

Симптомы

При запуске макроса Microsoft Visual Basic для приложений (VBA), использующего метод LegendEntries для внесения изменений в записи условных обозначений в диаграмме Microsoft Excel, может появиться следующее сообщение об ошибке:

Ошибка времени выполнения «1004»: ошибка приложения или объекта

Причина

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

Так как метод LegendEntries в макросе VBA использует то, что отображается для усеченных записей усеченных условных обозначений, сообщение об ошибке, упомянутое в разделе «Симптомы» этой статьи, возникает, когда записей больше, чем доступно для отображения записей условных обозначений на диаграмме Excel.

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

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

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

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

Для правильного выполнения макроса на листе должна быть диаграмма Excel.

Источник

Ошибка VBA 1004

Excel VBA Ошибка 1004

Ошибка VBA 1004 — это ошибка, с которой мы сталкиваемся при выполнении кода в VBA. Он также известен как ошибка времени выполнения VBA. Когда мы работаем в VBA или на любом другом языке программирования или даже в нашей повседневной работе, мы сталкиваемся с различными видами ошибок. Иногда даже мы пропускаем один символ в коде, что приводит к тому, что весь код не работает или, возможно, весь код неверен.

Ошибки, безусловно, являются частью кода, который мы пишем. Это может быть непреднамеренным, но они существуют. Независимо от того, насколько мы профессиональны в кодировании, ошибки во время выполнения могут возникнуть где угодно. Как объяснено выше VBA 1004 Ошибка — это ошибка, которая возникает во время выполнения кода в Excel. Это также называется ошибкой приложения или объекта.

Существуют различные типы причин, по которым мы получаем VBA Runtime Error 1004 в Excel, давайте рассмотрим некоторые из них.

  • Ошибка выполнения VBA 1004: сбой метода «Диапазон» объекта «_ Global»:

Эта ошибка возникает, когда значение диапазона, которое мы ссылаемся на VBA, неверно. Он также называется метод «Диапазон» объекта «_ Global» не удалось.

  • Ошибка выполнения VBA 1004: это имя уже занято.Попробуйте другой:

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

  • Ошибка выполнения VBA 1004: невозможно получить свойство select класса Range:

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

  • Ошибка выполнения VBA 1004: сбой метода «Открыть» объекта «Книги»:

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

  • Ошибка выполнения VBA 1004: извините, мы не смогли найти:

Мы получаем эту ошибку, когда пытаемся открыть лист, который не существует.

Как мы узнали, могут быть разные причины, по которым мы получаем ошибку во время выполнения. Ошибка выполнения может возникнуть в любой строке кода. Нам нужно научиться обрабатывать эти ошибки, и это называется VBA Error Handling.

Пример VBA Runtime Ошибка 1004 в Excel

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

Вы можете скачать этот шаблон Excel с ошибкой VBA 1004 здесь — Шаблон Excel с ошибкой VBA 1004

Ошибка выполнения VBA 1004 — Пример № 1

  • Давайте назовем этот заголовок таблицы как DATA .

  • Перейдите на вкладку Разработчик, нажмите на Visual Basic, чтобы открыть VB Editor.

  • Объявите подфункцию, чтобы начать писать код.

Код:

  • Вызовите заголовок, который мы назвали следующим кодом, написанным ниже.

Код:

  • Когда мы запускаем код, мы видим в Excel, что он был выбран, поскольку мы правильно вызвали заголовок.

  • Теперь мы неправильно написали орфографию имени заголовка.

Код:

  • Запустите код еще раз, чтобы увидеть результат.

Мы получаем Excel VBA Runtime Ошибка 1004, потому что мы неправильно написали имя диапазона.

Ошибка выполнения VBA 1004 — Пример № 2

Мы получаем эту ошибку, когда пытаемся переименовать лист с именем, которое уже занято. Например, я переименовал лист 1 в « Ананд », и я постараюсь переименовать лист 2 в тот же, чтобы увидеть результат.

  • Перейдите на вкладку Разработчик, нажмите на Visual Basic, чтобы открыть VB Editor.
  • Объявите подфункцию, чтобы начать писать код.

Код:

  • Попробуйте переименовать лист 2 в Anand с помощью следующего кода ниже,

Код:

  • Запустите приведенный выше код и посмотрите результат.

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

Ошибка выполнения VBA 1004 — Пример № 3

Я попытаюсь добавить значение из листа 2 к переменной на листе 3. Но я не буду активировать лист 2 и посмотрю, что произойдет.

  • Перейдите на вкладку Разработчик, нажмите на Visual Basic, чтобы открыть VB Editor.
  • Объявите подфункцию, чтобы начать писать код.

Код:

  • Объявите две переменные A и B как целое число.

Код:

  • В переменной B сохраните значение A в дополнение к ячейке A1 листа 2.

Код:

  • Давайте предположим, что код работает, и используем функцию msgbox для отображения значения B.

Код:

  • Запустите код, чтобы увидеть полученный результат.

Мы получаем эту ошибку, потому что мы не активировали лист 2, но мы пытаемся использовать значение листа 2.

Ошибка выполнения VBA 1004 — Пример № 4

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

В этом примере я уже переименовал свою книгу в VBA 1004 Error.xlsm, и я попытаюсь снова открыть ее, которая уже открыта, и посмотреть, получу ли я ошибку VBA 1004.

  • Перейдите на вкладку Разработчик, нажмите на Visual Basic, чтобы открыть VB Editor.
  • Объявите подфункцию, чтобы начать писать код.

Код:

  • Объявите переменную в качестве рабочей книги.

Код:

Попробуйте открыть книгу, которую мы уже открыли, с помощью следующего кода.

Код:

Запустите приведенный выше код, чтобы увидеть результат.

Мы получаем эту ошибку, потому что мы уже открыли ту же книгу.

Ошибка выполнения VBA 1004 — Пример № 5

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

  • Перейдите на вкладку Разработчик, нажмите на Visual Basic, чтобы открыть VB Editor.
  • Объявите подфункцию, чтобы начать писать код.

Код:

  • Попробуйте открыть любую книгу с помощью следующего кода,

Код:

  • Я уже удалил лист с места.
  • Запустите код, чтобы увидеть результат.

Поскольку лист не существует в данном месте, мы получаем эту ошибку.

То, что нужно запомнить

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

Рекомендуемые статьи

Это было руководство к VBA 1004 Ошибка. Здесь мы обсудили Excel VBA Runtime Error 1004 вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —

  1. Добавить или удалить панель ошибок в Excel
  2. VBA Пока Loop | MS Excel
  3. Понимание ошибок в Excel
  4. Использование IFError в VBA

Источник

hi all

i get an error programmatic access to visual basic project is not trusted while trying to access a macro in excel file.Please help.

Microsoft.Office.Interop.Excel.Application oXlFormat;

Microsoft.Office.Interop.Excel.Workbook oWbookFormat;

oXlFormat = new ApplicationClass();

try

{

oXlFormat.Visible = false;

oXlFormat.DisplayAlerts = false;

oWbookFormat = oXlFormat.Workbooks.Open(strFilePath,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

oXlFormat.VBE.ActiveVBProject.VBComponents.Import(objFileColl.MacroPath);//Error Line

oXlFormat.Run(objFileColl.MacroName,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

oWbookFormat.SaveAs(strFilePath,XlFileFormat.xlOpenXMLWorkbookMacroEnabled,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

}

catch (Exception ex)

{

//CloseExcel(oXlFormat);

MessageBox.Show(«Error occured during formating file : » + ex.Message);

}

finally

{

CloseExcel(oXlFormat);

}

hi all

i get an error programmatic access to visual basic project is not trusted while trying to access a macro in excel file.Please help.

Microsoft.Office.Interop.Excel.Application oXlFormat;

Microsoft.Office.Interop.Excel.Workbook oWbookFormat;

oXlFormat = new ApplicationClass();

try

{

oXlFormat.Visible = false;

oXlFormat.DisplayAlerts = false;

oWbookFormat = oXlFormat.Workbooks.Open(strFilePath,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

oXlFormat.VBE.ActiveVBProject.VBComponents.Import(objFileColl.MacroPath);//Error Line

oXlFormat.Run(objFileColl.MacroName,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

oWbookFormat.SaveAs(strFilePath,XlFileFormat.xlOpenXMLWorkbookMacroEnabled,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

}

catch (Exception ex)

{

//CloseExcel(oXlFormat);

MessageBox.Show(«Error occured during formating file : » + ex.Message);

}

finally

{

CloseExcel(oXlFormat);

}

Некоторые люди жаловались на Excel ошибка времени выполнения 1004. С самого начала эта ошибка может показаться серьезной проблемой, но по правде говоря, это больше отвлекает, чем что-либо еще. Ошибка времени выполнения 1004 может возникнуть, если Excel не получает доступ к Microsoft Visual Basic для приложений (VBA) или макросам.

Ошибка Excel 1004

Мы говорим это потому, что ошибку времени выполнения 1004 легко исправить, поэтому люди не должны терять из-за нее голову. Да, мы понимаем, что это замедляет ваш рабочий процесс, но как только вы поймете, как вращать вещи, все будет в порядке. Теперь необходимо указать, что любой, кто столкнется с этой ошибкой, не сможет использовать определенные библиотеки ресурсов. Кроме того, могут возникать проблемы с производительностью и постоянные сбои, что еще больше затрудняет использование Excel.

Что такое ошибка времени выполнения 1004 в Excel

По нашему опыту, ошибка появляется в основном, когда пользователь пытается запустить макрос MS Visual Basic для приложений. Все это является процедурой безопасности для блокировки MS VBA из Excel, но если пользователь решит предоставить ему доступ, то ошибка времени выполнения 1004, скорее всего, никогда не появится. Сообщение об ошибке может иметь несколько вариантов, а именно:

  • Ошибка выполнения 1004: ошибка, определяемая приложением или объектом
  • Ошибка выполнения 1004: сбой метода копирования класса листа
  • Ошибка 1004: программный доступ к проекту Visual Basic не является доверенным.

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

Исправить ошибку 1004 в Excel

Сразу должен появиться раздел Параметры доверия. Оттуда выберите Настройки макроса.

Наконец, нажмите на Доверять доступ к объектной модели проекта VBA, затем нажмите Ok кнопку и все тут.

Сканирование на наличие вредоносных программ

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

Microsoft Defender — отличный инструмент для этой работы, но если вам этого недостаточно, мы предлагаем использовать бесплатный автономный сканер вредоносных программ.

mobile

Эксперт MS Access

26771 / 14450 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

1

Программный доступ к проекту не является доверенным

07.03.2016, 13:30. Показов 12995. Ответов 10

Метки нет (Все метки)


Пытаюсь из vbs вызвать юзер-форму excel-файла, оставив при этом приложение невидимым. Код простой, но выходит на ошибку «Программный доступ к проекту не является доверенным» и форма, разумеется не открывается

Visual Basic
1
2
3
Set app = CreateObject("excel.application")
Set wrk = app.workbooks.Open("C:TempКнига1.xls")
wrk.Vbproject.UserForm1.Show  'Здесь ошибка

Если такое в принципе возможно, подскажите как исправить.

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



0



1587 / 660 / 225

Регистрация: 09.06.2011

Сообщений: 1,334

07.03.2016, 13:42

2

Может это: Параметры ExcelЦентр управления безопастностьюПараметры центра управления безопастностью…Параметры макросов — отметить «Доверять доступ к объектной модели проектов VBA»

Миниатюры

Программный доступ к проекту не является доверенным
 



0



3217 / 966 / 223

Регистрация: 29.05.2010

Сообщений: 2,081

07.03.2016, 13:48

3



0



Эксперт MS Access

26771 / 14450 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

07.03.2016, 13:50

 [ТС]

4

Цитата
Сообщение от Step_UA
Посмотреть сообщение

Параметры макросов — отметить «Доверять доступ к объектной модели проектов VBA»

Тогда бы форма не отрабатывала в приложении. Она отрабатывает. И код работает. И макросы в модулях тоже.



0



1587 / 660 / 225

Регистрация: 09.06.2011

Сообщений: 1,334

07.03.2016, 13:53

5

Макросы работают если включены, а вот wrk.Vbproject и есть обращение к объектной модели



1



Эксперт MS Access

26771 / 14450 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

07.03.2016, 14:05

 [ТС]

6

Цитата
Сообщение от Step_UA
Посмотреть сообщение

wrk.Vbproject и есть обращение к объектной модели

Понял. Исправил. Вернее добавил доверительную галку.

Но теперь другая ошибка: «Объект не поддерживает это свойство или метод: ‘wrk.Vbproject.UserForm1′». В имени формы ошибок нет. Имя формы скопировано из свойств.

Цитата
Сообщение от toiai
Посмотреть сообщение

Посмотри здесь Как включить доверие и уровень безопасности (решение)

Все решения, которые я там увидел, связаны с правкой реестра. Но я не имею таких прав.



0



Step_UA

1587 / 660 / 225

Регистрация: 09.06.2011

Сообщений: 1,334

07.03.2016, 14:34

7

Лучший ответ Сообщение было отмечено mobile как решение

Решение

Цитата
Сообщение от mobile
Посмотреть сообщение

Но теперь другая ошибка: «Объект не поддерживает это свойство или метод: ‘wrk.Vbproject.UserForm1′»

предполагаю, что через объектную модель напрямую не получится вызвать показ формы …
как вариант формировать через объектную модель модуль с макросом или предварительно его добавить в «C:TempКнига1.xls»

Visual Basic
1
2
3
Public Sub r()
    UserForm1.Show
End Sub

Вызывать

Visual Basic
1
app.Run "Книга1.xls!Module1.r"

… скорее всего приложение прийдется показывать



1



4129 / 2233 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

07.03.2016, 14:39

8

Лучший ответ Сообщение было отмечено mobile как решение

Решение

Если добавить UserForm1.Show vbModeless, то приложение можно и не показывать.



2



Эксперт MS Access

26771 / 14450 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

07.03.2016, 15:40

 [ТС]

9

Цитата
Сообщение от pashulka
Посмотреть сообщение

Если добавить UserForm1.Show vbModeless, то приложение можно и не показывать.

Это решение! Спасибо. Получилось



0



4129 / 2233 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

07.03.2016, 15:46

10

Mobile, Решение предложил Step_UA, а я просто мимо проходил



0



Эксперт MS Access

26771 / 14450 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

07.03.2016, 17:13

 [ТС]

11

Цитата
Сообщение от pashulka
Посмотреть сообщение

Решение предложил Step_UA

Принято. Понято. Нажато



0



Я
   igwtbox

17.11.21 — 12:21

Есть такой кусок кода.

Application = Новый COMОбъект(«Excel.Application»);

Workbook = Application.Workbooks.Add();

Workbook.VBProject.VBComponents.Import(ИмяФайла);

Application.ScreenUpdating = Ложь;

Application.Run(ИмяМакроса);

Application.ScreenUpdating = Истина;

Application.Visible = 1;

В файле любой макрос. Например:

Sub Macros1()

    MsgBox 1

End Sub

Код 1C выполняется с директивой &НаСервере.

В файловом варианте работает. В серверном — ошибка в сабже.

Галка «Доверять доступ к объектной модели проектов VBA» в настройках Экселя стоит.

Вопрос: Куда копать?

   УдавВПопугаях

1 — 17.11.21 — 12:25

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

   Asmody

2 — 17.11.21 — 12:27

(0) «Галка «Доверять доступ к объектной модели проектов VBA» в настройках Экселя стоит» — на сервере у пользователя под которым бежит rphost?

   VladZ

3 — 17.11.21 — 12:41

(0) Код 1С вызывает Excel, чтобы открыть макрос, который лежит в файле…

Ты это.. Авторские права не забудь указать (с) Кощей бессмертный.

Игла в яйце, яйцо в утке, утка в зайце, заяц в шоке…

   igwtbox

4 — 17.11.21 — 12:45

(2) Да, спасибо. Это оно. Приложение открывается на сервере. Я этого не учел.

Вопрос снят!

   igwtbox

5 — 17.11.21 — 12:46

(3) Это довольно удобная штука. Отчеты строить сразу в Ворд и/или Эксель, беря данные из 1С.

Если есть идея по более удобной конструкции — подскажите.

   acht

6 — 17.11.21 — 12:49

(5) ТабличныйДокумент.Записать(…)

   igwtbox

7 — 17.11.21 — 12:50

(6) А формулы как в табличной документе организовать7

   Garykom

8 — 17.11.21 — 12:52

(7) а зачем?

   acht

9 — 17.11.21 — 12:52

(7) Зачем в отчете формулы?

   Megas

10 — 17.11.21 — 12:54

(7) Норм тема, я тоже нарезал Эксель из 1с по разному.

(9) А если не отчёт.

К примеру Прайсы по разному с несколькими листами в книге и картинками — через 1с так нельзя сделать в принципе.

   acht

11 — 17.11.21 — 12:55

(10) > с несколькими листами в книге и картинками

ПакетОтображаемыхДокументов

   igwtbox

12 — 17.11.21 — 12:59

(9)

а) Чтобы пользователь видел, откуда получается значение.

б) Чтобы можно было что-то исправить с пересчетом всех вычисляемых значений. Я целые модели так строю — факт из 1С + параметры на форме, которые пользователь задает сам. Например, вложения в проект из 1С, а цену продажи, даты, параметры — пользователь пользователь может менять и смотреть, скажем, доходность.

в) Для возможности использования всего функционала.

в.1) Например, воткнуть сводную таблицу.

в.2) Или есть у меня такое решение. Строится отчет в Ворде и на первую страницу фигачится оглавление.

   acht

13 — 17.11.21 — 13:07

(12) > можно было что-то исправить с пересчетом

Ну так это не отчет, это «выгрузка в excel» называется

   igwtbox

14 — 17.11.21 — 13:09

(13) Это не комментарий, это едкое замечание?

   acht

15 — 17.11.21 — 13:29

(14) Это называется «терминология»

   Megas

16 — 17.11.21 — 13:42

(15) Вспомнилось — чем в 8.0 Отчёт отличался от Обработки? Ни чем кроме названия объекта методанных.

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

  

Casey1984

17 — 17.11.21 — 19:07

(16) Конструктор новой формы генерил разные кнопки в командной панели 😉

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Hello,

I have a C# service which basically looks at a directory and if it finds any .XLS (2003) file, it would run a macro to save that file as an HTML (with interaction) somewhere else.

Please note that when I run the service in Debug mode, it works fine, however, when I build a release version, and run it , the service always fails giving the following error:

 Programmatic access to Visual Basic Project is not trusted

I have looked this up on the internet and they all said that the work around is to check the Trust Access to Visual Basic Project in Tools—>Macro—>Security—>Trusted Publishers.

Now that I have it checked (and the minimum macro security enabled), I am still not able to get the service to work!! and I am still getting the exact same error message.

I would appreciate if you could help me out here.

The code is given below:

module = wb.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);
module.CodeModule.AddFromString(macroDesc);
Console.Out.WriteLine("run macro");
                
					wb.Application.Run(macro,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,
						Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,
						Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,
						Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

I appreciate all the help that I can get.

Just for completion, the service was built using VS2003.NET on Windows 2003 and it is making use of Excel 2003.

Regards
Asim

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка прокси сервера 500
  • Ошибка программное обеспечение для устройства не было установлено