Ошибка открытия файла макроса ftp

Обновлено: 25.06.2024

Не так давно очередной раз столкнулся с ошибками приложения Excel при попытке включения макросов после открытия файлов .xlsm. Вспомнил, что подобные проблемы преследуют пользователей довольно давно, но чаще всего они наблюдались с Excel 2013 и Excel 2016. Характерные особенности этой группы ошибок следующие:

  • Приложение Excel закрывается при открытии файла с макросами (при включенном режиме безопасности Включить все макросы );
  • Ошибка приложения Excel возникает при попытке включить содержимое (нажатии соответствующей кнопки);
  • Ошибка приложения Excel возникает при сохранении файла с макросами;

Ну и по горячим следам очередного инцидента, дабы не откладывать на потом, решил для себя собрать небольшой хаб по ошибкам приложения Excel с последующей модификацией, дабы опять не терять время на поиск информации в Сети и на составление облака причин.
Суть в том, что в процессе открытия файла xlsm, и при отключенных макросах, в верхней части основного окна (над таблицей), высвечивается строка уведомления: ПРЕДУПРЕЖДЕНИЕ СИСТЕМЫ БЕЗОПАСНОСТИ Запуск макросов отключен , с кнопкой включения содержимого (макросов). Как только пользователь её нажимает, Excel попросту аварийно завершается (падает) с ошибкой Программа Microsoft Excel не работает и характерным окном уведомления:

excel ошибка макроса

При этом было замечено, что непосредственно перед возникновением ошибки приложения Excel никаких системных обновлений и обновлений пакета Office не устанавливалось. Возможно, каким-то образом задействованы последние обновления на Office, но прямой связи я не заметил, а подробного исследования проблемы не проводил. При этом зависимости от версии операционной системы (мною лично сбои наблюдались на Windows 10 LTSC и Windows 7 Professional) так же выявлено не было. При анализе аварийного дампа приложения ( *.hdmp ) обычно можно увидеть подобную информацию исключения (вывод урезан):

ExceptionAddress : 00007ff86a1e05ac ( VBE 7+ 0x00000000001405ac ) ERROR_CODE : ( NTSTATUS ) 0xc0000005 - < Unable to get error code text > EXCEPTION_CODE : ( NTSTATUS ) 0xc0000005 - < Unable to get error code text >

обычно это NTSTATUS с кодом c0000005 - Access violation, доступ запрещен. И чаще всего в дампе можно увидеть такой вот стек потока (вывод оптимизирован для улучшения представления):

000000b9 ` 1acfdd00 000001d3 ` 2fb24e90 : 000001d3 ` 5a0e0ef0 00000000 ` 00000000 : VBE 7+ 0x1405ac 000000b9 ` 1acfdd08 000001d3 ` 24c1fe20 : 00000000 ` 00000000 000001d3 ` 2fda9640 : 0x000001d3 ` 2fb24e90 000000b9 ` 1acfdd10 000001d3 ` 6cf35760 : 000001d3 ` 2fda9640 000001d3 ` 045c9b30 : 0x000001d3 ` 24c1fe20 000000b9 ` 1acfdd18 000001d3 ` 5a0e0ef0 : 000001d3 ` 045c9b30 000001d3 ` 2fcbb2b0 : 0x000001d3 ` 6cf35760 000000b9 ` 1acfdd20 00000000 ` 00000000 : 000001d3 ` 2fcbb2b0 000001d3 ` 2fcbb318 : 0x000001d3 ` 5a0e0ef0

из которого единственное что понятно, так это то, что падение Excel происходит в недрах функций библиотеки vbe7.dll (среда исполнения VBA), подгруженной в адресное пространство процесса. Это указывает на проблемы с обработчиком VBA-скриптов, в контексте Excel чаще именуемых макросами.

НЕРЕШЕННОЕ: при отладке приложений из комплекта MS Office, вы не увидите имен функций в стеке вызовов, поскольку отсутствуют отладочные символы как к основным исполняемым файлам (Excel/Word/Outlook), так и к многочисленным библиотекам. Интересно, есть ли какое-либо решение?

Так что же такое VBA и для чего он предназначается?

VBA (Visual Basic for Application) - язык макропрограммирования, основанный на языке Visual Basic.

В приложениях, входящих в комплект MS Office, таких как Excel, Word, PowerPoint и Access, VBA используется для автоматизации множества рутинных задач (напр.: повторяющихся однотипных действий), позволяет создавать формы для общения с пользователем и предлагает множество иного богатого функционала. При помощи VBA доступно управление электронной таблицей посредством объектно-ориентированной модели кода/данных, при помощи VBA-кода входные данные таблиц могут быть обработаны и представлены в итоговых (результирующих) таблицах и диаграммах (графиках). Таблица становится интерфейсом кода, позволяя легко работать, изменять его и управлять расчётами. На выходе VBA проект, используемый в структурах описанных выше приложений (электронные таблицы Excel, презентации PowerPoint, базы Access), компилируется в специальный бинарный исполняемый файл, который размещается внутри файла основного формата. Применительно к Excel это файл vbaProject.bin , который располагается внутри *.xslm-файла в директории /xl , представляющий собой бинарный исполняемый файл проекта, содержащий макрос в откомпилированном (готовом к исполнению) виде.

Наиболее вероятной причиной сбоя является повреждение блока кода VBA, содержащегося в книге Excel. Об истоках этого остается только догадываться, возможно что в структуре .xlsm-файла, в процессе работы с документом, происходят какие-то [непредвиденные разработчиками] изменения, способные приводить блок кода в неработоспособное состояние.

Решение 1: вставка нового листа

Выполните приведенную последовательность действий:

  1. Открываем [проблемный] .xlsm-файл (файл с макросами).
  2. Не нажимаем кнопку Включить содержимое .
  3. Добавляем в книгу Excel новый лист: правая кнопка мыши на ярлыках Лист1/Лист2/Лист3 → Вставить → Лист .
  4. Сохраняем электронную таблицу. Закрываем Excel.
  5. Открываем проблемный файл заново и включаем макросы.

Решение 2: перекомпиляция проекта

Выполните последовательность действий:

  1. Запускаем и открываем новую книгу Excel (не ваш проблемный файл).
  2. Открываем меню Файл - выбираем Параметры - далее открываем Центр управления безопасностью и заходим в Параметры центра управления безопасностью .
  3. В разделе Параметры макросов - выставляем чекбокс Отключить все макросы с уведомлением .
  4. В разделе Надежные расположения - выставляем чекбокс Отключить все надежные расположения .
  5. В разделе Надежные документы - выставляем чекбокс Отключить надежные документы .
  6. Жмем везде OK . Закрываем Excel.
  7. Открываем [проблемный] .xlsm-файл (файл с макросами).
  8. Не нажимаем кнопку Включить содержимое .
  9. Открывает редактор Visual Basic при помощи комбинации клавиш Alt + F11 . Либо можно использовать обходной маневр: в настройках включаем меню Разработчик , после этого в появившемся сверху в ленте меню Разработчик выбираем пункт Visual Basic .
  10. В открывшемся окне редактора Visual Basic (VBA редактор) пересохраняем проект: для этого жмем на панели инструментов кнопку Сохранить (изображение дискетки или комбинация Ctrl + S ).
  11. Выбираем из меню Debug - выбираем пункт меню Compile VBA Project :

recompile vba project

Решение 3: добавление модуля

Дополнительное решение состоит в том, что бы внести изменения в макрос без перекомпиляции.

  1. Открываем [проблемный] .xlsm-файл (файл с макросами).
  2. Не нажимаем кнопку Включить содержимое .
  3. Открывает редактор Visual Basic (при помощи комбинации клавиш Alt + F11 ).
  4. Открываем меню Tools → пункт Options . В открывшемся окне переходим на вкладку General и деактивируем чекбокс Compile on Demand :

Всем привет ранее я рассказал Как настроить ftp в Windows Server 2012 R2, но иногда бывает, что можно словить вот такую вот ошибку:

В ходе открытия папки на FTP-сервере произошла ошибка. Убедитесь, что у вас есть разрешение открыть эту папку. Подробности. Операция прервана по тайм ауту. При попытке зайти на ftp. Давайте посмотрим как ее решить и заодно увеличим безопасность нашего ftp сервера.

После авторизации через проводник на ваш ftp сервер вы можете увидеть вот такую картину

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-01

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-01

С большой вероятностью, что ваше подключение блокирует брандмауэр Windows. Для начала давайте зададим правило в диспетчере IIS и скажем слушать динамические порты. Открывает верхний уровень IIS и выбираем Поддержка брандмауэра.

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-02

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-02

Указываем диапазон портов например 6600-6700 и нажимаем применить.

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-03

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-03

Видим, что настройка брандмауэра для FTP настроена.

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-04

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-04

Открываем меню выполнить сочетание клавишами WIN+R, и вводим firewall.cpl

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-05

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-05

У вас откроется брандмауэр, переходим в пункт Дополнительные параметры.

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-06

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-06

Создадим правило во входящем трафике.

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-07

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-07

Выбираем для порта

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-08

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-08

Указываем диапазон динамических портов от 1025-65000

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-09

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-09

Ставим, что это разрешающее правило

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-10

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-10

Ставим все профили

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-11

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-11

Задаем имя для нашего правила.

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-12

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-12

Теперь ограничим разрешающее правило для нужных определенных разрешенных вами IP.

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-13

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-13

Заходим на вкладку Область, Задаем в поле удаленный ip адрес. Нажимаем Добавить.

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-14

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-14

Задаем нужные вам ip.

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-15

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-15

Видим, наши добавленные ip

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-16

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-16

Так же зайдем в правила исходящего трафика, и убедимся что есть правило разрешающее 20 порт

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-17

Ошибка в ходе открытия папки на FTP-сервере произошла ошибка-17

Так же ограничим, правило разрешающее 21 порт по нужным ip. Делаем port chek, как это делать описано в данной статье. Видим, что порт закрыт, для внешних ip адресов.

Всем привет. Рассмотрим проблему с открыванием файлов в непонятном формате. Знакомая обратилась с такой ситуацией, набрала несколько страниц документа в Word, сохранила, потом пыталась открыть, а на файле желтый восклицательный знак и ошибка при открытии.

не открывается вордовский документ

Так как проблема может коснуться, кого угодно, решил написать маленькую заметку по этому поводу. Файл с расширением *.docm обычно получается при сохранении документа в Microsoft Word в формате «С поддержкой макросов». Есть такой пункт в меню при сохранении файла.

Как открыть файл docm?

Нужно просто переименовать расширение docm в docx и файл прекрасно откроется, если на компьютере установлен Microsoft Office версии не ниже 2007. Переименовать расширение файла не сложно. По-умолчанию в windows xp, 7, 8 установлена настройка для скрытия расширений от пользователя чтобы он случайно не смог что-то удалить\напутать. Чтобы отключить эту своего рода «защиту» нужно:

И теперь рядом с именем файла появляется и его расширение

2) Далее переименовываем расширение нашего файла из docm в docx

переименовываем расширение нашего файла из docm в docx

3) Проверяем – файл прекрасно открывается.

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

Более сложное решение.

Расширение DOCM файла связано с Microsoft Word, содержит встроенные макросы, которые могут быть выполнены в документе; используется для автоматизации документов Word (DOCX), расширяя функциональность макросами и VBA-сценариями. Т.е. файлы *.DOCM являются документом нового формата по умолчанию в Microsoft Word 2007\2010\2013 и по сути они служат той же цели, что файлы DOCX, но также содержать дополнительные макросы и VBA скрипты. .DOCM файлы используют сжатие ZIP для уменьшения размера файла.
Если смена расширения не помогло, тогда надо открыть файл .DOCM в любом архиваторе, например, WinZip. В файле [Content_Types].xml надо заменить строку:

Override PartName=»/word/document.xml» ContentType=»application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml»

Override PartName=»/word/document.xml» ContentType=»application/vnd.ms-word.document.macroEnabled.main+xml»

после этого сохранить файл и согласиться на сохранение изменений в архив.

Поддерживает много форматов в том числе текстовые документы – *.doc, *.docm, *.docx, *.dot,

Чем открыть файл DOCM: 1 комментарий

Как именно использовать эти функции - можете посмотреть в коде надстройки для отправки файлов Excel на FTP сервер

В чем недостаток этого способа - так это в необходимости обеспечения совместимости кода с различными платформами.
В частности, чтобы код с функциями API работал и в Office 2010, и в 64-битной Windows, необходимо заметно увеличить объём кода. А, поскольку описание этих функций из wininet.dll и без того занимает много места (а универсальный код вообще займёт сотню строк), да и надо ещё и разбираться во всех этих функциях, т.к. в разных версиях Windows возможны различия в способе вызова функций из wininet.dll, и были созданы аналоги этих функций для работы с FTP, не использующие WinAPI

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

Основу предлагаемого мной решения составляет модуль класса FTPcommander , который предоставляет вам следующие функции:

  • Function DownloadFile(ByVal FtpFolder$, ByVal FtpFilename$, ByVal LocalPath$) As Boolean
    (Функция скачивает файл с FTP-сервера с именем FtpFilename$ из папки FtpFolder$. Скачанный файл сохраняется на компьютере под именем (и по пути) LocalPath$. Функция возвращает TRUE, если загрузка файла завершилась успешно)
  • Function UploadFile(ByVal LocalPath$, Optional ByVal FtpFolder$, Optional ByVal FtpFilename$ = "") As String
    (Функция загружает файл LocalPath$ по FTP на сервер в папку FtpFolder$. Если задан параметр FtpFilename$, отправленный файл получает имя FtpFilename$. Функция возвращает ссылку на файл, если закачка файла завершилась успешно)
  • Function CreateNewFolder(ByVal FtpFolder$) As Boolean
    (Функция создаёт папку FtpFolder$ на FTP сервере. Возвращает TRUE, если папка была успешно создана, или существовала ранее)
  • Function DeleteFile(ByVal FtpFolder$, ByVal FtpFilename$) As Boolean
    (Функция создаёт папку FtpFolder$ на FTP сервере. Возвращает TRUE, если папка была успешно создана, или существовала ранее)
  • Function DownloadFileFromURL(ByVal URL$, ByVal LocalPath$) As Boolean
    (Функция скачивает файл по ссылке URL$, и сохраняет его по пути LocalPath$. Возвращает TRUE, если файл был успешно загружен)
  • Функция GetLastError возвращает информацию об ошибке, если некая функция была завершена некорректно (возвратила FALSE)

Как использовать модуль класса FTPcommander для работы с файлами по FTP:

1) Откройте прикреплённый к статье файл Excel, и мышом перетащите модуль класса FTPcommander в свой файл

2) Пропишите настройки FTP аккаунта в специальной функции, или сохраните их в реестре Windows
(подробнее об этом - ниже)

3) В своём макросе создаёте экземпляр класса FTPcommander, и используете его методы для работы с файлами
Создать экземпляр класса вам поможет следующий код: Dim FTP As New FTPcommander
Примеры макросов отправки и скачивания файлов доступны в прикреплённом файле (в модуле mod_TestFTP):

Вот один из примеров использования класса FTPcommander:

Как видите, всего 2 строки кода, - и ваш файл оказался загружен на FTP сервер.

Ещё один пример использования:

Есть 2 способа задать настройки FTP аккаунта для использования объектом FTPcommander:

1 способ - один раз запустить макрос следующего вида:

Этот макрос запишет все необходимые настройки в реестр Windows, и впоследствии будет брать их оттуда

Преимущество этого способа: один раз запустили макрос, потом удалили его, - и можно нигде в коде не прописывать секретные данные FTP аккаунта

Недостаток этого способа: при хранении настроек в реестре, возможен доступ только к одному FTP серверу

2 способ - для инициализации объекта FTPcommander использовать специальные функции с настройками:

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

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

Недостаток этого способа: настройки FTP аккаунта хранятся в коде VBA - если файл попадёт постороннему человеку, он легко сможет добраться до этих настроек (как известно, любые пароли на VBA ломаются за секунду)

Комментарии

Вы вводите недопустимый IP адрес, оттого и ошибка.

IP адрес:порт
Подскажите, почему адрес сервера с портом для доступа не работает?
например завожу в поле сервер 121.121455.86:2121 при проверке пишет ошибка, при удалении порта начинает проверять, но естественно ошибка, так как требуется порт.

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

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

Ещё раз здравствуйте! Хотел бы поделиться результатами испытаний на различных компьютерах данного этого скрипта и класса.
Вкратце, всё удручающе плохо, но не потому что автор что-то не учёл или допустил ошибку. Тут как раз наоборот, код логически блестящен, а класс построен безукоризненно на мой взгляд дилетанта.
Проблема заключается совсем другом: утилита ftp, встроенная в систему Windows, крайне капризна в плане работы через различные файрволлы с NAT, которыми изобилуют локальные подсети как у частных лиц, так и организациях. В некоторых случаях, эту утилиту (ftp) не удалось заставить работать должным образом даже при деятельном содействии нескольких системных администраторов разных корпоративных подсетей.

Решение было подсказано "внезапно" работающей программой командной строки на моём компьютере с Windows 10 (это вендорская сборка ОС от бренда, имя не указываю, чтобы не сочли за рекламу). Её имя - cURL, которая чаще привычна пользователям *NIX операционных систем. Чаще всего, cURL на Windows не предустановлен. Вкратце, основной функционал:

С использованием этой утилиты: все пляски с бубнами по поводу NAT, открытием портов, раздачей прав в политиках и проброски портов через шлюзы - сразу закончились!
Установка cURL на Windows любой версии проста и легко ищется по запросу "cURL Windows", я её устанавливал на компьютеры даже в условиях ограниченной учетной записи (т.е., без прав Администратора).
Мне пришлось модифицировать представленный Игорем код в соответствии с задачами моего конкретного случая, и полагаю, это послужит толчком для остальных пытливых пользователей этого замечательного сайта. Код публиковать не буду нигде по многим соображениям, просто подсказал путь принципиального решения проблемы.

Ещё раз спасибо Игорю - автору, программисту и администратору этого замечательного проекта!

Прежде всего хотелось бы поблагодарить Администратора этого замечательного сайта за этот скрипт. Спасибо Игорь, вы делаете хорошее дело!
Заметил, что некоторые пользователи жалуются на то, что при закачке и скачивании файла они получают файл с нулевой длиной.
С ровно такой же проблемой пришлось столкнуться и мне. При этом способ, подсказанный в обсуждении - добавить процесс Excel.exe в исключения для брандмауэра - мне не помог.
Пришлось копнуть немного глубже.
Как оказалось, при отключении брандмауэра, весь функционал класса работает вполне нормально.
Не буду рассказывать долго из-за чего это произошло и как.
Мне помогло добавление правила в исходящие и входящие соединения для файла ftp.exe , который обычно находится в папке Windows/system32/. Правило разрешает все соединения этого файла по протоколу TCP по всем портам. Для справки: у меня Windows 10 Home, которая в мае 2018 обновилась до версии 1803.

Доработки бесплатных макросов, либо консультации по их использованию, - только на платной основе.

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

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

Здравствуйте. подскажите - можно ли как-то сделать загрузку всех файлов из папки по опр. шаблону (типа как по формату, *.jpg/*.ico и т.д.)

В файле с использованием WinAPI прописаны условия для разных версий VBA. А в случае с разными ОС (32 и 64 бит) всё идентично?

День добрый!
Возникла проблема при загрузке файла с фтп. если попытаться сохранить файл в корневой каталог например c:\1.xlsm то он его просто туда не записывает не выдавая никакой ошибке о доступе и т.д. там просто не появляется файла.
А вот если указать путь c:\users\public\1.xlsm то все нормально сохраняется

Здравствуйте, Иван.
Да, можно
Код под ваш случай писать лень, - в комментах его уже дважды писал. (могу под заказ сделать макрос)
Сначала к одному подключаетесь и отправляете файл, потом точно также к другому подключаетесь и отправляете
Можно 2 отдельных макроса сделать (отличающихся только настройками доступа), можно в один макрос объединить.

Здравствуйте, Игорь!
Подскажите, пожалуйста, можно ли с помощью вашего решения загружать файлы одновременно на два разных сервера? Можно ли в настройках задать два фтп? Если да, то подскажите, пожалуйста, каким образом? Где это задать?

Да, как всегда, спешишь и только все усложняешь сам себе )) Благодарю, так все работает. Отправил так же небольшую благодарность за помощь на Я.кошелек.
Заметил маленький недочет, если интересно.
В настройках сайт прописываю так:
.BaseURL = "http://site.ru/"
загрузку файла запускаю так:
link$ = FTP.UploadFile(filename$, "/wp-content/uploads" )
или так
link$ = FTP.UploadFile(filename$, "wp-content/uploads" )
файл в любом случае закачивается норм, а вот в окне отладки результат всегда пишется с пропущенным слэшем:
"Загруженный файл доступен по ссылке: http://site.ru/wp-contentuploads/111.txt"

Андрей, надо быть внимательнее :)
Из примера, где вы взяли код, вы потеряли самую первую строку кода:

Но дело не в этом. Сейчас скачал ваш пример с WinAPI, вставил в НЕГО новую процедуру test() - код ее ниже я писал - запустил и получил ровно ту же ошибку объекта.
Так что я явно что то не так запускаю. Взгляните плиз на код моей процедуры запуска еще разок, как будет время.

Надо из файла Excel в примере перетащить в Access ВСЁ - все 4 модуля класса, форму, и модуль
Тогда всё должно заработать

Вы написали "поставить какие-то галочки", а их там тьма. ) Ну не суть.
Теперь на самую первую строку моей процедуры ругается "Требуется объект", то есть "New FTPsettings" не может выполнить.
В каком классе этот объект задается? Не найду..
Форму я никак не запускал и не сохранял через нее данные, если что. Ведь это наверно не нужно, раз я руками в процедуре прописываю доступы?

Андрей, я же написал, что нужно сделать.
Надо в Tools - References (в редакторе VBA) поставить галочку для библиотеки Microsoft XML v.6.0
(версия может быть и 3.0. или 4.0. - какая найдется)
И ошибка эта исчезнет.

Создал новый файл Access, из вашего примера по ссылке с WinAPI экспортировал в него все что было внутри.
Создал для теста новую процедуру по примеру из коммента:

Здравствуйте, Андрей.
Код без WinAPI использовать не советую, - он не везде работает.
Новая версия (на WinAPI) в плане настроек - аналогичная старой версии, почти все также
Почитайте комменты, - буквально 3 комментами ниже написано, как задавать настройки в коде.

По Access - возможно, надо в Tools - References поставить какие-то галочки (я на access код не тестировал, - но, по идее, все должно работать без серьезных переделок)

Здравствуйте.
Спасибо за код что вы пишите.
Столкнулся с такой же проблемой что и Сергей - при использовании модуля без WinAPI на одном компе все проходит нормально, а тот же код на другом компе пишет пустой файл на FTP.
В результате хочу попробовать модуль с использование WinAPI, но там все в разы сложнее понять. Никак даже не могу найти где мне прописать настройки. В этой версии модуля их нельзя прописать в коде VBA?
И второй вопрос, попробовал использовать этот модуль для VBA Access, но при запуске тестового примера выдает какую-то ошибку связанную с DOM. Может ли модуль на основе WinAPI работать из Access 2010?

Здравствуйте!
А с помощью вашей надстройки возможно получить список файлов с контрольными суммами md5 из определенной папки ftp-сервера, не скачивая эти файлы?

Спасибо огромное, все работает! Правда пришлось так же заменить пять слов на Object )

Читайте также: