|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.04.2009, 18:51 | #1 |
Пользователь
Регистрация: 30.03.2009
Сообщений: 39
|
Импорт таблиц из *.rft в Excel, небольшая проблемка
Суть проблемы:
Есть отчеты создаваемые внешним приложением в формате .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. |
09.04.2009, 19:23 | #2 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Сразу бросаются в глаза эти 2 строчки:
Код:
Короче говоря, у вас подключена к проекту библиотека Word? 1) Если подключена, то не проще ли так: dim wa as new word.application with wa ... 2) Если не подключена (о чем свидетельствует запись WordObject As Object), то не надо использовать вордовские константы типа wdAlertsNone - в этом случае они будут возвращать ноль. Возможно, ошибка "Неверно указана единица измерения" как раз из-за этого. Далее, Цитата:
строку .visible = true и увидите те самые сообщения. Тогда хоть будет понятно, из-за чего они появляются. Цитата:
|
||
09.04.2009, 21:26 | #3 |
Пользователь
Регистрация: 30.03.2009
Сообщений: 39
|
|
09.04.2009, 21:32 | #4 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
А зачем нам Вордовский документ?
Проблема-то не в нём, а в Excel-евском макросе... Его надо написать без ошибок, и всё будет работать. |
10.04.2009, 10:37 | #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 в чем проблема по прежнему не понятно... |
10.04.2009, 11:21 | #6 |
Форумчанин
Регистрация: 24.06.2008
Сообщений: 516
|
Попробуй заменить
.Selection.WholeStory на ActiveDocument.Tables(1).Select Обе проблемы снимаются (это если нужно только таблица)
Можно сделать все! Было бы время, да деньги...
Последний раз редактировалось mchip; 10.04.2009 в 11:27. |
10.04.2009, 11:45 | #7 |
Форумчанин
Регистрация: 24.06.2008
Сообщений: 516
|
Можно еще так:
.Quit - убрать В конце вставить WA.Quit SaveChanges:=wdDoNotSaveChanges Тогда будет копироваться весь документ вместе с графиком
Можно сделать все! Было бы время, да деньги...
|
10.04.2009, 15:26 | #8 | |
Пользователь
Регистрация: 30.03.2009
Сообщений: 39
|
Цитата:
Количество таблиц в отчетах разное, но даже если закрыть на это глаза то проблему такой вариант не решает, поскольку первый меседж возникает при первом упоминании объекта WA WA.Visible = True и вот вам здрасте! Запись.jpg ну и так далее... |
|
10.04.2009, 15:32 | #9 | |
Пользователь
Регистрация: 30.03.2009
Сообщений: 39
|
Цитата:
|
|
10.04.2009, 15:33 | #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 |