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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2013, 23:20   #1
tatram2006
 
Регистрация: 26.01.2013
Сообщений: 8
По умолчанию Word и фотографии

Добрый вечер! Как можно включить в документ Word фотографии: на один лист по шесть фотографий. Приходится по роду деятельности составлять фотообзор и при этом количество фотографий формируемых в документе может достигать 100 шт.
При этом на эту механическую работу приходится тратить много времени и составлять таблицы и включать каждую фотографию по отдельности. Как можно автоматизировать или хотя бы ускорить эту процедуру??? слышал мнение что наверное простыми средствами Word это не получится и надо писать скрипты Не могли бы вы выскзать свои мнения как можно это решить. Спасибо заранее за внимание и ответы!!!
tatram2006 вне форума Ответить с цитированием
Старый 27.01.2013, 01:10   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Я когда-то делал такую штуку для магазина: из картинок формировался каталог товаров. Только макросами. Не видя, что должно получиться, могу посоветовать воспользоваться приличным просмотрщиком картинок с функциями генерации разных типов галерей, списков, индексов и т.п. Я давно пользуюсь XnView.
Так вот, есть там функция создания индексного листа. Задаёте количество строк и столбцов на листе, размеры листа и получаете нечто вроде приведённого во вложении. Там есть и другие параметры для настройки. А уже это изображение можно вставлять на страницу с обтеканием за текстом и поверх него в нужных местах писать, что нужно, если есть необходимость.
Пока ничего лучше в голову не приходит. Ну а если нет, то придётся писать макрос, но желательно увидеть, что должно получиться в итоге

Выдалась свободная минутка и я прикинул как может выглядеть макрос вставки в таблицу в самом простом варианте:
Код:
Sub InsertPhotosToTable()
    Const ROWS_PER_PAGE As Integer = 3 'Количество строк на страницу
    Dim oTbl As Table
    Dim i As Integer
    Dim h As Single
    Dim colimg As New Collection 'Коллекция для имён выбранных файлов
    
    'Диалог выбора файлов---------------
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Title = "Выберите изображения"
        .Filters.Clear
        .Filters.Add "Изображения JPEG", "*.jpeg;*.jpg"
        .Filters.Add "Изображения PNG", "*.png"
        .Filters.Add "Все изображения", "*.jpeg;*.jpg;*.png"
        If .Show Then
            For i = 1 To .SelectedItems.Count
                colimg.Add .SelectedItems(i)
            Next
        Else
            Exit Sub
        End If
    End With
    '-----------------------------------

    Application.ScreenUpdating = False
    'Вставка таблицы
    Set oTbl = ActiveDocument.Tables.Add(Selection.Range, colimg.Count / 2 + IIf(colimg.Count Mod 2 = 0, 0, 1), 2)
    oTbl.Rows.HeightRule = wdRowHeightExactly
    'Изменение свойств таблицы----------
    With oTbl
        .AllowPageBreaks = False 'Запрет переноса строк
        'Внутренние поля ячеек--------------
        .TopPadding = CentimetersToPoints(0)
        .BottomPadding = CentimetersToPoints(0)
        .LeftPadding = CentimetersToPoints(0)
        .RightPadding = CentimetersToPoints(0)
        '-----------------------------------
        'Выравнивание внутри ячеек----------
        .Range.ParagraphFormat.FirstLineIndent = 0
        .Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
        .Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter
        '-----------------------------------
        'Ширина таблицы---------------------
        .PreferredWidthType = wdPreferredWidthPercent
        .PreferredWidth = 100
        '-----------------------------------
    End With
    '-----------------------------------

    'Установка высоты строк, чтобы на странице помещалось три строки таблицы
    With oTbl.Range.Sections.First.PageSetup
        h = (.PageHeight - oTbl.Range.Information(wdVerticalPositionRelativeToPage) - .BottomMargin) / ROWS_PER_PAGE
        oTbl.Rows.Height = h - oTbl.Range.Font.Size / ROWS_PER_PAGE
    End With

    'Вставка выбранных картинок
    For i = 1 To colimg.Count
        oTbl.Range.Cells(i).Range.InlineShapes.AddPicture colimg.Item(i), False, True
        DoEvents
    Next
    Application.ScreenUpdating = True
End Sub
Изображения
Тип файла: jpg Лист Эскизов-1.jpg (133.3 Кб, 129 просмотров)
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 27.01.2013 в 07:55.
viter.alex вне форума Ответить с цитированием
Старый 27.01.2013, 11:06   #3
tatram2006
 
Регистрация: 26.01.2013
Сообщений: 8
По умолчанию

viter.alex спасибо что отозвался. я честно говоря со скриптами на вы поэтому попробую изучить и внедрить что ты прислал. пример того что должно получиться я прикрепил к ответу. таких таблиц может достинать до 50 в одном документе. а по поводу XnView. я так понимаю от объединяет в один jpec файл . а у меня же к каждой фоографии есть обозначение и общая подрисуночная надпись. поэтому чуствую что придется со скриптами придется иметь дело.
Вложения
Тип файла: rar пример.rar (155.7 Кб, 9 просмотров)

Последний раз редактировалось tatram2006; 27.01.2013 в 11:09.
tatram2006 вне форума Ответить с цитированием
Старый 27.01.2013, 11:42   #4
tatram2006
 
Регистрация: 26.01.2013
Сообщений: 8
По умолчанию

viter.alex/ я попробывал ты молочик!!!!!!!!!! это почти то что мне нужно. попробывал в word 2007 и сработало . только вот не много не ссответсвует тому шаблону который я прикрепил . а как его сложно доработать или как?
tatram2006 вне форума Ответить с цитированием
Старый 27.01.2013, 22:35   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Переделал макрос. чтобы результат примерно соответствовал образцу. Код не выкладываю, т.к. он слишком длинный. Файл из приложенного архива извлечь и импортировать в шаблон Normal.dot через меню File→Import... в среде VBA.
В отличие от предыдущего варианта, я сделал не одну таблицу, расположенную на нескольких страницах, а на каждой странице своя таблица
Вложения
Тип файла: zip mdlPhotosToTable.zip (1.8 Кб, 13 просмотров)
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 28.01.2013, 01:43   #6
tatram2006
 
Регистрация: 26.01.2013
Сообщений: 8
По умолчанию

viter.alex Привет!!! Спасибо огромнейшее ты даже не знаешь как облегчил мне этим жизнь. Это то что мне надо!!! конечно для идеала хорошо было бы чтобы перед тем как вставить запрашивал бы общую надпись внизу которая в принципе для всех фотографий одна и та же И если на каждом листе над каждой фотографией макрос сам ставил бы "а, б, в , г, д,е ".
я даже не знаю как тебя отблагодарить. я хочу чуть чуть денег тебе за твой труд подкинуть, хотя я и не богатый но отблагодарить хочу хотя бы по возможности все таки от души. может я тебе на телефон положу или как можно это сделать???
tatram2006 вне форума Ответить с цитированием
Старый 28.01.2013, 10:17   #7
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Ну что ж, с буквами, так с буквами. Импортировать оба файла из архива. Желательно в Normal.dot. Это не самый простой вариант, но мне так захотелось
Если что-то не работает: доверить доступ к объектной модели VBA (Разработчик→Безопасность макросов)
Вложения
Тип файла: zip вставка фотографий (макрос).zip (2.8 Кб, 18 просмотров)
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 28.01.2013, 22:00   #8
tatram2006
 
Регистрация: 26.01.2013
Сообщений: 8
По умолчанию

Ок по поводу номера так и сделаю...
Тут проблемка есть: я попробывал два файла импортировать и выдает ошибку. включил функцию доверить доступ к объектной модели VBA (Разработчик→Безопасность макросов)....тока все равно вылезает сообщение как в скриншоте???
Изображения
Тип файла: jpg захват---.jpg (72.7 Кб, 126 просмотров)
tatram2006 вне форума Ответить с цитированием
Старый 29.01.2013, 01:21   #9
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Моя вина, не досмотрел. В редакторе VBA меню Tools→References... В списке найти и отметить Microsoft Forms 2.0 Object Library. Повторно импортировать файлы не нужно
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 29.01.2013, 14:39   #10
tatram2006
 
Регистрация: 26.01.2013
Сообщений: 8
По умолчанию

viter.alex привет. че то я поискал и никак не могу найти micrisoft form 2.0/.
там у меня есть microsoft office 12.0 object library и на нем уже галочка стояла. все просмотрел три раза че то я не нашел. у меня стоит word 2007 и 2003 тоже система xp. там не может зависить от системы? или может у меня как то по другому оно называется? вообщем вот на скрине то что я нашел. а пока такое же сообщение выдает no define...
Изображения
Тип файла: jpg скрин---.jpg (72.5 Кб, 114 просмотров)
tatram2006 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Фотографии vetatto Мультимедиа в Delphi 3 30.12.2011 17:15
Форма для фотографии (Word 2003) KASY Microsoft Office Word 4 18.10.2011 15:44
Фотографии Vlados1994 Помощь студентам 0 01.06.2011 00:37
Фотографии maks5 Паскаль, Turbo Pascal, PascalABC.NET 3 17.03.2011 23:48
отображение фотографии вадим-курбатов Microsoft Office Excel 2 24.09.2009 13:24