Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> найти таблицу в документе MSWord 
:(
    Опции темы
Anet
Дата 6.2.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



Здравствуйте!

я пишу макрос, который исследует документ MSWord.
макрос, пробегаея по абзацам, определяет их стиль и в файл записывает определенные данные.
в тексте могут встречаться таблицы, помогите научить макрос определять, что в документе начинается таблица.
PM MAIL ICQ   Вверх
likhobory
Дата 6.2.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



Код

For Each par In ActiveDocument.Paragraphs
If par.Range.Information(wdWithInTable) Then .......................
''''''''''''''''''''''''''''''
Next



--------------------
PM MAIL   Вверх
Anet
Дата 7.2.2006, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



Спасибо большое! как раз то, что надо smile


мне бы еще научиться выявлять картинки в документе и сохранять их в отдельные файлы... smile
PM MAIL ICQ   Вверх
likhobory
Дата 7.2.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



1. как могут быть расположены рисунки - в тексте, перед текстом, в полотне... или возможны все варианты

2. какая версия офиса - в office2003 возможности экспорта графики несколько шире..


--------------------
PM MAIL   Вверх
Anet
Дата 8.2.2006, 06:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



    1. office2000
    2. текст относительно рисунка располагается только снизу и сверху
    3. горизонтальное выравнивание рисунка может быть любое - надо определять его положение на странице: отступы справа, слева и сверху - в случае произвольного выравнивания, тип - в случае установленного редактором выравнивания (по центру, по правому краю, по левому краю)

PM MAIL ICQ   Вверх
likhobory
Дата 8.2.2006, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



Цитата(Anet @ 8.2.2006, 06:44 Найти цитируемый пост)

слева и сверху - в случае произвольного выравнивания

Код

With ActiveDocument.Shapes(x)
 If .Type=msoPicture Then
 x=.Left
 y=.Top
 '''''''''''''''''''

Цитата(Anet @ 8.2.2006, 06:44 Найти цитируемый пост)

тип - в случае установленного редактором выравнивания

Код

With ActiveDocument.InLineShapes(x)
 If .Type=wdInlineShapePicture Then 
 AlType=.Range.ParagraphFormat.Alignment 
 ''''''''''''''''''''


Цитата(Anet @ 8.2.2006, 06:44 Найти цитируемый пост)

1. office2000

для 2000-го могу предложить вариант с использованием winapi, хотя, вероятно, кто-то предложит более удобное решение
Код

Private Declare Function OpenClipboard _
 Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Declare Function GetClipboardData _
 Lib "user32.dll" (ByVal wFormat As Long) As Long
Private Declare Function CopyEnhMetaFile _
 Lib "gdi32" Alias "CopyEnhMetaFileA" _
 (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
 
Const CF_ENHMETAFILE = 14
 
Sub SaveInlineShapePicture()
Dim hStrPtr As Long

For Each Pic In ActiveDocument.InlineShapes

 If Pic.Type = wdInlineShapePicture Then
 
    Pic.Range.CopyAsPicture
    
    If Not CBool(OpenClipboard(0&)) Then
      MsgBox "Не удалось открыть буфер"
      GoTo NextPic:
    End If
     
    hStrPtr = GetClipboardData(CF_ENHMETAFILE)
    If Not CBool(hStrPtr) Then
      MsgBox "Не удалось получить дескриптор"
      GoTo CloseClip
    End If

    
    If Not CBool(CopyEnhMetaFile(hStrPtr, "c:\" & "Pic" & hStrPtr & ".emf")) Then
      MsgBox "Не удалось создать файл"
      GoTo CloseClip
    End If
    
 
CloseClip:
    CloseClipboard

NextPic:

End If

     Next
   
End Sub






--------------------
PM MAIL   Вверх
Anet
Дата 9.2.2006, 05:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



Спасибо, теперь все понятно. smile

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

Это сообщение отредактировал(а) Anet - 9.2.2006, 05:45
PM MAIL ICQ   Вверх
likhobory
Дата 9.2.2006, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



Цитата(Anet @ 9.2.2006, 05:43 Найти цитируемый пост)

Но почему, и спользуя средства winapi, картинку сохраняем как .emf

а почему бы и нет, один из возможных графических форматов.. smile



--------------------
PM MAIL   Вверх
Anet
Дата 10.2.2006, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



likhobory, спасибо большое за помощь!


на самом деле VBA совсем не сложен. smile
PM MAIL ICQ   Вверх
Anet
Дата 20.2.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



likhobory, я попробовала использовать, предложенный Вами код для сохранения картинок в отдельный файл, но он почему-то не работает. Сначала было сообщение - "Не удалось создать файл", а при последующих запусках - выполнение происходит, но файл не появляется.

С ног сбилась отыскать другой способ извлечения картинок и сохранения их в отдельные файлы. Может есть все-таки эти тайные строки кода?! smile
PM MAIL ICQ   Вверх
likhobory
Дата 21.2.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



у меня данный код отрабатывал без проблем под различными версиями как Windows так и офиса

как вариант- (если есть возможность) для этой цели рекомендую office2003, можно обойтись (почти) без api


--------------------
PM MAIL   Вверх
Anet
Дата 9.3.2006, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



likhobory, предложенный код заработал, но.... вот файлы которые он создает потом нельзя удалить!
ошибка: File sharing violation. Cannot delete the file.


P.S.: Удалять можно, но только тогда когда закрываю word, значит файл открыт на чтение и после создания не закрывается кодом VBA

Это сообщение отредактировал(а) Anet - 9.3.2006, 06:45
PM MAIL ICQ   Вверх
Anet
Дата 10.3.2006, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



Хочется снова вернуться к таблицам!

помогите пожалуйста определить уровень вложенности таблиц друг в друга в одной из ячеек самой главной таблицы.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.