Страница: 1 |
|
Вопрос: *.doc --> *.pdf плюс куча тонкостей.
|
Добавлено: 26.04.09 15:57
|
|
Автор вопроса: DrugON__
|
Доброго времени суток!
С VBA+Word не сталкивался никогда. Вообще какое-то отвращение к этому текстовому редактору присутствует, не знаю по какой причине, но о программировании для него я не думал даже в самых страшных снах. Теперь вот приходится. Вкратце обрисую проблему.
Есть вордовский файл с именем "FM_ddmmyyyy.doc". Необходимо вот что:
1) пересохранить его под новым именем, где меняется только дата, а сама дата берется из документа. Но если в Excel можно объявить переменной значение ячейки с датой, то как это сделать здесь?
2) переконвертировать полученный файл в PDF-формат
3) разослать в таком виде по списку рассылки Outlook'а.
С пунктом 1 никаких идей вообще.
Там есть еще одна сложность, в документе Word есть Linked Worksheet Object (у меня английская версия, не могу сказать как точно в русской зовется, возможно, "Связанный объект"). Грубо говоря, это ссылка-таблица на область таблицы Excel, как она туда вставляется и можно ли ее редактировать (сами ссылки или же изменить ссылки, чтобы ссылались на другую книгу Excel)? Опять же, из-за незнания Ворда, трудно понять как это сделано.
Пункт 2 - установлен виртуальный принтер, конвертирующий в ПДФ-файл. Но как прописать печать и присвоение нового имени файлу?
Пункт 3. Тут вроде нет проблем, справлюсь, я думаю, но, опять же, пробовал на Excel - получалось. Что нужно, чтобы и в Ворде получилось?
Заранее всем благодарен за советы и помощь!
Ответить
|
Номер ответа: 2 Автор ответа: DrugON__
Вопросов: 5 Ответов: 21
|
Профиль | | #2
|
Добавлено: 04.05.09 19:35
|
1. Вообще никогда с Вордом не работал, за исключением пояснительной записки к диплому, но это было давно и неправда. Каким образом выделить определенный диапазон знаков при помощи VBA? VBA профессионально не занимаюсь, это больше хобби и попытки упростить рутину по работе. Алгоритм-то и так понятен, а вот как это воплотить в коде - I have no idea
2. Так и сделал. Поставил его по умолчанию, задал определенную директорию в настройках для сохранения pdf-файлов. С присвоением имени тоже не стал заморачиваться - написал просто копирование полученного файла с новым именем в другую (нужную мне) папку. Но тут сложность вот в чем. В Excel всё получилось и нормально работает, но требуется сделать всё вообще "не прикасаясь" к Excel, в этом-то и трабл. В VBA Word'а почему-то не работает - FileSystemObject.CopyFile
Ума не приложу почему. Может какую-то хитрую библиотеку подключить надо? Всё перепробовал, упорно не хочет Ворд воспринимать FileSystemObject и всё тут.
3. Думал, что никаких. Но если раньше я из Excel'я отправлял сам файл вложением:
- ActiveWorkbook.SendMail Recipients:="Список рассылки"
,
то и сейчас думал, что проблем не будет. Но! Теперь мне нужно отправить письмо с вложением совсем постороннего файла (pdf). Перекурил кучу поисков, потратил пару дней (опять же из-за почти нулевого уровня в VBA), нарыл похожий скрипт на VBS и немного его переделал под себя. Может кому-то пригодится:
- Sub Otpravka()
-
- Dim MSG As Object
- Dim Config As Object
- Dim CFields As Object
- Dim strBody As String
- Const ForReading = 1, ForWriting = 2, ForAppending = 8
-
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set f = fso.OpenTextFile("c:\Apps\MessText.txt", ForReading)
- MessText = f.ReadAll
- f.Close
- Set f = Nothing
- Set fso = Nothing
-
-
-
- Set MSG = CreateObject("CDO.Message")
- Set Config = CreateObject("CDO.Configuration")
- Set CFields = Config.Fields
- Set MSG.Configuration = Config
- CFields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
- CFields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "SLMCPF-S-01001"
- CFields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2
- CFields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "DrugON@shell.com"
- CFields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = ""
- CFields("urn:schemas:mailheader:content-language") = "windows-1251"
- CFields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
- CFields.Update
- MSG.To = "billgates@microsoft.com"
- MSG.From = "DrugON@shell.com"
- MSG.subject = "preved, billgates"
- MSG.TextBody = MessText
- MSG.AddAttachment("C:\Apps\Temp\Test_attach.txt")
- MSG.Send
- Set CFields = Nothing
- Set Config = Nothing
- Set MSG = Nothing
-
- End Sub
Знаю, что можно сделать отправку через MAPI, но пока не разобрался, да и мне на моем уровне больше важен результат, чем способ его достижения .
В общем всё это чудесно, если бы не пришлось всё переделывать под ненавистный Word.
Если он не понимает FileSystemObject (хотя в хелпе описание, идентичное Excel'евскому и я думаю, что сам что-то не учел), то думаю, что и с отправкой по почте тоже вылезет какой-нибудь геморрой.
Если кто-то может помочь советом каким образом это все переконвертить так, чтобы работало из Ворда, буду очень благодарен.
Кстати, можно ли из Excel или Word запускать VBS-скрипты?
Ответить
|
Страница: 1 |
Поиск по форуму