0

我正在使用以下组合:

    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 点,并在文本上方显示 acrobat 符号,即“189.PDF,标识为上面的 IconLabel。我正在尝试将图标的大小调整为 8 x 18点所以它适合在单元格内,它测量 10 x 20 点。我不想也显示 Acrobat 图片,只显示 IconLabel 文本。

上面的 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。

谢谢

4

1 回答 1

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),即日期。不知道为什么我必须将宽度和高度声明与 OLEObjects 语句分开,因为 OLEObjects.add 引用显示宽度和高度是图标的属性。

在此处输入图像描述

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

于 2020-03-05T17:22:11.850 回答