ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 运行时错误"48",加载DLL错误,是什么原因?怎么解决?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-26 23:04 | 显示全部楼层 |阅读模式
本帖最后由 gwfzh 于 2018-9-26 23:08 编辑

各位老师:
         想将同文件夹下的word文档复制到本表中,可是程序运行到下面代码“SetMyRange = .Range(StartRange, EndRange) ”语句处时,出现运行时错误"48",加载DLL错误,怎么解决?是什么原因,请各位老师帮忙了!!!,谢谢!!! wordtoexcel.rar (549 KB, 下载次数: 3)



  1. Sub AlineInWord()  '逐行读取复制109行=TarLines = .BuiltinDocumentProperties("Number of lines").Value
  2.     '    Dim WD As New Word.Application 'word程序的父对象'前期绑定,好处是在对象后输入句点可以给出快速提示,因为需要先引用对象,所以容易出现版本兼容问题。
  3.     '    Dim Doc As Word.Document '子对象、word具体上档文档对象
  4.     '    'Dim WD As Object  '后期绑定,没有提示,根据运行代码机器上对象的版本创建对象,兼容性好。
  5.     Dim WD, Doc, MyRange As Word.Range
  6.     Dim word行数, 读行号%, 每次读行数%, Excel行号%
  7.     Dim MyPath$, FN$, cPath$, cFile$, I%, arr()
  8.     Dim TarLines As Long, StartRange As Long, EndRange As Long, Str, krr()
  9.     Application.ScreenUpdating = False
  10.     krr() = Array("姓名", "年龄", "出生日期", "详细住址", "联系人", "联系电话", "人口数", "家庭劳动力数", "人年收入", "人均收入)", "医疗费用", "交通费", "食宿费", "附加费用", "本人误工损失", "家属的误工损失")
  11.     '    Set WD = CreateObject("Word.Application")   '新建Word对象
  12.    
  13.     MyPath = ThisWorkbook.Path & ""
  14.     Fp = ThisWorkbook.Path
  15.     ReDim arr(1 To 10, 1 To 112)
  16.     With CreateObject("word.application") '创建word进程
  17.         .Visible = False '隐藏执行
  18.         .AutomationSecurity = msoAutomationSecurityForceDisable
  19.         .DisplayAlerts = False  '''取消警报提醒
  20.         FN = Dir(Fp & "" & "*.doc")
  21.         sText = Right(FN, 7) ' = "调查表.doc"
  22.         Do While Right(FN, 9) = "个案调查表.doc"  '遍历WORD
  23.             
  24. '                Set Doc = .Documents.Open(ThisWorkbook.Path & "" & FN)
  25. '            With Doc '.Documents.Open(Fp & "" & FN)   '打开目标word文档
  26.             With .Documents.Open(Fp & "" & FN)   '打开目标word文档
  27.                 n0 = n0 + 1
  28.                 word行数 = .BuiltinDocumentProperties(wdPropertyLines).Value
  29.                 TarLines = .BuiltinDocumentProperties("Number of lines").Value 'DOC文档的行数
  30.                 lineStart = .GoTo(What:=wdGoToLine, Which:=wdGoToNext, Count:=1).End
  31.                 m = .Range.ComputeStatistics(wdStatisticLines)
  32.                 ReDim arr(1 To 10, 1 To TarLines)
  33.                 每次读行数 = 1
  34.                 '   Excel行号 = 2
  35. '                StartRange = wdGoToLine
  36.                 For 读行号 = 3 To TarLines
  37.                     ' For 读行号 = 1 To LineCount
  38.                     If .Content.End <= 1 Then Exit Sub '如果没有文档内容则退出宏
  39.                     '   For 读行号 = 1 To word行数
  40.                     '      With WD.Selection
  41.                     '          .GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=读行号
  42.                     '          .MoveDown wdLine, 每次读行数, wdExtend
  43.                     '          If Val(.Text) > 0 Then
  44.                     '             Range("A" & Excel行号) = .Text
  45.                     '             Excel行号 = Excel行号 + 1
  46.                     '          End If
  47.                     'Str0 = .wdLine(读行号).Text '方法和数据成员未找到错误
  48.                     StartRange = .GoTo(wdGoToLine, , 读行号).Start '指定行号的始点位置 '如果输入行号与DOC的总行数一致 , 则终点位置为文档末位置, 反之则为下一行的起点
  49.                     EndRange = VBA.IIf(读行号 = TarLines, .Content.End, .GoTo(wdGoToLine, , 读行号 + 1).Start)
  50.                     Set MyRange = .Range(StartRange, EndRange) '定义一个RANGE对象 '将开始到结束字符位置赋值给myRange对象
  51.                     '      End With
  52.                     '   Next
  53.                     If InStr(1, MyRange, "√") > 0 Then
  54.                         N = InStr(1, MyRange, "√") '对勾:ALT+小键盘41420  打叉:ALT+小键盘41409
  55.                         Str = Mid(MyRange, N, 4)
  56.                         arr(n0, I) = Str
  57.                     End If
  58.                     Sheets(2).Cells(读行号, 1) = Str0 ' MyRange
  59.                 Next
  60.                 .Close False  '关闭word文档,不保存。
  61.                  Set Doc = Nothing
  62.             End With
  63.             FN = Dir()  ''下一个WORD的处理
  64.         Loop
  65.         .DisplayAlerts = True  '''显示警报
  66.         .Visible = True '''可视
  67.         .Quit  '''退出WORD进程
  68.     End With
  69.     Application.ScreenUpdating = True
  70. End Sub
复制代码

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-16 02:44 , Processed in 0.016642 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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