![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.03.2009
Сообщений: 39
|
![]()
Суть проблемы:
Есть отчеты создаваемые внешним приложением в формате .rtf, нужно их вгрузить в Excel для последующей обработки. Я попытался это реализовать через Word т.к. ничего лучше не придумал ![]() код: Private Sub CommandButton5_Click() Dim curDir, dataFile As String, WordObject As Object dataFile = "\hydrostatic.rtf" curDir = ActiveWorkbook.Path Application.DisplayAlerts = False Application.ScreenUpdating = False With CreateObject("Word.Application") .DisplayAlerts = wdAlertsNone .Documents.Open Filename:=curDir & dataFile, ReadOnly:=True .Selection.WholeStory .Selection.Copy .Quit End With Set WordObject = Nothing With Sheets("one_f_in") .Cells(1, 1).Select .paste End With Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub в принципе работает, но в процесе выполнения Word выдает два меседжа следующего содержания: "Неверно указана единица измерения" а следом за ним "Невозможно закрыть приложение Microsoft Office Word, так как открыто диалоговое окно. Нажмите кнопку "Ok", перейдите в приложение Word и закройте это окно." а теперь вопрос почему это происходит и как от этого избавиться? ![]() файл rtf прилагаю (хотя в ворде он открывается без проблем ![]() Последний раз редактировалось Oooleg; 09.04.2009 в 18:59. |
![]() |
![]() |
![]() |
#2 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Сразу бросаются в глаза эти 2 строчки:
Код:
Короче говоря, у вас подключена к проекту библиотека Word? 1) Если подключена, то не проще ли так: dim wa as new word.application with wa ... 2) Если не подключена (о чем свидетельствует запись WordObject As Object), то не надо использовать вордовские константы типа wdAlertsNone - в этом случае они будут возвращать ноль. Возможно, ошибка "Неверно указана единица измерения" как раз из-за этого. Далее, Цитата:
строку .visible = true и увидите те самые сообщения. Тогда хоть будет понятно, из-за чего они появляются. Цитата:
|
||
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 30.03.2009
Сообщений: 39
|
![]() |
![]() |
![]() |
![]() |
#4 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
А зачем нам Вордовский документ?
Проблема-то не в нём, а в Excel-евском макросе... Его надо написать без ошибок, и всё будет работать. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 30.03.2009
Сообщений: 39
|
![]()
Подключил библиотеку Microsoft Word 12.0 Object Library
Код теперь выглядит следующим образом: Dim curDir, dataFile As String, WA As New Word.Application dataFile = "\hydrostatic.rtf" curDir = ActiveWorkbook.Path With WA .Visible = True .Documents.Open Filename:=curDir & dataFile, ReadOnly:=True .Selection.WholeStory .Selection.Copy .Quit End With With Sheets("one_f_in") .Cells(1, 1).Select .paste End With а сообщения вот так: первое Запись.jpg второе Запись2.jpg в чем проблема по прежнему не понятно... ![]() |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 24.06.2008
Сообщений: 516
|
![]()
Попробуй заменить
.Selection.WholeStory на ActiveDocument.Tables(1).Select Обе проблемы снимаются ![]() (это если нужно только таблица)
Можно сделать все! Было бы время, да деньги...
Последний раз редактировалось mchip; 10.04.2009 в 11:27. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 24.06.2008
Сообщений: 516
|
![]()
Можно еще так:
.Quit - убрать В конце вставить WA.Quit SaveChanges:=wdDoNotSaveChanges Тогда будет копироваться весь документ вместе с графиком
Можно сделать все! Было бы время, да деньги...
|
![]() |
![]() |
![]() |
#8 | |
Пользователь
Регистрация: 30.03.2009
Сообщений: 39
|
![]() Цитата:
Количество таблиц в отчетах разное, но даже если закрыть на это глаза то проблему такой вариант не решает, поскольку первый меседж возникает при первом упоминании объекта WA WA.Visible = True и вот вам здрасте! Запись.jpg ну и так далее... ![]() |
|
![]() |
![]() |
![]() |
#9 | |
Пользователь
Регистрация: 30.03.2009
Сообщений: 39
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 24.06.2008
Сообщений: 516
|
![]()
Вот. Все работает без ошибок.
Можно сделать все! Было бы время, да деньги...
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Borland C++ Builder - импорт из Excel в StringGrid | nuser | C++ Builder | 3 | 10.01.2015 12:38 |
Импорт таблиц | АлёнаP | Microsoft Office Access | 0 | 18.03.2009 16:45 |
Импорт из Excel в Access | AD_min | БД в Delphi | 0 | 28.10.2008 09:29 |
У меня возникла небольшая проблемка с определением последнего активного окна. | hoza_syl | Помощь студентам | 6 | 23.05.2008 17:03 |
Небольшая работа (1000р) Excel | magellan | Фриланс | 3 | 13.01.2008 19:18 |