Отправка сообщения в Skype с помощью VBA

Цель: отправить сообщение контакту Skype после выполнения определенного макроса.

Источники: я искал и нашел пару вопросов в SO, пытающихся сделать то же самое. Это основа кода, который я использую Использование Excel VBA для отправки сообщений Skype в групповой чат, а также этот https://www.mrexcel.com/forum/excel-questions/424432-sending-skype-message-through-excel-vba.html В обоих этих вопросах используется аналогичный код .

Проблема. Когда я запускаю код, я получаю следующую ошибку:

Ошибка выполнения «429»: компонент ActiveX не может создать объект

на линии:

Set aSkype = New SKYPE4COMLib.Skype

Вопрос. Этот API все еще работает для такого рода процедур? Как я могу решить текущую ошибку?

Код:

Sub testingskype()

Dim aSkype As SKYPE4COMLib.Skype
Set aSkype = New SKYPE4COMLib.Skype
Dim oChat As Chat
Dim skUser As SKYPE4COMLib.User
    Set skUser = aSkype.User("user_name")
    Set oChat = aSkype.CreateChatWith(skUser.Handle)
    oChat.OpenWindow
    oChat.SendMessage "message"

End Sub

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


person DGMS89    schedule 21.11.2017    source источник
comment
Возможно, вы используете Skype для бизнеса, а SKYPE4COMLIB.skype не поддерживает Skype/Lync для бизнеса stackoverflow.com/questions/43139603/   -  person PankajKushwaha    schedule 21.11.2017
comment
@PankajKushwaha Уже проверил это, я использую обычную версию Skype.   -  person DGMS89    schedule 21.11.2017
comment
Отображается ли Skype4COM 1.0 Type Library в инструментах ›› ссылках? Он выбран?   -  person David Rushton    schedule 21.11.2017
comment
@destination-data Да и Да.   -  person DGMS89    schedule 21.11.2017
comment
Попробуйте с Set aSkype = CreateObject("SKYPE4COMLib.Skype"). Это имеет значение?   -  person LocEngineer    schedule 21.11.2017
comment
@LocEngineer, к сожалению, все еще получаю ту же ошибку.   -  person DGMS89    schedule 22.11.2017
comment
Нашел тему с похожей проблемой. Решение заключалось в использовании Set aSkype = CreateObject("Skype4COM.Skype") (обратите внимание на отсутствующую библиотеку) для поздней привязки.   -  person LocEngineer    schedule 22.11.2017
comment
@LocEngineer Только что попробовал, результат тот же. Не могли бы вы поделиться этой темой?   -  person DGMS89    schedule 22.11.2017
comment
Конечно. mrexcel.com/forum/ excel-вопросы/   -  person LocEngineer    schedule 22.11.2017
comment
Вы случайно не используете 64-битный Excel, не так ли?   -  person LocEngineer    schedule 22.11.2017
comment
@LocEngineer Да, есть ли проблема несовместимости, о которой я не знаю?   -  person DGMS89    schedule 22.11.2017
comment
Что ж, я думаю, в этом и проблема: добавить ссылку на dll skype4com в Windows 7 x64">stackoverflow.com/questions/8576819/ Попробуйте перерегистрировать regsvr32 skype4com.dll .   -  person LocEngineer    schedule 22.11.2017
comment
@LocEngineer Я попытался запустить эту строку в CMD, но получил: Не удалось загрузить модуль skype4com.dll.   -  person DGMS89    schedule 22.11.2017
comment
Нужно бежать сейчас, но есть твоя проблема   -  person LocEngineer    schedule 22.11.2017
comment
@LocEngineer Я следовал полученным инструкциям и заставил его переустановить, поместив файл dll в другие места, но исходная ошибка все еще сохраняется.   -  person DGMS89    schedule 22.11.2017
comment
Используете ли вы 32- или 64-разрядные версии Office и Skype?   -  person Patrick Honorez    schedule 29.11.2017
comment
@PatrickHonorez 64, но я уже пробовал 32-битную версию на другом компьютере. Та же ошибка.   -  person DGMS89    schedule 29.11.2017
comment
Запускается ли Skype при запуске кода?   -  person Patrick Honorez    schedule 29.11.2017
comment
Вы видели это ? stackoverflow.com/q/43139603/78522   -  person Patrick Honorez    schedule 29.11.2017
comment
@PatrickHonorez Я пробовал и с открытым, и с закрытым скайпом. Тот же результат. И да, я сделал, как было указано в предыдущем комментарии. Я не использую Skype для бизнеса.   -  person DGMS89    schedule 29.11.2017
comment
Не удалось загрузить модуль skype4com.dll, это может быть ошибка, связанная с тем, что файл не найден. Попробуйте переместить dll в корень c:\skype4com.dll и зарегистрироваться с помощью regsvr32 c:\skype4com.dll   -  person alpere    schedule 01.12.2017
comment
@alpere, как указано в некоторых предыдущих комментариях, есть ветка, в которой объясняется, как это сделать, и, тем не менее, она дала тот же результат.   -  person DGMS89    schedule 01.12.2017
comment
@ DGMS89 DGMS89 Я видел этот комментарий, но вы сказали, что вам не удалось загрузить сообщение, что может быть проблемой пути. Вот так: social.technet.microsoft.com/Forums/getfile/262956   -  person alpere    schedule 01.12.2017
comment
Убедитесь, что раздел реестра HKCR\WOW6432Node\CLSID\{830690FC-BF2F-47A6-AC2D-330BCB402664}\InprocServer32 имеет путь по умолчанию C:\PROGRA~2\COMMON~1\Skype\SKYPE4~1.DLL и что он существует.   -  person Florent B.    schedule 01.12.2017
comment
Вы также можете попробовать CreateObject("new:{830690FC-BF2F-47A6-AC2D-330BCB402664‌​}")   -  person Florent B.    schedule 01.12.2017
comment
@alpere Да, я делал это раньше, dll была успешно зарегистрирована именно с помощью этой команды. Тем не менее ошибка от OP все еще сохраняется.   -  person DGMS89    schedule 01.12.2017
comment
@ФлорентБ. Попробовал предложенный вами вариант, все равно та же ошибка. Но я не знаю, как проверить ключ реестра, как вы прокомментировали.   -  person DGMS89    schedule 01.12.2017
comment
либо вызовите reg QUERY HKCR\WOW6432Node\CLSID\{830690FC-BF2F-47A6-AC2D-330BCB402664}\InprocServer32 из cmd, либо выполните regedit для просмотра реестра.   -  person Florent B.    schedule 01.12.2017
comment
@ФлорентБ. Я получаю: системе не удалось найти указанный раздел или значение реестра.   -  person DGMS89    schedule 01.12.2017
comment
@ DGMS89, невозможно загрузить 32-битную COM-dll из 64-битного приложения (Excel здесь). Поскольку Skype поставляется только в 32-разрядной версии, я думаю, ваш единственный вариант — переключиться на 32-разрядную версию Excel.   -  person Florent B.    schedule 03.12.2017


Ответы (2)


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

«Skype для бизнеса» — это по сути ребрендинг Lync с 2013 года, поэтому важно понимать, что

Skype <> "Skype for Business"

Это как java и javascript, совершенно разные, просто похожие названия для брендинга.


Важно понимать платформу разработчиков Skype или просто Skype SDK, который является зонтиком для Office Skype, Skype Web, Skype для бизнеса и Skype.

Платформа для разработчиков Skype

Среди всех API/SDK необходимо использовать:

документация Lync 2013 SDK

Поскольку это единственный доступный SDK для Skype Desktop, Lync и всех последующих версий SFB.

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

person jainashish    schedule 19.02.2019

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

Здесь появляется тот же код: https://stackoverflow.com/a/43172531/8716187

Вы загрузили и зарегистрировали Skype dll (появляется ошибка, связанная с тем, что не добавляется элемент управления ActiveX). Это может быть только x32, если вы используете x64.

Когда вы устанавливаете программное обеспечение, использующее зависимость Skype4COM.dll, оно должно автоматически зарегистрировать этот файл. В некоторых случаях файл DLL может быть не зарегистрирован соответствующим образом, что в результате приведет к ошибке "Skype4COM.dll не зарегистрирован". К счастью, вы всегда можете воспользоваться встроенной утилитой под названием "Сервер регистрации Microsoft" (regsvr32.exe), чтобы заново зарегистрировать файл Skype4COM.dll. Как перерегистрировать Skype4COM.dll из командной строки с повышенными привилегиями (Windows XP, Vista, 7, 8 и 10):

Нажмите кнопку «Пуск».

Введите "command" в поле поиска... НЕ НАЖИМАЙТЕ ENTER!

Удерживая CTRL-Shift на клавиатуре, нажмите ENTER.

Вам будет предложено диалоговое окно разрешения.

Нажмите Да.

Введите следующую команду: regsvr32 /u Skype4COM.dll.

Нажмите ВВОД. Это приведет к ОТМЕНЕ РЕГИСТРАЦИИ вашего файла.

Введите следующую команду: regsvr32 /i Skype4COM.dll.

Нажмите ВВОД. Это перерегистрирует ваш файл.

Закройте окно командной строки.

Перезапустите программу, связанную с ошибкой Skype4COM.dll.

https://www.solvusoft.com/en/files/missing-not-found-error/dll/windows/skype-for-com-api/skype4com/skype4com-dll/

Ура, ВВК

person Wookies-Will-Code    schedule 01.12.2017
comment
Спасибо за ответ. Я уже пробовал это, также пытался переустановить скайп и офис. Тот же результат. - person DGMS89; 06.12.2017