【问题标题】:Embedding Contextual Object Icon using Excel VBA使用 Excel VBA 嵌入上下文对象图标
【发布时间】:2018-04-25 22:43:14
【问题描述】:

我对 VBA 编码有点缺乏经验,需要帮助根据单元格引用将对象插入 Excel 电子表格。

我需要做的是根据另一个单元格的内容将 PDF 作为对象图标拉入,将其覆盖在特定单元格上,然后向下移动一行以无限期重复,直到出现空白单元格。
这样做的一个问题是,A 列中的项目编号在我的文件目录中可能没有与之匹配的相应文件,因此无论搜索 PDF 时是否出现错误,我都需要运行代码。这是我的工作表布局的示例。 Spreadsheet Example

这是我已经拼凑起来的一小段代码,但我不确定它是否可以远程使用。

Dim varItem
Sub Insert_PDF_Object()

    Range("A2").Select    

    Do Until IsEmpty(ActiveCell)
        varItem= ActiveCell.Offset(0, 0)
        ActiveCell.Offset(0, 0).RowHeight = 80
        Get_Object
        ActiveCell.Offset(1, 0).Select
    Loop

    Range("A3").Select

End Sub

Sub Get_Object()

        Worksheets("Sheet1").OLEObjects.Add Filename:="c:\Test\"& 
            Range("A2").Value & ".pdf", Link:=False, DisplayAsIcon:=True, 
            Left:=40, Top:=40, Width:=100, Height:=100
End Sub

任何人都可以提供的帮助真的很棒!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    试试这个。

    注意如果你想使用DisplayAsIcon:=True,那么你需要提供图标文件的路径和索引。

    https://msdn.microsoft.com/en-us/vba/excel-vba/articles/oleobjects-add-method-excel

    Sub Insert_PDF_Object()
        Dim c As Range, fName
        Set c = ActiveSheet.Range("A2")
    
        Do While Len(c.Value) > 0
    
            fName = "c:\_Stuff\Test\" & c.Value & ".pdf"
    
            If Dir(fName, vbNormal) <> "" Then
                c.RowHeight = 80
                c.Worksheet.OLEObjects.Add Filename:=fName, Link:=False, _
                    DisplayAsIcon:=True, _
                    Left:=c.Offset(0, 1).Left, _
                    Top:=c.Offset(0, 1).Top, _
                    Width:=80, Height:=80
            End If
    
            Set c = c.Offset(1, 0)
        Loop
    
    End Sub
    

    【讨论】:

    • 蒂姆,这很好用!非常感谢!我唯一的问题是让图标显示。我想如果我像通过插入选项卡嵌入对象一样嵌入它,它只会显示 Adob​​e PDF 图标。有没有办法让它默认为标准图标?或者为所有正在嵌入的对象定义图标?另外,我假设如果我想改变它覆盖图标的偏移量,我只需要调整 Offset 参数?
    • 如果您在插入文件时录制宏,它将为您提供需要提供的参数类型:它们是特定于文件类型的,但您可以用通用图标替换所有文件。是的,偏移量控制着位置——在这种情况下,行和一列的偏移量为零。
    • 太棒了!非常感谢蒂姆,这正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 2021-03-28
    • 2017-01-30
    • 2016-02-04
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多