精华内容
下载资源
问答
  • Excel_2007_VBA.pdf

    2020-05-05 22:57:11
    这个文档是 2007版Excel VBA使用前的一个培训文件,能对VBA的使用有一个初步了解,但不能完全替代微软官方发布的操作手册。
  • ExcelVBA 编程入门范例》主要是以一些基础而简短的VBA 实例来对ExcelVBA 中的常 用对象及其属性和方法进行讲解,包括应用程序对象、窗口、工作簿、工作表、单元格和单 元格区域、图表、数据透视表、形状、控件、...
  • Excel VBA开发技术大全-伍远高 高清PDF

    热门讨论 2012-09-17 09:46:32
    Excel VBA开发技术大全》在介绍通过VBA操作Excel对象的基础上,使用了大量篇幅介绍用VBA操作这些新增对象的方法。 《Excel VBA开发技术大全》知识全面,结构由浅入深,每个知识点以实例代码进行介绍,使读者可快速...
  • Excel VBA范例大全 罗刚君 高清PDF 分卷2 全书从应用与实用的角度出发,通过实例精讲...本书适合广大ExcelVBA初、中级读者及VBA程序员使用,同时也可作为大中专院校相关专业学生,以及社会相关培训班学员的理想教材。
  • Excel VBA范例大全 罗刚君 高清PDF 分卷1 全书从应用与实用的角度出发,通过实例精讲...本书适合广大ExcelVBA初、中级读者及VBA程序员使用,同时也可作为大中专院校相关专业学生,以及社会相关培训班学员的理想教材。
  • 详细介绍了Excel VBA的使用技巧,主要内容包括:宏的应用技巧、VBE使用技巧、程序控制流程、Range对象操作、Worksheet对象操作、Workbook对象操作、Application对象操作、Window对象操作技巧、Chart对象操作、用户...
  • 详细介绍了ExcelVBA的使用技巧,主要内容包括:宏的应用技巧、VBE使用技巧、程序控制流程、Range对象操作、Worksheet对象操作、Workbook对象操作、Application对象操作、Window对象操作技巧、Chart对象操作、用户...
  • 详细介绍了Excel VBA的使用技巧,主要内容包括:宏的应用技巧、VBE使用技巧、程序控制流程、Range对象操作、Worksheet对象操作、Workbook对象操作、Application对象操作、Window对象操作技巧、Chart对象操作、用户...
  • 进出口报关中,需要对各种发票,装箱,合同等进行重复的操作:打印---盖章---扫描---重命名等操作.之后将上述文件上传至单一窗口的报关单随附单据,报关...本期将介绍如何将上述单据批量转换为PDF文件EXCEL批量合并为一...

    进出口报关中,需要对各种发票,装箱,合同等进行重复的操作:

    打印---盖章---扫描---重命名等操作.
    之后将上述文件上传至单一窗口的报关单随附单据,
    报关行通常需要安排一人专门进行上述操作,
    每套单据按最低时间5分钟为计,
    100套单据得连续工作超过8小时(也许这就是你天天加班的原因)
    如何对上述重复步骤进行优化节省人力物力呢?
    本期将介绍如何将上述单据批量转换为PDF文件

    将EXCEL批量合并为一个工作薄

    将EXCEL每个工作表批量转换为PDF
    将PDF文件放置于指定文件夹并按要求命名文件夹及PDF文件
    准备工作环境:
    PDF打印机---安装Adobe系列PDF软件将默认安装
    --------------安装福昕阅读器等也有该打印机显示

    451b0c4b81bf1d41af6858db55b1f179.png

    各类PDF软件可在360软件管家中搜索

    8a5a16381198adecfd6b1549071ecf31.png

    EXCEL(本期使用EXCEL2016)------其他版本也差不多,主要是宏的调用
    需要打开"开发工具"---文件---选项---自定义功能区---开发工具(打勾)

    4fa2208ef2817e019310272693846665.png

    caa29d9ac8ed5d7571da1fcae4791820.png

    此时,在EXCEL上会显示开发工具,点击visual basic(或Alt+F11)进入VB工程

    a54f608979c54d1c9e4cada9b8508842.png

    在当前VBAProject右击---插入---模块

    5816518f8e8e16adab32630cabe3e862.png

    在右边添入以下代码

    '作者:年迈哒爱好者,微信公众号:shoot00hxzSub shoot00hxz_1()Dim Pa$, Sh As WorksheetDim SHname As String On Error Resume NextFor Each Sh In SheetsSHname = Right(Sheets(1).Name, 9)     RmDir ThisWorkbook.Path & "\" & SHname & "\"     MkDir ThisWorkbook.Path & "\" & SHname & "\"Pa = ThisWorkbook.Path & "\" & SHname & "\"   Sh.ExportAsFixedFormat xlTypePDF, Pa & Sh.Name & ".pdf", 0, True, FalseNextEnd Sub''''''''''''''''''''作者:年迈哒爱好者,微信公众号:shoot00hxz'功能:把多个excel工作簿的第一个sheet工作表合并到一个excel工作簿的多个sheet工作表,新工作表的名称等于原工作簿的名称Sub shoot00hxz_2()    '定义对话框变量Dim fd As FileDialogSet fd = Application.FileDialog(msoFileDialogFilePicker)  '新建一个工作簿Dim newwb As WorkbookSet newwb = Workbooks.AddWith fdIf .Show = -1 Then                                          '定义单个文件变量Dim vrtSelectedItem As Variant                              '定义循环变量Dim i As Integer    i = 1                                                    '开始文件检索For Each vrtSelectedItem In .SelectedItems                   '打开被合并工作簿Dim tempwb As WorkbookSet tempwb = Workbooks.Open(vrtSelectedItem)                 '复制工作表tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i)newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".XLSX", "") '把新工作簿的工作表名字改成被复制工作簿文件名,如果是Excel2003,需要改成xlstempwb.Close SaveChanges:=False                                  '关闭被合并工作簿    i = i + 1Next vrtSelectedItemEnd IfEnd WithSet fd = NothingEnd Sub

    9ec05e05545f84706850f7b997a3012b.png

    关闭后返回工作表,点击---开发工具---宏

    a5d1c28661531b0fc7d991093e1f49af.png

    为每个选项设置快捷方式,本期将设置如下快捷键
    Ctrl+q    快捷方式---批量转换为PDF
    Ctrl+w    快捷方式---批量合并工作表

    ad18067066a538e4b16168231b130f9a.png

    e744a7f2b49393c266736706ae8000b4.png

    再(快捷键F12)另存为  *.xlam

    f4a318a470d5460ce1efb52107dcfb29.png

    0136aeef39471ce2623d3b498981166f.png

    按需要求,若多次使用,在打开---开发工具---Excel加载项

    14d13d49428e0f898a04012c23c8d1e9.png

    在浏览处找到已存取的*.xlam文件,
    以后所有EXCEL将加载该*.xlam
    ------注意事项-----
    *.xlam文件存放的位置将决定PDF文件存储的位置
    如将*.xlam文件放在桌面,
    那么转换好的PDF将在桌面显示
    桌面将多了个"PDF文件夹"

    afd07155ad5487acc289a61b746ccc36.png

    Ctrl+w    快捷方式---批量合并工作表
    打开一个空白EXCEL并合下快捷键Ctrl+w
    选择需要转换的EXCEL文件(可使用Ctrl+a选择所有EXCEL文件)
    -----请确保电脑没有存在冲突快捷键-----

    323c832f2aa82712006d141cccc4302d.png

    如下图显示,
    选取的EXCEL将合并为一个工作薄

    31a7319543e0d396e939d3c842885099.png
    Ctrl+q    快捷方式---批量转换为PDF

    按下快捷键Ctrl+q
    生成如下图

    eddfed2b4bd1cbcd73b137aa67aca15a.png

    ------再次提醒----注意事项-----
    *.xlam文件存放的位置将决定PDF文件存储的位置
    如将*.xlam文件放在桌面,
    那么转换好的PDF将在桌面显示

    生成的PDF文件命名是有规范性的
    如下图代码,可以生成报关单随附单据自动上传至单一窗口
    解决了上传耗时且有上传失败造成退单的情况
    每天花一个多小时发送及上传附件的时间又可以节省下来了

    9715d38e4f737c6d61be267038803dfc.png

         <EdocRealation>         <EdocID>532000000001IMshoot00hxzEdocID>         <EdocCode>00000001EdocCode>         <EdocFomatType>USEdocFomatType>         <OpNote>OpNote>         <EdocCopId>发票年迈哒爱好者shoot00hxz.pdfEdocCopId>         <EdocOwnerCode>shoot00hxzEdocOwnerCode>         <SignUnit>shoot00hxzSignUnit>         <SignTime>2020/8/24 22:26:13SignTime>         <EdocOwnerName>年迈哒爱好者EdocOwnerName>         <EdocSize>100EdocSize>     EdocRealation>     <EdocRealation>         <EdocID>532000000002IMshoot00hxzEdocID>         <EdocCode>00000002EdocCode>         <EdocFomatType>USEdocFomatType>         <OpNote>OpNote>         <EdocCopId>装箱单年迈哒爱好者shoot00hxz.pdfEdocCopId>         <EdocOwnerCode>shoot00hxzEdocOwnerCode>         <SignUnit>shoot00hxzSignUnit>         <SignTime>2020/8/24 22:26:13SignTime>         <EdocOwnerName>年迈哒爱好者EdocOwnerName>         <EdocSize>100EdocSize>     EdocRealation>     <EdocRealation>         <EdocID>532000000003IMshoot00hxzEdocID>         <EdocCode>00000003EdocCode>         <EdocFomatType>USEdocFomatType>         <OpNote>OpNote>         <EdocCopId>運單-shoot00hxz.pdfEdocCopId>         <EdocOwnerCode>shoot00hxzEdocOwnerCode>         <SignUnit>shoot00hxzSignUnit>         <SignTime>2020/8/24 22:26:14SignTime>         <EdocOwnerName>年迈哒爱好者EdocOwnerName>         <EdocSize>100EdocSize>     EdocRealation>     <EdocRealation>         <EdocID>532000000004IMshoot00hxzEdocID>         <EdocCode>00000004EdocCode>         <EdocFomatType>USEdocFomatType>         <OpNote>OpNote>         <EdocCopId>合同年迈哒爱好者shoot00hxz.pdfEdocCopId>         <EdocOwnerCode>shoot00hxzEdocOwnerCode>         <SignUnit>shoot00hxzSignUnit>         <SignTime>2020/8/24 22:26:14SignTime>         <EdocOwnerName>年迈哒爱好者EdocOwnerName>         <EdocSize>100EdocSize>     EdocRealation>

    动手能力差的同学可使用制作好的插件程序

    关注公众号发送关务插件获取下载链接

    14b66136592f018f58dd6ef92c9d4d77.png

    15b9b8b369c49c9f2e90b06483e63ec6.png

    展开全文
  • Excel_VBA程序设计.pdf

    热门讨论 2009-08-31 23:05:20
    非常详尽的Excel_VBA程序设计,好不容易才整理搜索到的。 一、VBA语言基础 1 第一节 标识符 1 第二节 运算符 1 第三节 数据类型 1 第四节 变量与常量 1 第五节 数组 2 第六节 注释和赋值语句 2 第七节 书写规范 2 第...
  • 主要内容和特点 ...帮助助手、 格式化操作文件操作、 以及常用方法和函数及技巧等方面的应用示 例。这些例子都比较基础,很容易理解,因而,很容易调试并得以实现,让您通 过具体的实例来熟悉 ExcelVBA 编程。
  • 学习Excel技术,关注微信公众号:excelperfect在《Python实战01:合并多个PDF文件》和《Python实战02:分别合并多个相似文件名的PDF文件》中,我们使用Python代码对PDF文件进行操作来合并PDF文件。其实,使用VBA也能...

    学习Excel技术,关注微信公众号:

    excelperfect

    在《Python实战01:合并多个PDF文件》和《Python实战02:分别合并多个相似文件名的PDF文件》中,我们使用Python代码对PDF文件进行操作来合并PDF文件。其实,使用VBA也能合并PDF文件。

    假设在同一文件夹中放置了要合并的PDF文件所在的文件夹、合并后的文件存放的文件夹、以及代码工作簿,其中要合并的文件存放在名为“PDF文件”的文件夹中,合并后的文件放在名为“合并的文件”的文件夹中,如下图1所示。

    c0e0f1cf76296d263c04d920527a205b.png

    1

    首先,需要在VBE中设置对“Adobe Acrobat 10.0 Type Library”的引用。在VBE中,单击菜单“工具——引用”,在“引用”对话框中找到并选取“Adobe Acrobat 10.0 Type Library”,如下图2所示。

    45208fa719197f7298d8913c83e34df2.png

    2

    注意,如果没有安装相应的Adobe Reader版本,可能找不到这个库。

    接下来,编写代码实现合并功能。

    下面的代码列出文件夹“PDF文件”中所有的PDF文件名:

    Sub ListPDFFiles()

        Dim fso         As Object

        Dim sFolder     As Object

        Dim fileItem    As Object

        Dim folderName  As String

        Dim iRow        As Long

        folderName = ThisWorkbook.Path &"\PDF文件\"

        Set fso =CreateObject("Scripting.FileSystemObject")

        Set sFolder = fso.GetFolder(folderName)

        With Sheets("Sheet1")

            .Columns(1).ClearContents

            .Range("A1") = "PDF文件名"

            For Each fileItem In sFolder.Files

                iRow = .Cells(Rows.Count,1).End(xlUp).Row + 1

                .Cells(iRow, 1) = fileItem.Name

            Next fileItem

        End With

        Set fso = Nothing

    End Sub

    代码运行后的结果如下图3所示。

    05861e27468b059237de556508281d6f.png

    3

    在上图3所示的工作表中,在每个PDF文件名相邻的单元格,输入要合并的PDF文件页码,如果要合并多页,则用逗号分隔开。例如,数字2表明要合并文件“完美Excel.pdf”的第2页,数字2,6表明要合并文件“汇总.pdf”的第3页和第6页,如下图4所示。

    19a0ced9a38da02ebe9cd4ca862b263b.png

    4

    下面的代码将取出要合并的PDF文件中的页面并保存为一个单独的PDF文件:

    Sub SplitPDFFilesIntoSinglePages()

    '引用 :Adobe Acrobat 10.0 Type Library

    '-------------------------------------------

        Dim PDDoc       As Acrobat.CAcroPDDoc

        Dim newPDF      As Acrobat.CAcroPDDoc

        Dim PDPage      As Acrobat.CAcroPDPage

        Dim b           As Boolean

        Dim v           As Variant

        Dim thePDF      As String

        Dim newName     As String

        Dim r           As Long

        Dim pNum        As Long

        Dim i           As Long

        With Sheets("Sheet1")

            For r = 2 To .Cells(Rows.Count,1).End(xlUp).Row

                thePDF = ThisWorkbook.Path &"\PDF文件\" & .Cells(r, 1)

                Set PDDoc =CreateObject("AcroExch.pdDoc")

                If Not PDDoc.Open(thePDF) ThenMsgBox "不能打开文件", vbExclamation: Exit Sub

                pNum = PDDoc.GetNumPages

                For i = 0 To pNum - 1

                    newName = .Cells(r, 1) &"_" & i + 1 & ".pdf"

                    b = False

                    For Each v In Split(.Cells(r,2), ",")

                        If Val(v) = i + 1 Then b =True: Exit For

                    Next v

                    If b Then

                        Set newPDF =CreateObject("AcroExch.pdDoc")

                        newPDF.Create

                        newPDF.InsertPages -1,PDDoc, i, 1, 0

                        newPDF.Save 1,ThisWorkbook.Path & "\合并的文件\" & newName

                        newPDF.Close

                        Set newPDF = Nothing

                    End If

                Next i

            Next r

        End With

    End Sub

    运行代码后的结果如下图5所示。

    371109e18b7546ab26a3780f6b2637c1.png

    5

    下面的代码将已单独拆分出来的PDF文件合并成一个PDF文件:

    Sub MergePDFFilesIntoOne()

    '引用 : AdobeAcrobat 10.0 Type Library

    '-------------------------------------------

        Dim a()         As String

        Dim myPath      As String

        Dim myFiles     As String

        Dim f           As String

        Dim i           As Long

        Const destFile  As String = "合并.pdf"

        With Application.FileDialog(msoFileDialogFolderPicker)

            .InitialFileName = ThisWorkbook.Path& "\"

            .AllowMultiSelect = False

            If .Show = False Then Exit Sub

            myPath = .SelectedItems(1)

            DoEvents

        End With

        If Right(myPath, 1) <> "\"Then myPath = myPath & "\"

        ReDim a(1 To 2 ^ 14)

        f = Dir(myPath & "*.pdf")

        While Len(f)

            If StrComp(f, destFile, vbTextCompare)Then

                i = i + 1

                a(i) = f

            End If

            f = Dir()

        Wend

        If i Then

            ReDim Preserve a(1 To i)

            myFiles = Join(a, ",")

            Application.StatusBar = "合并中, 请等待 ..."

            Call MergePDFs(myPath, myFiles,destFile)

            Application.StatusBar = False

        Else

            MsgBox "在下面的路径中没有找到PDF文件 " & vbLf & myPath,vbExclamation, "取消"

        End If

    End Sub

    Sub MergePDFs(myPath As String,myFiles As String, Optional destFile As String = "合并.pdf")

        Dim acApp       As New Acrobat.AcroApp

        Dim pDocs()     As Acrobat.CAcroPDDoc

        Dim a           As Variant

        Dim s           As String

        Dim i           As Long

        Dim j           As Long

        Dim n           As Long

        If Right(myPath, 1) = "\" Then s= myPath Else s = myPath & "\"

        a = Split(myFiles, ",")

        ReDim pDocs(0 To UBound(a))

        On Error GoTo Exit_

        If Len(Dir(s & destFile)) Then Kill s& destFile

        For i = 0 To UBound(a)

            If Dir(s & Trim(a(i))) ="" Then

                MsgBox "文件没有找到" & vbLf & s &a(i), vbExclamation, "取消"

                Exit For

            End If

            Set pDocs(i) =CreateObject("AcroExch.PDDoc")

            pDocs(i).Open s & Trim(a(i))

            If i Then

                j = pDocs(i).GetNumPages()

                If Not pDocs(0).InsertPages(n - 1,pDocs(i), 0, j, True) Then

                    MsgBox "不能插入页" & vbLf & s & a(i),vbExclamation, "取消"

                End If

                n = n + j

                pDocs(i).Close

                Set pDocs(i) = Nothing

            Else

                n = pDocs(0).GetNumPages()

            End If

        Next i

        If i > UBound(a) Then

            If Not pDocs(0).Save(PDSaveFull, s& destFile) Then

                MsgBox "不能在下面的文件中保存最终的结果文档" & vbLf &s & destFile, vbExclamation, "取消"

            End If

        End If

    Exit_:

        If Err Then

            MsgBox Err.Description, vbCritical,"错误 #" & Err.Number

        ElseIf i > UBound(a) Then

            MsgBox "创建的结果文件是:" & vbLf & s &destFile, vbInformation, "完成"

        End If

        If Not pDocs(0) Is Nothing ThenpDocs(0).Close

        Set pDocs(0) = Nothing

        acApp.Exit

        Set acApp = Nothing

    End Sub

    运行代码后,要求你选择要合并的PDF文件所在的文件夹,因为我们将拆出的单独的PDF文件放置在了“合并的文件”文件夹中,应此选该文件夹,如下图6所示。

    8997863fe41b09942e28ff06343c75c8.png

    6

    合并完成后,会弹出如图7所示的提示信息。

    5e51b51e9770269d52f97ed4713f087b.png

    7

    下图8为合并后的PDF文件。

    5c2d5cd56916849449196fd0ee1d4ee5.png

    8

    Python代码相比,VBA代码有点多了!

    下面是上述代码的图片版。

    263c2dbc2fcabca31cff06ff0041fb46.png

    362b0710a82a9bba3180f5d27329cfbe.png

    89db47463d922238f49dde2e7b370851.png  

    注:这是在wellsr.com上学习并整理的技巧,转载请注明出处。

    937a6ac5a008b9183974f6a928436f4b.png

    展开全文
  • 学习Excel技术,关注微信公众号:excelperfect在《Python实战01:合并多个PDF文件》和《Python实战02:分别合并多个相似文件名的PDF文件》中,我们使用Python代码对PDF文件进行操作来合并PDF文件。其实,使用VBA也能...

    学习Excel技术,关注微信公众号:

    excelperfect

    在《Python实战01:合并多个PDF文件》和《Python实战02:分别合并多个相似文件名的PDF文件》中,我们使用Python代码对PDF文件进行操作来合并PDF文件。其实,使用VBA也能合并PDF文件。

    假设在同一文件夹中放置了要合并的PDF文件所在的文件夹、合并后的文件存放的文件夹、以及代码工作簿,其中要合并的文件存放在名为“PDF文件”的文件夹中,合并后的文件放在名为“合并的文件”的文件夹中,如下图1所示。

    5bb726f4ae2a50bf678eaf4dfb59b02b.png

    1

    首先,需要在VBE中设置对“Adobe Acrobat 10.0 Type Library”的引用。在VBE中,单击菜单“工具——引用”,在“引用”对话框中找到并选取“Adobe Acrobat 10.0 Type Library”,如下图2所示。

    fb3662e23fc75f1a04df512d414a1eea.png

    2

    注意,如果没有安装相应的Adobe Reader版本,可能找不到这个库。

    接下来,编写代码实现合并功能。

    下面的代码列出文件夹“PDF文件”中所有的PDF文件名:

    Sub ListPDFFiles()

        Dim fso         As Object

        Dim sFolder     As Object

        Dim fileItem    As Object

        Dim folderName  As String

        Dim iRow        As Long

        folderName = ThisWorkbook.Path &"\PDF文件\"

        Set fso =CreateObject("Scripting.FileSystemObject")

        Set sFolder = fso.GetFolder(folderName)

        With Sheets("Sheet1")

            .Columns(1).ClearContents

            .Range("A1") = "PDF文件名"

            For Each fileItem In sFolder.Files

                iRow = .Cells(Rows.Count,1).End(xlUp).Row + 1

                .Cells(iRow, 1) = fileItem.Name

            Next fileItem

        End With

        Set fso = Nothing

    End Sub

    代码运行后的结果如下图3所示。

    50b22ed328ea6cbb7377b68332424f96.png

    3

    在上图3所示的工作表中,在每个PDF文件名相邻的单元格,输入要合并的PDF文件页码,如果要合并多页,则用逗号分隔开。例如,数字2表明要合并文件“完美Excel.pdf”的第2页,数字2,6表明要合并文件“汇总.pdf”的第3页和第6页,如下图4所示。

    14fe6a840c8b77c4f76b17781c6a349a.png

    4

    下面的代码将取出要合并的PDF文件中的页面并保存为一个单独的PDF文件:

    Sub SplitPDFFilesIntoSinglePages()

    '引用 :Adobe Acrobat 10.0 Type Library

    '-------------------------------------------

        Dim PDDoc       As Acrobat.CAcroPDDoc

        Dim newPDF      As Acrobat.CAcroPDDoc

        Dim PDPage      As Acrobat.CAcroPDPage

        Dim b           As Boolean

        Dim v           As Variant

        Dim thePDF      As String

        Dim newName     As String

        Dim r           As Long

        Dim pNum        As Long

        Dim i           As Long

        With Sheets("Sheet1")

            For r = 2 To .Cells(Rows.Count,1).End(xlUp).Row

                thePDF = ThisWorkbook.Path &"\PDF文件\" & .Cells(r, 1)

                Set PDDoc =CreateObject("AcroExch.pdDoc")

                If Not PDDoc.Open(thePDF) ThenMsgBox "不能打开文件", vbExclamation: Exit Sub

                pNum = PDDoc.GetNumPages

                For i = 0 To pNum - 1

                    newName = .Cells(r, 1) &"_" & i + 1 & ".pdf"

                    b = False

                    For Each v In Split(.Cells(r,2), ",")

                        If Val(v) = i + 1 Then b =True: Exit For

                    Next v

                    If b Then

                        Set newPDF =CreateObject("AcroExch.pdDoc")

                        newPDF.Create

                        newPDF.InsertPages -1,PDDoc, i, 1, 0

                        newPDF.Save 1,ThisWorkbook.Path & "\合并的文件\" & newName

                        newPDF.Close

                        Set newPDF = Nothing

                    End If

                Next i

            Next r

        End With

    End Sub

    运行代码后的结果如下图5所示。

    ef101d014e4f89abde82d7f835d22a66.png

    5

    下面的代码将已单独拆分出来的PDF文件合并成一个PDF文件:

    Sub MergePDFFilesIntoOne()

    '引用 : AdobeAcrobat 10.0 Type Library

    '-------------------------------------------

        Dim a()         As String

        Dim myPath      As String

        Dim myFiles     As String

        Dim f           As String

        Dim i           As Long

        Const destFile  As String = "合并.pdf"

        With Application.FileDialog(msoFileDialogFolderPicker)

            .InitialFileName = ThisWorkbook.Path& "\"

            .AllowMultiSelect = False

            If .Show = False Then Exit Sub

            myPath = .SelectedItems(1)

            DoEvents

        End With

        If Right(myPath, 1) <> "\"Then myPath = myPath & "\"

        ReDim a(1 To 2 ^ 14)

        f = Dir(myPath & "*.pdf")

        While Len(f)

            If StrComp(f, destFile, vbTextCompare)Then

                i = i + 1

                a(i) = f

            End If

            f = Dir()

        Wend

        If i Then

            ReDim Preserve a(1 To i)

            myFiles = Join(a, ",")

            Application.StatusBar = "合并中, 请等待 ..."

            Call MergePDFs(myPath, myFiles,destFile)

            Application.StatusBar = False

        Else

            MsgBox "在下面的路径中没有找到PDF文件 " & vbLf & myPath,vbExclamation, "取消"

        End If

    End Sub

    Sub MergePDFs(myPath As String,myFiles As String, Optional destFile As String = "合并.pdf")

        Dim acApp       As New Acrobat.AcroApp

        Dim pDocs()     As Acrobat.CAcroPDDoc

        Dim a           As Variant

        Dim s           As String

        Dim i           As Long

        Dim j           As Long

        Dim n           As Long

        If Right(myPath, 1) = "\" Then s= myPath Else s = myPath & "\"

        a = Split(myFiles, ",")

        ReDim pDocs(0 To UBound(a))

        On Error GoTo Exit_

        If Len(Dir(s & destFile)) Then Kill s& destFile

        For i = 0 To UBound(a)

            If Dir(s & Trim(a(i))) ="" Then

                MsgBox "文件没有找到" & vbLf & s &a(i), vbExclamation, "取消"

                Exit For

            End If

            Set pDocs(i) =CreateObject("AcroExch.PDDoc")

            pDocs(i).Open s & Trim(a(i))

            If i Then

                j = pDocs(i).GetNumPages()

                If Not pDocs(0).InsertPages(n - 1,pDocs(i), 0, j, True) Then

                    MsgBox "不能插入页" & vbLf & s & a(i),vbExclamation, "取消"

                End If

                n = n + j

                pDocs(i).Close

                Set pDocs(i) = Nothing

            Else

                n = pDocs(0).GetNumPages()

            End If

        Next i

        If i > UBound(a) Then

            If Not pDocs(0).Save(PDSaveFull, s& destFile) Then

                MsgBox "不能在下面的文件中保存最终的结果文档" & vbLf &s & destFile, vbExclamation, "取消"

            End If

        End If

    Exit_:

        If Err Then

            MsgBox Err.Description, vbCritical,"错误 #" & Err.Number

        ElseIf i > UBound(a) Then

            MsgBox "创建的结果文件是:" & vbLf & s &destFile, vbInformation, "完成"

        End If

        If Not pDocs(0) Is Nothing ThenpDocs(0).Close

        Set pDocs(0) = Nothing

        acApp.Exit

        Set acApp = Nothing

    End Sub

    运行代码后,要求你选择要合并的PDF文件所在的文件夹,因为我们将拆出的单独的PDF文件放置在了“合并的文件”文件夹中,应此选该文件夹,如下图6所示。

    9a629bb8ca6d6a5c707121e2b55d81e8.png

    6

    合并完成后,会弹出如图7所示的提示信息。

    5cec9eb8c2ac835e75f1e3d5f8b71aab.png

    7

    下图8为合并后的PDF文件。

    732f3547b10848bb025dcbac6011b1bd.png

    8

    Python代码相比,VBA代码有点多了!

    下面是上述代码的图片版。

    9c6438b3309732e6ce5be3c5db2ad4fe.png

    778b486151d9f96bf71631e584624cdf.png

    0d770de0dcdd329f7e7d019dadbbadbf.png  

    注:这是在wellsr.com上学习并整理的技巧,转载请注明出处。

    c12dffc7f2271cad23bd32310bc1e870.png

    展开全文
  • Excel 2007与VBA编程从入门到精通 10/10

    热门讨论 2012-04-01 15:47:40
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 6/10

    热门讨论 2012-04-01 14:47:49
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 1/10

    热门讨论 2012-04-01 13:34:05
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 9/10

    热门讨论 2012-04-01 15:43:41
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 3/10

    热门讨论 2012-04-01 14:09:14
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 5/10

    热门讨论 2012-04-01 14:34:23
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 2/10

    热门讨论 2012-04-01 13:54:03
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 4/10

    热门讨论 2012-04-01 14:21:28
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 8/10

    热门讨论 2012-04-01 15:29:41
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 7/10

    热门讨论 2012-04-01 15:01:23
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • 第15章提供发布VBA应用程序的各种技术,包括菜单宏的使用、在工具栏中使用自定义图标、基本图库的实现(动态修改菜单文件)、在命令行或菜单中执行VBA程序、实现VBA程序的先选择再操作、更改AutoCAD应用程序的图标和...
  • 基础知识篇为不要输在起跑线上,侧重于讲解应知应会的知识点,内容包括学习做表、初识Excel函数、列表中的简单数据分析、使用数据透视表分析数据、Excel图表基础、认识Excel中的高级功能以及扫盲ExcelVBA等;...
  • Access 2007 VBA宝典 4/4

    2012-03-31 08:36:49
    完整清晰版 PDF ,有目录。共 120MB,分为四个分卷 Access 2007 VBA宝典 OFFICE2007 OFFICE Access 2007 VBA宝典 4/4 作者:(美)费德玛(Feddema,H.) 著,张波,陈江红,苏丽译 出版社:人民邮电出版社 出版日期...
  • Access 2007 VBA宝典 2/4

    2012-03-31 08:22:16
    完整清晰版 PDF ,有目录。共 120MB,分为四个分卷 Access 2007 VBA宝典 OFFICE2007 OFFICE Access 2007 VBA宝典 2/4 作者:(美)费德玛(Feddema,H.) 著,张波,陈江红,苏丽译 出版社:人民邮电出版社 出版日期:...
  • Access 2007 VBA宝典 3/4

    2012-03-31 08:31:46
    完整清晰版 PDF ,有目录。共 120MB,分为四个分卷 Access 2007 VBA宝典 OFFICE2007 OFFICE Access 2007 VBA宝典 3/4 作者:(美)费德玛(Feddema,H.) 著,张波,陈江红,苏丽译 出版社:人民邮电出版社 出版日期:...
  • Access 2007 VBA宝典 1/4

    2012-03-31 08:12:09
    完整清晰版 PDF ,有目录。共 120MB,分为四个分卷 Access 2007 VBA宝典 作者:(美)费德玛(Feddema,H.) 著,张波,陈江红,苏丽译 出版社:人民邮电出版社 出版日期:2008-6-1 ISBN:9787115175984 字数:843000...
  • 免费Spire.XLS: 处理Excel文档in C#, VB.NET

    热门讨论 2015-06-18 10:24:15
    Free Spire.XLS for .NET 是e-iceblue公司开发的一款支持对所有Excel格式类型文件进行操作的.NET 控件。它适用于任何类型的应用程序比如ASP.NET Web应用程序或者Windows桌面应用程序。Spire.XLS for .NET允许开发...

空空如也

空空如也

1 2 3 4 5
收藏数 89
精华内容 35
关键字:

excelvba操作pdf文件