Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2014, 11:28   #1
Thunderbird
Пользователь
 
Регистрация: 22.08.2014
Сообщений: 16
По умолчанию Excel 2007 и Mozilla Thunderbird

Добрый день, форумчане и гуру VBA. Столкнулся с проблемой и не могу найти решение, прошу Вашей помощи. Суть проблемы: на компах пользователей установлен Excel 2007, почтовый клиент Mozilla Thunderbird, ОС Win7. Необходимо реализовать возможность отправки текущего документа Excel во вложении через почтовый клиент по умолчанию. Outlook в компании использовать запрещено, с ним было бы намного проще, т.к. при его установке кнопка "Отправить сообщение" в Excel становится активной. В windows XP исправлял эту беду регистрацией mapi32.dll, в Win7 это не работает. Поэтому нужен рабочий макрос или в идеале надстройка для Excel, которая бы повторяла действия стандартной функции "Отправить сообщение" в Excel, но для почтового клиента Mozilla Thunderbird. Заранее благодарю, если описание проблемы получилось скомканным и недостаточно информативным, задавайте вопросы )
Thunderbird вне форума Ответить с цитированием
Старый 22.08.2014, 11:58   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а загляните в справку VBA, там как раз Ваша ситуация описана

Workbook.SendMail Method
Sends the workbook by using the installed mail system.
Syntax
expression.SendMail(Recipients, Subject, ReturnReceipt)

и мощный пример как этим пользоваться:
Example
This example sends the active workbook to a single recipient.
Visual Basic for Applications
ActiveWorkbook.SendMail recipients:="Jean Selva"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.08.2014, 12:07   #3
Thunderbird
Пользователь
 
Регистрация: 22.08.2014
Сообщений: 16
По умолчанию

IgorGO, я видел готовые макросы через SendMail, но с ним есть проблема: как минимум одного получателя письма нужно указать явно в теле макроса. В моем же случае используется адресная книга LDAP. То есть по сути, мне необходимо, чтобы в результате работы макроса открывалось окно отправки сообщений Mozilla Thunderbird с прикрепленным текущим файлом Excel.

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

Private Sub SendMailThunder_Click()

Dim strAn As String
Dim strBetr As String
Dim ..... 'alle anderen; hab die jetzt mal fürs forum rausgenommen

'******** Variable zur Übergabe
strEmpfaenger1 = Range("O19").Value
strEmpfaenger2 = Range("O20").Value
strAn = strEmpfaenger1 & ";" & strEmpfaenger2
strBetr = "Abrechnungsbeleg"
strBody = "Tagesbeleg vom " & Mid(strFile2, 19, 10)

'strFile2 = Range("ah3") 'wird Pfad und Name der aktuellen Datei hinterlegt
strFile2 = "c:\aa\TAG_UP_07.01.2013.txt" 'NUR in Test


'******** Code für Shell Ausführung
strCommand = "C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe"
strCommand = strCommand & " -compose " & Chr(34) & "mailto:" & strAn & "?"
strCommand = strCommand & "subject=" & Chr(34) & strBetr & Chr(34) & "&"
strCommand = strCommand & "body=" & Chr(34) & strBody & Chr(34) & "&"
strCommand = strCommand & "attachment=" & "C:\aa\TAG_UP_L064_07.01.2013.txt"" "

'alternativ könnte man mit file:/// arbeiten ... klappt nicht (??)
'strCommand = strCommand & "attachment=file:///" & Replace(strFile2, "\", "/") ' '& "&" '& "'," _

'strCommand = strCommand & "attachment=""""strFile2""""

Call Shell(strCommand, vbNormalFocus)

End Sub
Thunderbird вне форума Ответить с цитированием
Старый 22.08.2014, 12:12   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

1. сохраните файл на диск
2. укажите путь к нему в параметр attachment
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.08.2014, 12:31   #5
Thunderbird
Пользователь
 
Регистрация: 22.08.2014
Сообщений: 16
По умолчанию

IgorGO, я могу сохранить текущий файл во временную папку в том же куске кода, и дописать путь к нему в параметр attachment, но проблема в том, что даже в случае указания явного пути к файлу, он не прикрепляется к письму=) я не сильно разбираюсь в VBA, но этот вариант я уже опробовал...
Thunderbird вне форума Ответить с цитированием
Старый 22.08.2014, 12:56   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

не прикрепляется потому что где-то делаете ошибку.
судя по тому, что как я понимаю, запускается-таки Thunderbird.exe и все там на месте, кроме файла - не правильно указываете путь к файлу и Thunderbird.exe не может его найти
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.08.2014, 13:01   #7
Thunderbird
Пользователь
 
Регистрация: 22.08.2014
Сообщений: 16
По умолчанию

Если я все правильно понял, то кусок кода с открытием окна сообщения и прикрепленным файлом должен выглядеть так?

strCommand = "C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe"
strCommand = strCommand & " -compose " & Chr(34) & "mailto:" & strAn & "?"
strCommand = strCommand & "subject= & Chr(34) & strBetr & Chr(34) & " & ""
strCommand = strCommand & "body= & Chr(34) & strBody & Chr(34) & " & ""
strCommand = strCommand & "attachment=" & "C:\123.xlsx"""
Thunderbird вне форума Ответить с цитированием
Старый 22.08.2014, 13:25   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

перед Call Shell(strCommand, vbNormalFocus)
посмотрите как выглядит Ваша strCommand, нет-ли там каких-то проблем, можете показать ее сюда в следующем сообщении
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.08.2014, 14:01   #9
Thunderbird
Пользователь
 
Регистрация: 22.08.2014
Сообщений: 16
По умолчанию

Private Sub SendMailThunder_Click()
Dim file As String
file = "C:\123.xlsx"
strCommand = "C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe"
strCommand = strCommand & " -compose " & "mailto:" & "?"
strCommand = strCommand & "subject=" & "&"
strCommand = strCommand & "body=" & "&"
strCommand = strCommand & "attachment=file:///" & file

Call Shell(strCommand, vbNormalFocus)

End Sub
Thunderbird вне форума Ответить с цитированием
Старый 22.08.2014, 18:26   #10
Thunderbird
Пользователь
 
Регистрация: 22.08.2014
Сообщений: 16
По умолчанию

Проблема актуальна =) Скрипт выше не прикрепляет файл к письму...
Thunderbird вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запросы с диапазоном выбора из Access 2007 в Excel 2007 eugene_pkc Microsoft Office Access 6 30.06.2014 01:50
Mozilla Thunderbird через Proxy Stilet Софт 4 11.06.2014 07:58
Запрет режима преобразования файлов excel 2007 для excel 2003 ольгаг Microsoft Office Excel 4 28.03.2014 12:20
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 kovalevskivf Microsoft Office Excel 2 15.05.2009 16:47
Mozilla Thunderbird, или Бесплатные программы для работы с почтой Radmir Софт 1 01.04.2008 00:16