PDA

Показать полную графическую версию : Нужно создать таблицу из большого количества фотографий (около 1000)


Gowdin
01-09-2017, 16:20
Задача следующая. Есть большое количество фото, порядка 1000, которые нужно вставить в таблицу, чтобы каждое фото встало в свою ячейку. В MS Word приходится вставлять поштучно, что очень долго. Можно автоматизировать процесс? Типа, выделил все файлы фотографий, вставил в документ и они распределились по ячейкам таблицы, одно фото - одна ячейка. Либо, может есть какой сторонний софт, который может создать таблицу из фотографий, которую потом вставить в Word?
В идеале, конечно, силами самого Word (2016), т.к., таблица уже создана и отформатирована.

Iska
01-09-2017, 17:32
В MS Word приходится вставлять поштучно, что очень долго. »
А макросы на что?

В идеале, конечно, силами самого Word (2016), т.к., таблица уже создана и отформатирована. »
Тогда прилагайте в архиве Ваш документ и образцы фотографий (если сюда не поместится, то на RGhost или Яндекс.Диск). Укажите, что делать, если количество выбранных фотографий окажется больше числа ячеек таблицы.

Gowdin
01-09-2017, 18:39
Вот: https://yadi.sk/d/lKWxMkAD3MXKYg
дефектовка_пример - то, как оно должно выглядеть.
По-простому, через "запись макроса" что-то не разобрался, как перемещаться по списку файлов.

Iska
02-09-2017, 09:07
Gowdin, так, ну, кода-то там всего ничего будет. Примерная болванка:
If objFSO.FolderExists(strFolder) Then
With ActiveDocument.Tables.Item(1)
For Each objFile In objFSO.GetFolder(strFolder).Files
.Rows.Add
.Cell(.Rows.Count, 1).Range.Text = .Rows.Count - 2
.Cell(.Rows.Count, 2).Range.InlineShapes.AddPicture FileName:=objFSO.BuildPath(strFolder, objFile.Name), LinkToFile:=False, SaveWithDocument:=True
Next
End With
End If

Основной вопрос — как лучше и удобнее будет организовать исполнение?! То есть, как сделать, например, выбор: выбор каталога с файлами, выбор файлов из одного каталога, выбор файлов с любого места? Как быть с документом: заполнять уже открытый существующий документ, делать на основе шаблона, создавать программно? В общем, опишите, как Вы сие видите.

Gowdin
02-09-2017, 19:33
Сие я вижу так.
У меня уже есть таблица в документе.
Я устанавливаю курсор на начальную ячейку, с которой буду заполнять столбец вниз.
Открываю диалог "вставить рисунок".
Выбираю нужное мне количество файлов.
Жму "вставить".
И они вставляются с начальной ячейки вниз.
Но не так, как делает Word по умолчанию, когда все рисунки вставляются в одну ячейку, а с распределением по строкам: одна ячейка - одно фото.
Если строк не хватает, они добавляются.

Iska
03-09-2017, 07:37
Не нравится мне этот сценарий. Предлагаю другой.

Вот код:
Option Explicit

Sub Sample()
Dim objFileDialog As FileDialog
Dim collSelectedFiles As FileDialogSelectedItems
Dim strFileName As Variant

Dim intCurrColumn As Integer


If Application.Selection.Information(wdWithInTable) Then
Set objFileDialog = Application.FileDialog(FileDialogType:=msoFileDialogOpen)

With objFileDialog
.Title = "Выберете изображения для размещения в таблице"
.ButtonName = "Вставить"

.Filters.Clear
.Filters.Add "Изображения", "*.jpg; *.jpeg; *.png; *.gif; *.tif; *.tiff; *.bmp"
.Filters.Add "Все файлы", "*.*"

.AllowMultiSelect = True

'.InitialView = msoFileDialogViewThumbnail

If .Show() Then
Set collSelectedFiles = .SelectedItems

With Application.Selection.Tables.Item(1)
intCurrColumn = Application.Selection.Information(wdStartOfRangeColumnNumber)

For Each strFileName In collSelectedFiles
.Rows.Add

.Cell(.Rows.Count, 1).Range.Text = .Rows.Count - 2
.Cell(.Rows.Count, intCurrColumn).Range.InlineShapes.AddPicture FileName:=strFileName, LinkToFile:=False, SaveWithDocument:=True
Next
End With

Set collSelectedFiles = Nothing
End If
End With

Set objFileDialog = Nothing
Else
MsgBox "Поместите курсор ввода внутрь ячейки таблицы", vbExclamation + vbOKOnly, "Курсор ввода находится вовне таблицы"
End If
End Sub

Вот Ваша таблица:
https://i.imgur.com/1SwFqRH.png
Помещаете курсор ввода в одну из отмеченных ячеек и любым способом вызываете процедуру (горячая клавиша, строка меню, кнопка на панели инструментов — если таковое возможно в Вашей версии Word, або даже «ручками» из редактора VBA).
Выбираете изображения для вставки:
https://i.imgur.com/UwBOBOx.png
Получаете примерный результат:
https://i.imgur.com/eYr7xqe.png
В искомый столбец вставляются изображения, в первый столбец — номера по порядку. Никаких пустых строк предварительно добавлять не нужно.




© OSzone.net 2001-2012