将电子表格从文件夹转换为 PDF(保存到不同位置)

马特·泰勒

我想选择保存 PDF 的位置,而不是将它们保存到 Excel 文件所在的文件夹。

我也只想打印第一个工作表。

以 2 结尾的 Dims 是我添加的内容,以尝试完成这项工作。我让两个弹出窗口都出现,但是在我选择要保存 PDF 的位置后,它失败了Set objFolder2 = objFileSystem2.GetFolder(strPath2)

任何帮助深表感谢。

Sub ExcelPlot()
Dim objShell As Object
Dim objWindowsFolder As Object
Dim objWindowsFolder2 As Object
Dim strWindowsFolder As String

'Select the specific Windows folder
Set objShell = CreateObject("Shell.Application")
Set objWindowsFolder = objShell.BrowseForFolder(0, "Locate the Excel files", 0, "")

'Select where to save to
Set objShell = CreateObject("Shell.Application")
Set objWindowsFolder2 = objShell.BrowseForFolder(0, "Where would you like to save the PDFs?", 0, "")

If Not objWindowsFolder Is Nothing Then
   strWindowsFolder = objWindowsFolder.self.Path & "\"

   Call ProcessFolders(strWindowsFolder)

   'Open the windows folder
   Shell "Explorer.exe" & " " & strWindowsFolder, vbNormalFocus
End If
End Sub

Sub ProcessFolders(strPath As String)
Dim strPath2 As String
Dim objFileSystem As Object
Dim objFileSystem2 As Object
Dim objFolder As Object
Dim objFolder2 As Object
Dim objFile As Object
Dim objExcelFile As Object
Dim objWorkbook As Excel.Workbook
Dim strWorkbookName As String

Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFileSystem.GetFolder(strPath)
Set objFolder2 = objFileSystem2.GetFolder(strPath2)

For Each objFile In objFolder.Files
    strFileExtension = objFileSystem.GetExtensionName(objFile)
    If LCase(strFileExtension) = "xls" Or LCase(strFileExtension) = "xlsx" Then
       Set objExcelFile = objFile
       Set objWorkbook = Application.Workbooks.Open(objExcelFile.Path)

       strWorkbookName = Left(objWorkbook.Name, (Len(objWorkbook.Name) - Len(strFileExtension)) - 1)
       objWorkbook.ExportAsFixedFormat Type:=xlTypePDF, fileName:=strPath2 & strWorkbookName & ".pdf"

       objWorkbook.Close False
    End If
Next

'Process all folders and subfolders
If objFolder.SubFolders.Count > 0 Then
   For Each objSubFolder In objFolder.SubFolders
       If ((objSubFolder.Attributes And 2) = 0) And ((objSubFolder.Attributes And 4) = 0) Then
          ProcessFolders (objSubFolder.Path)
       End If
   Next
End If
End Sub

谢谢

蒂姆·威廉姆斯

你可以做这样的事情 - 你需要将两条路径都传递给 ProcessFolders

Sub ExcelPlot()

    Dim sourceFolder As String, destFolder As String

    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        .Title = "Locate the Excel files"
        If .Show = -1 Then
            sourceFolder = .SelectedItems(1)
            .Title = "Where would you like to save the PDFs?"
            If .Show = -1 Then
                destFolder = .SelectedItems(1)
                ProcessFolders sourceFolder, destFolder
                Shell "Explorer.exe" & " " & destFolder, vbNormalFocus
            End If
        End If
    End With
End Sub

编辑:这是您的文件夹处理子的更新(非递归)版本:

Sub ProcessFolders(sourceFolder As String, destFolder As String)

    Dim objFileSystem As Object
    Dim objFolder As Object
    Dim objSubFolder As Object
    Dim objFile As Object
    Dim objWorkbook As Excel.Workbook
    Dim strWorkbookName As String, strFileExtension As String

    Set objFileSystem = CreateObject("Scripting.FileSystemObject")
    Dim colFolders As New Collection

    colFolders.Add sourceFolder

    Do While colFolders.Count > 0

        Set objFolder = objFileSystem.GetFolder(colFolders(1)) 'get the first path
        colFolders.Remove 1 'remove from listing

        'Process files in this folder
        For Each objFile In objFolder.Files

            strFileExtension = objFileSystem.GetExtensionName(objFile)
            If LCase(strFileExtension) = "xls" Or LCase(strFileExtension) = "xlsx" Then

               Set objWorkbook = Application.Workbooks.Open(objFile.Path)

               strWorkbookName = Left(objWorkbook.Name, _
                                     (Len(objWorkbook.Name) - Len(strFileExtension)) - 1)
               objWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
                  Filename:=objFileSystem.buildpath(destFolder, strWorkbookName & ".pdf")

               objWorkbook.Close False
            End If
        Next

        'Process subfolders
        For Each objSubFolder In objFolder.SubFolders
            If ((objSubFolder.Attributes And 2) = 0) And ((objSubFolder.Attributes And 4) = 0) Then
               colFolders.Add objSubFolder.Path  'add this to the collection for processing
            End If
        Next

    Loop

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我该如何修改以将电子表格保存到新文件夹中

来自分类Dev

将电子表格中的工作表另存为pdf,并保存在同一Google驱动器文件夹中

来自分类Dev

如何在 Linux 中也通过更新链接将 Excel 电子表格 2007 转换为 pdf

来自分类Dev

将查询保存到本地计算机上的电子表格

来自分类Dev

VBA将数据数组保存到电子表格的给定列

来自分类Dev

使用 Drive Picker 将电子表格 ID 保存到模型

来自分类Dev

用于从多个不同电子表格中编译数据的 Google 脚本,这些电子表格是同一文件的副本

来自分类Dev

将电子表格打印为PDF,然后使用OAuth2将文件保存在云端硬盘中

来自分类Dev

是否可以从多个Google电子表格中创建一个pdf文件?

来自分类Dev

按列位置将 Excel 电子表格导入 MS Access

来自分类Dev

将PDF电子表格数据提取到Python数据结构中

来自分类Dev

将数据从Doc或Pdf提取到电子表格的最快方法

来自分类Dev

将电子表格中收集的数据注入Word doc或PDF的工具

来自分类Dev

使用用户表单或电子表格将 WebBrowser 导出为 PDF

来自分类Dev

我需要使用脚本将Google电子表格的副本保存到特定目录

来自分类Dev

将不同电子表格中的总数相加

来自分类Dev

将电子表格另存为给定文件夹中的csv文件

来自分类Dev

从电子表格创建PDF需要将PDF URL返回到电子表格

来自分类Dev

将Excel电子表格转换为JSON

来自分类Dev

Excel将电子表格转换为html

来自分类Dev

使用pdf选项,使用google脚本将新版本的Google电子表格导出(或打印)为pdf文件

来自分类Dev

将电子表格的行转换为单独的XML文件

来自分类Dev

转换电子表格的十进制数字格式:句点和逗号分隔的十进制位置

来自分类Dev

添加唯一ID字段以标识使用VBA从不同Excel文件导入的电子表格

来自分类Dev

添加唯一ID字段以标识使用VBA从不同Excel文件导入的电子表格

来自分类Dev

在Delphi XE3中使用OLE将Excel电子表格导出为PDF

来自分类Dev

根据行数据Excel VBA将数据行排序到不同的电子表格中

来自分类Dev

将图片获取为http GET响应并插入到电子表格中而不保存图片

来自分类Dev

如何使用python在不同位置保存文件?

Related 相关文章

  1. 1

    我该如何修改以将电子表格保存到新文件夹中

  2. 2

    将电子表格中的工作表另存为pdf,并保存在同一Google驱动器文件夹中

  3. 3

    如何在 Linux 中也通过更新链接将 Excel 电子表格 2007 转换为 pdf

  4. 4

    将查询保存到本地计算机上的电子表格

  5. 5

    VBA将数据数组保存到电子表格的给定列

  6. 6

    使用 Drive Picker 将电子表格 ID 保存到模型

  7. 7

    用于从多个不同电子表格中编译数据的 Google 脚本,这些电子表格是同一文件的副本

  8. 8

    将电子表格打印为PDF,然后使用OAuth2将文件保存在云端硬盘中

  9. 9

    是否可以从多个Google电子表格中创建一个pdf文件?

  10. 10

    按列位置将 Excel 电子表格导入 MS Access

  11. 11

    将PDF电子表格数据提取到Python数据结构中

  12. 12

    将数据从Doc或Pdf提取到电子表格的最快方法

  13. 13

    将电子表格中收集的数据注入Word doc或PDF的工具

  14. 14

    使用用户表单或电子表格将 WebBrowser 导出为 PDF

  15. 15

    我需要使用脚本将Google电子表格的副本保存到特定目录

  16. 16

    将不同电子表格中的总数相加

  17. 17

    将电子表格另存为给定文件夹中的csv文件

  18. 18

    从电子表格创建PDF需要将PDF URL返回到电子表格

  19. 19

    将Excel电子表格转换为JSON

  20. 20

    Excel将电子表格转换为html

  21. 21

    使用pdf选项,使用google脚本将新版本的Google电子表格导出(或打印)为pdf文件

  22. 22

    将电子表格的行转换为单独的XML文件

  23. 23

    转换电子表格的十进制数字格式:句点和逗号分隔的十进制位置

  24. 24

    添加唯一ID字段以标识使用VBA从不同Excel文件导入的电子表格

  25. 25

    添加唯一ID字段以标识使用VBA从不同Excel文件导入的电子表格

  26. 26

    在Delphi XE3中使用OLE将Excel电子表格导出为PDF

  27. 27

    根据行数据Excel VBA将数据行排序到不同的电子表格中

  28. 28

    将图片获取为http GET响应并插入到电子表格中而不保存图片

  29. 29

    如何使用python在不同位置保存文件?

热门标签

归档