сложность в создании значка, размер которого можно изменить

Я использую комбинацию:

    Application.DocumentExport SaveFileName, pjPDF, FromDate:=EarliestStart-30, ToDate:=LFin+30

    and

    xlbook.activesheet.OLEObjects.Add(FileName:="C:\Macros\Target-" & t & ".pdf", Link:=False, _
    DisplayAsIcon:=True, IconFileName:= _
    "C:\windows\Installer\{AC76BA86-1033-FFFF-7760-0E0F06755100}\_PDFFile.ico", _
    IconIndex:=0, IconLabel:="Target-" & t, Left:=1082, Top:=TOffset, Width:=5, Height:=5).Select

   xlbook.activesheet.OLEObjects.Placement = 1                            'Move and Size with cells

с целью размещения значка на листе Excel в определенной ячейке. При запуске с этими командами я получаю квадратную иконку размером около 50 x 50 точек с символом акробата, отображаемым над текстом, т. Е. «189.PDF, обозначенным как IconLabel выше. Я пытаюсь изменить размер значка до 8 x 18. точек, чтобы он помещался внутри ячейки размером 10 x 20. Я бы предпочел не отображать изображение Acrobat, а только текст IconLabel.

Вышеприведенная команда Application.DocumentExport работает точно так же, как она снималась, сохраняя копию исходного pdf-файла в pdf-файл, даже если он содержит много страниц.

Команда OLEObjects.Add работает, но не позволяет изменить размер значка, чтобы он поместился в ячейке Excel, где я хочу его разместить.

TOffset — это сумма точек от верхней части страницы Excel до верхней части ячейки, в которую я хочу поместить значок. Ширина и высота выше должны представлять значения размера в точках для значка, но они не работают ни с командой .OLEObjects.Placement, ни без нее.

Я попытался запустить те же две команды, но исключил поле IconIndex и значение из строки команд OLEObjects. Это привело к получению желаемых прямоугольных блоков желаемых размеров, но вызвало некоторые внутренние проблемы Excel с возможностью сохранения файла Excel --- приложение не разрешило мне сохранить файл из-за серьезного повреждения файла Excel. Я проследил ошибку до отсутствия имени поля IconIndex в строке OLEObjects. IconIndex отображается как необязательная запись на странице OLEObjects.Add Microsoft. Если я назначу IconValue любое целочисленное значение, отличное от 0, то значок будет создан прозрачным, но его размеры будут такими же, как если бы IconIndex:=0.

Конечная цель состоит в том, чтобы взять сохраненный PDF-файл и поместить значок, содержащий копию файла PDF, в определенную ячейку на листе Excel, которая работает аналогично кнопке и позволяет мне написать короткий идентификатор в подписи к значку.

Конечным результатом является автономная рабочая книга, которую можно распространять с необходимостью также копировать/вставлять вместе с ней все PDF-файлы, созданные приложением.

Был бы признателен за некоторые наводки относительно того, как я могу изменить размер значков, использовать кнопки вместо OLEOPbjects.add и т. д. Я пробовал гиперссылки, но затем у меня есть большая книга из многих, многих листов, каждый из которых содержит один PDF-файл. В конце концов, мне нужен один рабочий лист, который я могу использовать для хранения PDF-файлов в значках для всех различных распечаток, которые я создал.

Спасибо


person dgr    schedule 04.03.2020    source источник


Ответы (1)


Dim TOffset As Integer

xlbook.Sheets("Task Graphics").Select

With xlbook.ActiveSheet
    .Range("B2").Select
    TOffset = .Range("A1:A" & row - 3).Height - 11
    .Cells(row - 3, 18) = Format(LFin - 30, "mm/dd/yy")

    .OLEObjects.Add(FileName:="C:\Macros\Target-" & t & ".pdf", Link:=False, _
     DisplayAsIcon:=True, IconFileName:= _
    "C:\windows\Installer\{AC76BA86-1033-FFFF-7760-0E0F06755100}\_PDFFile.ico", _
    IconIndex:=0, IconLabel:="Target-" & t, Left:=1080, Top:=TOffset).Select

    .OLEObjects.Placement = 1
    .OLEObjects.ShapeRange.LockAspectRatio = msoFalse
    .OLEObjects.Width = 14
    .OLEObjects.Height = 10
    sbDeleteAFile (SaveFileName)
 End With

Этот ответ размещает значок в левой части ячейки, оставляя место в той же ячейке для ввода некоторого текста (LFin-30), который является датой. Не уверен, почему мне пришлось отделить объявления ширины и высоты отдельно от оператора OLEObjects, поскольку ссылка OLEObjects.add показывает, что ширина и высота являются свойствами значка.

введите здесь описание изображения

Единственная проблема, которая у меня осталась, заключается в том, что когда вы щелкаете значок, символы «редактировать» (в четырех углах значка есть круги редактирования), и если вы вообще перетаскиваете значок, он может изменить размер.

person dgr    schedule 05.03.2020