ExcelVBA批量添加PDF文件

关注微信公众号:VBA168,回复“批量导入pdf文件”,获取文件下载链接。


如图1所示,"BOM-01.xlsx"工作簿中的Sheet1工作表根据B列图号单元格中的内容,在图2所示的文件夹中找到对应的PDF文件,然后嵌入到相应的N列,双击N列中所示的图标,会打开PDF文件,是源文件的副本,即删除源文件,也可以打开N列的文件。
 

ExcelVBA批量添加PDF文件_第1张图片

图1 根据B列的图号在N列嵌入对应的PDF文件

ExcelVBA批量添加PDF文件_第2张图片

图2 PDF文件

ExcelVBA批量添加PDF文件_第3张图片

图3 文件格式
 

Sub 导入文件()
     Application.ScreenUpdating = False'禁止屏幕更新
     Application.DisplayAlerts = False'禁止弹出对话框
     
     Dim fil As String, fn As String
     Dim wb As Workbook
     Dim sht As Worksheet
     Dim RWidth As Long, RHeight As Long
     Dim Obj As Object
     
     RWidth = 40
     RHeight = 60
     Set wb = Workbooks.Open(ThisWorkbook.Path & "\BOM-01.xlsx")
     Set sht = wb.Worksheets(1)
     sht.Columns("N:N").ColumnWidth = RWidth
     Dim Str1 As String
     Dim FileName As String
     FileName = Dir(ThisWorkbook.Path & "\PDF文件\*.pdf")
     Dim i As Long, IRow As Long
     IRow = sht.Range("B10000").End(xlUp).Row
     
     Do While FileName <> ""
         For i = 4 To IRow
             Str1 = Trim(sht.Cells(i, 2).Value)
             If InStr(FileName, Str1) And Str1 <> "" Then
                 sht.Cells(i, "N").RowHeight = RHeight
                 sht.Cells(i, "N").Select
                 fn = ThisWorkbook.Path & "\PDF文件\" & FileName
                 sht.OLEObjects.Add FileName:=fn, _
                     link:=False, _
                     DisplayAsIcon:=True, _
                     IconFileName:="C:\windows\Installer\{AC76BA86-1033-FFFF-7760-0E0F06755100}\_PDFFile.ico", _
                     iconindex:=0, _
                     iconlabel:=fn
                 Exit For
             End If
         Next
         
         FileName = Dir '用dir函数取得其他文件名,并赋给变量
     Loop
     wb.Save
     Application.ScreenUpdating = True
     Application.DisplayAlerts = True
 End Sub

OLEObjects.Add方法向工作表中添加新的 OLE 对象。其语法格式如下。

表达式.Add(ClassType, FileName, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, Left, Top, Width, Height)

各参数说明如下表所示。

名称 必选/可选 数据类型 说明
ClassType 可选 Variant (必须指定 ClassType 或  FileName)。一个字符串,包含要创建的对象的程序标识符。如果指定了 ClassType 参数,则忽略  FileName 和 Link
FileName 可选 Variant (必须指定 ClassType 或 FileName)。一个字符串,指定用于创建 OLE  对象的文件。
Link 可选 Variant 如果为 True,则让基于 FileName 的新 OLE  对象链接到该文件。如果该对象未链接到文件,则该对象被创建为文件副本。默认值是 False
DisplayAsIcon 可选 Variant 如果为 True,则以图标或正常图片方式显示新的 OLE 对象。如果该参数设置为  True,则可以使用 IconFileName 和 IconIndex 来指定图标。
IconFileName 可选 Variant 一个字符串,指定要显示的图标所在的文件。仅当 DisplayAsIcon 为 True  时,才使用该参数。如果不指定该参数,或文件中不包含图标,则使用 OLE 类的默认图标。
IconIndex 可选 Variant 图标文件中包含的图标数目。仅当 DisplayAsIcon 参数为 True 并且  IconFileName 参数引用包含图标的有效文件时,才使用该参数。如果由 IconFileName  参数指定的文件中不存在具有指定索引号的图标,则使用该文件中的第一个图标。
IconLabel 可选 Variant 一个字符串,指定在图标下方显示一个标签。仅当 DisplayAsIcon 为 True  时,才使用该参数。如果省略该参数,或者该参数为空字符串 (""),则不显示任何标题。
Left 可选 Variant 以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格 A1  的左上角或图表的左上角的坐标。
Width 可选 Variant 以磅为单位给出新对象的初始大小。

 

 


微信公众号:VBA168

淘宝店铺地址:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-21233576391.4.1af0683dzrx3oU&id=584940166162

关注微信公众号,每天及时接收Excel VBA经典示例讲解。

淘宝店铺提供Excel定制服务。

祝你工作和学习更轻松!

你可能感兴趣的:(ExcelVBA批量添加PDF文件)