В настоящее время мне приходится прикреплять много изображений (jpeg) к документу excel и экспортировать его в формате pdf. Мне нужно по одной картинке на страницу.
Я использовал следующий код, но безрезультатно.
For j = 0 To i
Cells(2, 1).Activate
Let pm = "Q:\Public\ACCE LINEAR\IRAD Photomics\A 350 Frame Photomics " & dat & "\" & sn & "\PHOTOMICS" & j & ".jpg"
ws1.Pictures.Insert(pm).Select
incr = 660 * (j + 1)
Selection.ShapeRange.IncrementTop incr
Next j
Я активирую ячейку A2, чтобы изображение изначально каждый раз помещалось в одно и то же место. Затем я перемещаю изображение вниз на определенную величину, определяемую переменной «incr». Сначала я играл с этим числом (660), пока оно не сработало, а затем перешел к следующему отчету. Проблема в том, что то, что работает для одного отчета, не работает для другого.
Я нахожу это удивительным, поскольку моя область печати (я считаю, что это определяет длину страницы) настроена так, чтобы включать все столбцы. Хотя каждый отчет имеет уникальное количество строк, каждый из них имеет одинаковое количество столбцов. Следовательно, область печати должна быть одинаковой от листа к листу, и каждое изображение должно быть точно такого же размера, чтобы это число не должно было меняться от отчета к отчету.


Я до сих пор не понимаю, почему моя предыдущая идея с интервалами не сработала, когда область печати от листа к листу абсолютно одинакова. Однако, зная, что область печати одинакова, я вместо этого сделал активной верхнюю левую ячейку на каждой странице и вставил каждое изображение в эту ячейку. Это гарантировало, что изображения не будут обрезаны при экспорте файла Excel в формате PDF.
Вот код, который я использовал. Есть несколько переменных, которые были определены ранее в коде, но вы должны уловить идею
b = counter - 1
For j = 0 To b
a = j + 1
If i > 24 Then a = j + 2
incr = (42 * a) - j
Cells(incr, 1).Activate
ws1.Pictures.Insert(MyFolder & "\" & PMArray(j)).Select
Next j