ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 317|回复: 2

[求助] 一段word及EXCEL文件转PDF代码,需要完善一下窗体及按钮

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-8-24 22:38 | 显示全部楼层 |阅读模式
本帖最后由 小声说话666 于 2023-8-24 22:41 编辑

CHATGPT出代码,我调试,一下午搞出一个 “文件夹所有OFFICE文件转PDF”, 窗体及按钮看不懂。请大神完善一下。

此代码为 WPS VBA



如果您想要实现点击按钮后弹出文件夹选择对话框,可以使用 UserForm 和 CommandButton 控件来实现。

Sub ConvertToPDF()
    Dim folderPath As String
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim wpsApp As Object
    Dim wpsDoc As Object
    Dim xlApp As Object
    Dim xlWPS As Object
    Dim dialog As FileDialog
   
    ' 创建 UserForm
    Dim frmFileDialog As New UserForm
   
    ' 创建 CommandButton
    Dim btnSelectFolder As New CommandButton
   
    With btnSelectFolder
        .Caption = "选择文件夹"
        .Left = 10
        .Top = 10
        .Width = 100
        .Height = 30
    End With
   
    ' 将 CommandButton 添加到 UserForm
    frmFileDialog.Controls.Add btnSelectFolder
   
    ' 显示 UserForm
    frmFileDialog.Show
   
    ' 打开文件夹选择对话框
    Set dialog = Application.FileDialog(msoFileDialogFolderPicker)
   
    With dialog
        .Title = "选择文件夹"
        .AllowMultiSelect = False
        
        If .Show = -1 Then
            folderPath = .SelectedItems(1)
        Else
            MsgBox "未选择文件夹!"
            Exit Sub
        End If
    End With
   
    ' 获取文件夹对象
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(folderPath)
   
    ' 初始化 WPS 应用程序
    Set wpsApp = CreateObject("KWps.Application")
   
    ' 遍历文件夹及其子目录
    For Each objFile In objFolder.Files
        ' 检查文件扩展名
        If LCase(Right(objFile.Name, 4)) = ".doc" Or _
           LCase(Right(objFile.Name, 5)) = ".docx" Or _
           LCase(Right(objFile.Name, 4)) = ".wps" Or _
           LCase(Right(objFile.Name, 4)) = ".dot" Or _
           LCase(Right(objFile.Name, 5)) = ".dotm" Then
           
            ' 打开文件
            Set wpsDoc = wpsApp.Documents.Open(objFile.Path)
            
            ' 另存为 PDF 文件
            wpsDoc.SaveAs2 objFile.Path & ".pdf", 17 ' 17 表示 PDF 格式
            
            ' 关闭文件
            wpsDoc.Close
            Set wpsDoc = Nothing
        ElseIf LCase(Right(objFile.Name, 4)) = ".xls" Or _
               LCase(Right(objFile.Name, 5)) = ".xlsx" Then
               
            ' 初始化 Excel 应用程序
            Set xlApp = CreateObject("ket.Application")
            
            ' 打开文件
            Set xlWPS = xlApp.Workbooks.Open(objFile.Path)
            
            ' 另存为 PDF 文件
            xlWPS.ExportAsFixedFormat Type:=0, FileName:=objFile.Path & ".pdf"
            
            ' 关闭文件
            xlWPS.Close
            Set xlWPS = Nothing
            
            ' 退出 Excel 应用程序
            xlApp.Quit
            Set xlApp = Nothing
        End If
    Next objFile
   
    ' 释放对象
    Set objFile = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing
   
    ' 退出 WPS 应用程序
    wpsApp.Quit
    Set wpsApp = Nothing
   
    MsgBox "转换完成!"
   
    ' 关闭 UserForm
    Unload frmFileDialog
End Sub
现在,代码会创建一个简单的 UserForm,其中包含一个名为 "选择文件夹" 的按钮。当用户点击按钮时,将弹出文件夹选择对话框,选择文件夹后,代码将继续执行文件转换操作。同时,代码还添加了一行来关闭 UserForm。

请注意,在 UserForm 中使用命令按钮之前,需要在 VBA 编辑器中右键单击项目资源管理器中的此工作簿,并选择"插入"->"用户窗体",然后命名为 "frmFileDialog"。

TA的精华主题

TA的得分主题

发表于 2023-8-25 06:31 | 显示全部楼层
这是个细活,你要一直问下去才能有结果,而不是免费次数到了就放弃了

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-25 11:34 | 显示全部楼层
约定的童话 发表于 2023-8-25 06:31
这是个细活,你要一直问下去才能有结果,而不是免费次数到了就放弃了

主要是该怎么问不会了。。请大神拔冗写一下为盼,指导一下提问词也行。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 18:09 , Processed in 0.033056 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表