Получение доступа к изображению в ACell

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




Для доступа к изображениям можно использовать объект "DocumentStorage". DocumentStorage - обеспечивает доступ к хранилищу документа. Для получения изображения с помощью метода getByName() необходимо указать папку, в которой хранятся изображения, и имя файла изображения:

Dim oPictures, oImage
oPictures = ThisComponent.DocumentStorage.getByName("Pictures")
oImage = oPictures.getByName("100000000000016A0000008BD6DC9D6B919CF82E.jpg")

Также можно использовать индекс вместо имени файла:

oImage = oPictures.getByName(oPictures.ElementNames(0))

Для получения имен всех файлов в папке Pictures следует воспользоваться методом getElementNames() к объекту oPictures. Как показано ниже, этот код выводит имена всех файлов в диалоговом окне:

fileNames = oPictures.getElementNames()
  For i = LBound(fileNames) To UBound(fileNames)
       MsgBox fileNames(i)
   Next i

Этот способ будет полезен, если требуется вставить изображение в диалог (форму). Если требуется изменить свойства изображения на листе, следует использовать другой метод доступа. Для этого необходимо получить объект DrawPage. DrawPage представляет собой страницу для рисунков в документе, таких как диаграммы, схемы, изображения и другие элементы. После получения объекта DrawPage можно обратиться к изображению по его индексу:


Dim oSheet, oDrawPage, oShape
Dim oPoint As New com.sun.star.awt.Point

oSheet = ThisComponent.Sheets.getByIndex(0)
oDrawPage = oSheet.getDrawPage()
oShape = oDrawPage.getByIndex(0)

Получив доступ к изображению с индексом 0, можно изменить его положение или размер, например:

oPoint.X = 1000
oPoint.Y = 1000
oShape.setPosition(oPoint)



Прикреплённые файлы
get_access_to_image_and_move.bas
404kb
insert_image_into_dialog.bas
404kb