ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA控件直接打开相对路径下的WORD文件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-5-8 12:14 | 显示全部楼层 |阅读模式
'文件名必须包括“.doc”的文件扩展名,如没有则自动加上
    If Not strFileName Like "*.doc" Then strFileName = strFileName & ".doc"
    '如果文件已存在,则删除已有文件
    If Dir(strFileName) <> "" Then Kill strFileName
    '打开模板文件
    Set objApp = CreateObject("Word.Application")
    objApp.Visible = True
    Set objDoc = objApp.Documents.Open(strTemplates, , False)

各位大侠,以上代码是找到包括“.doc”的文扩展名,打开选择文件的对话框,我要求以上代杩不要打开选择文件的对话框,而是直接打开当前文件夹路指定的word文件(如:文件名为“模板.doc")后执行下一步的代码,请大侠们指教帮忙改一下下上面的代码
下一步代码:

'开始替换模板预置变量文本
   With objApp.Application.Selection
        .Find.ClearFormatting
        .Find.Replacement.ClearFormatting
        With .Find
             .Text = "{$责停编号}"
             .Replacement.Text = side_A
        End With
        .Find.Execute Replace:=wdReplaceAll

        With .Find
             .Text = "{$单位名称}"
             .Replacement.Text = side_B
        End With
        .Find.Execute Replace:=wdReplaceAll

       With .Find
            .Text = "{$驾驶员姓名}"
            .Replacement.Text = side_C
       End With
       .Find.Execute Replace:=wdReplaceAll



TA的精华主题

TA的得分主题

发表于 2023-5-8 15:18 | 显示全部楼层
  Set objDoc = objApp.Documents.Open(Filename:=模板.doc.Path)

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-8 18:45 | 显示全部楼层
limonet 发表于 2023-5-8 15:18
Set objDoc = objApp.Documents.Open(Filename:=模板.doc.Path)

大侠,你这段代码无法执行

TA的精华主题

TA的得分主题

发表于 2023-5-8 19:31 | 显示全部楼层
    Set objApp = CreateObject("Word.Application")
    objApp.Visible = True
    Set objDoc = objApp.Documents.Open(ThisWorkbook.Path & "\模板.doc")

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-8 21:32 | 显示全部楼层
zjzyj 发表于 2023-5-8 19:31
Set objApp = CreateObject("Word.Application")
    objApp.Visible = True
    Set objDoc = objAp ...

大侠,还是不能直接打开“模板.doc”文件

TA的精华主题

TA的得分主题

发表于 2023-5-8 21:36 | 显示全部楼层
Set wrd = CreateObject("Word.Application")
    wrd.Visible = True
    wrd.documents.Open FileName:="文件地址\.模板.doc"
    Set wrd = Nothing

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-8 21:54 | 显示全部楼层
zjzyj 发表于 2023-5-8 19:31
Set objApp = CreateObject("Word.Application")
    objApp.Visible = True
    Set objDoc = objAp ...

Private Sub CommandButton2_Click()
    Dim objApp As Object 'Word.Application
    Dim objDoc As Object 'Word.Document
    Dim strTemplates As String '模板文件路径名
    Dim strFileName As String '将数据导出到此文件
    Dim i As Integer
    Dim side_A As String
    Dim side_B As String
    Dim side_C As String
    i = ActiveCell.Row
    side_A = CStr(Format(Cells(i, 1), "000"))
    side_B = Cells(i, 2)
    side_C = Cells(i, 6)
    side_d = Cells(i, 15)
    If Cells(i, 16) <> "" Then
             side_E = "(" & Cells(i, 16) & ")"
        End If
    side_F = Cells(i, 17)
    If Cells(i, 18) <> "" Then
            side_G = "/"
        End If
    side_H = Cells(i, 18)
    If Cells(i, 19) <> "" Then
             side_i = "(" & Cells(i, 19) & ")"
        End If
    side_J = Cells(i, 20)
    side_K = Cells(i, 30)
    side_L = Cells(i, 31)
    side_M = Cells(i, 32)
    side_N = Cells(i, 33)
   
    With Application.FileDialog(msoFileDialogFilePicker)
         .Filters.Add "word文件", "*.doc*", 1
         .AllowMultiSelect = False
         If .Show Then strTemplates = .SelectedItems(1) Else Exit Sub
    End With
   
  '通过文件对话框生成另存为文件名
    With Application.FileDialog(msoFileDialogSaveAs)
        '.InitialFileName = CurrentProject.Path & "\" & side_d & ".doc"
        .InitialFileName = side_d & ".doc"
        If .Show Then strFileName = .SelectedItems(1) Else Exit Sub
    End With

    '文件名必须包括“.doc”的文件扩展名,如没有则自动加上
    If Not strFileName Like "*.doc" Then strFileName = strFileName & ".doc"
    '如果文件已存在,则删除已有文件
    If Dir(strFileName) <> "" Then Kill strFileName
    '打开模板文件
    Set objApp = CreateObject("Word.Application")
    objApp.Visible = True
    Set objDoc = objApp.Documents.Open(strTemplates, , False)


请大侠帮我看一下下,这里帮我改一下下看

TA的精华主题

TA的得分主题

发表于 2023-5-8 21:59 | 显示全部楼层
gcf0937 发表于 2023-5-8 21:32
大侠,还是不能直接打开“模板.doc”文件

供参考      

打开word模板文件.zip

16.36 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2023-5-9 07:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请楼主参考。

打开word模板文件5-9.zip

17.52 KB, 下载次数: 13

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-9 19:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

大侠,你这个代码是提取WORD文件中的字符,把打开文件的代码放到我的代码无法执法
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 13:29 , Processed in 0.037463 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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