创建尺寸可调的图标很困难

时间:2020-03-04 21:37:04

标签: excel vba ms-project createoleobject

我正在使用以下组合:

    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。点,使其适合放置在10 x 20点的单元内。我不希望同时显示Icon标签文本,也不显示Acrobat图片。

以上Application.DocumentExport命令的工作原理与拍摄时完全相同,即使许多页面很长,也将pdf源的副本保存为pdf。

OLEObjects.Add命令可以使用,但是不允许我调整图标的大小,因此它适合我要放置的excel单元格。

TOffset是从excel页面顶部到要放置图标的单元格顶部的点的总和。上面的Width和Height应该以磅为单位表示大小值,但无论上面是否带有.OLEObjects.Placement命令,它们都无法正常工作。

我尝试运行相同的2条命令,但在命令的OLEObjects字符串中忽略了IconIndex字段和值。这产生了具有所需尺寸的所需矩形框,但是由于能够保存excel文件而导致了一些内部excel问题-由于该excel文件遭到严重损坏,该应用无法分配我的文件。我将错误跟踪为在OLEObjects字符串中没有IconIndex字段名。 IconIndex在OLEObjects.Add Microsoft页面上显示为可选条目。 如果我为IconValue分配了除0以外的任何整数值,则该图标将被创建为透明,但尺寸与IconIndex:= 0相同。

最终目标是获取保存的PDF,并将包含pdf文件副本的图标放入excel工作表上的特定单元格,该单元格的操作类似于按钮,并允许我在标题的标题上写一个简短的标识符图标。

最终结果是一个独立的工作簿,可以分发该工作簿,并且还需要使用它复制/粘贴应用程序创建的所有pdf。

对于一些线索,例如我如何调整图标的大小,使用按钮而不是OLEOPbjects.add等,我将非常感激。 PDF。最后,我想要的是一个工作表,我可以用它在图标中保存我创建的所有不同打印输出的PDF。

谢谢

1 个答案:

答案 0 :(得分:0)

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),这是一个日期。不确定为什么必须将Width和Height声明与OLEObjects语句分开,因为OLEObjects.add引用显示Width和Height是Icon的属性。

enter image description here

我剩下的唯一问题是,当您单击图标时,“编辑”符号(图标的四个角都有编辑圆圈),并且如果完全拖动图标,它可能会调整大小。