[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] VBS脚本怎样提取123图片文件名到WORD?

以下代码是将D:\123文件夹里的图片文件,文件名提取到WORD文件中,并自动进行一些设置,之前都好用,近期重装了系统,但office版本没变,执行是总报错,如下图,求修改,谢谢。

  1. Option Explicit
  2. Dim objShell, objFSO, objFolder, objFile, objWord, objDoc, strFolderPath, strFileName, strInitialPath, strDocName
  3. Dim objSelection, objRange, objColumns, objPageSetup, objHeaderFooter
  4. Dim objDate, strDate, strTime, strDateTime, objCurrentFolder, objCurrentFile, strInputNumber, strHistoryFolderPath
  5. ' 创建Shell对象
  6. Set objShell = CreateObject("Shell.Application")
  7. ' 创建文件系统对象
  8. Set objFSO = CreateObject("Scripting.FileSystemObject")
  9. ' 获取脚本所在目录路径
  10. strInitialPath = objFSO.GetParentFolderName(WScript.ScriptFullName)
  11. ' 创建历史采集文件夹
  12. strHistoryFolderPath = strInitialPath & "\历史采集"
  13. If Not objFSO.FolderExists(strHistoryFolderPath) Then
  14.     objFSO.CreateFolder(strHistoryFolderPath)
  15. End If
  16. ' 移动当前目录下文件名中包含“错题采集”的Word文件到历史采集文件夹
  17. Set objCurrentFolder = objFSO.GetFolder(strInitialPath)
  18. For Each objCurrentFile In objCurrentFolder.Files
  19.     If InStr(objCurrentFile.Name, "错题采集") > 0 And (LCase(objFSO.GetExtensionName(objCurrentFile.Name)) = "doc" Or LCase(objFSO.GetExtensionName(objCurrentFile.Name)) = "docx") Then
  20.         objCurrentFile.Move strHistoryFolderPath & "\" & objCurrentFile.Name
  21.     End If
  22. Next
  23. ' 指定目录为 D:\123 文件夹
  24. strFolderPath = "D:\123"
  25. ' 检查目录是否存在
  26. If Not objFSO.FolderExists(strFolderPath) Then
  27.     MsgBox "目录不存在!", vbExclamation, "错误"
  28.     WScript.Quit
  29. End If
  30. ' 获取当前日期和时间
  31. objDate = Now
  32. strDate = Year(objDate) & Right("0" & Month(objDate), 2) & Right("0" & Day(objDate), 2)
  33. strTime = Right("0" & Hour(objDate), 2) & Right("0" & Minute(objDate), 2) & Right("0" & Second(objDate), 2)
  34. strDateTime = strDate & strTime
  35. ' 提示用户输入数值
  36. strInputNumber = InputBox("请输入当前试卷播种号:", "输入数值")
  37. ' 生成文档名称,固定追加 "错题采集_播种" 和用户输入的数值
  38. strDocName = strInitialPath & "\" & strDateTime & "错题采集_播种" & strInputNumber & ".docx"
  39. ' 获取目录对象
  40. Set objFolder = objFSO.GetFolder(strFolderPath)
  41. ' 创建Word应用对象
  42. Set objWord = CreateObject("Word.Application")
  43. objWord.Visible = False ' 隐藏Word应用程序
  44. ' 创建一个新的Word文档
  45. Set objDoc = objWord.Documents.Add
  46. ' 设置文档格式
  47. Set objPageSetup = objDoc.PageSetup
  48. objPageSetup.Orientation = 0 ' 1横向,0纵向  
  49. objPageSetup.TopMargin = objWord.CentimetersToPoints(2)
  50. objPageSetup.BottomMargin = objWord.CentimetersToPoints(1)
  51. objPageSetup.LeftMargin = objWord.CentimetersToPoints(1)
  52. objPageSetup.RightMargin = objWord.CentimetersToPoints(1)
  53. objPageSetup.HeaderDistance = objWord.CentimetersToPoints(1)
  54. objPageSetup.FooterDistance = objWord.CentimetersToPoints(0.5)
  55. ' 设置纸张大小
  56. ' 9=A5,8=A4
  57. objPageSetup.PaperSize = 8
  58. ' 设置分栏
  59. Set objColumns = objDoc.Sections(1).PageSetup.TextColumns
  60. objColumns.SetCount(2)
  61. objColumns.LineBetween = True ' 添加分栏线
  62. ' 设置页眉内容
  63. With objDoc.Sections(1).Headers(1).Range
  64.     .ParagraphFormat.Alignment = 2 ' 右对齐
  65.     .Font.Name = "宋体"
  66.     .Font.Size = 10.5 ' 小四号字
  67.     .Text = ""
  68. End With
  69. ' 遍历目录中的文件
  70. For Each objFile In objFolder.Files
  71.     ' 获取文件名
  72.     strFileName = objFile.Name
  73.    
  74.     ' 检查文件扩展名是否为JPG
  75.     If LCase(objFSO.GetExtensionName(strFileName)) = "jpg" Then
  76.         ' 将文件名(不包含扩展名)写入Word文档
  77.         objDoc.Content.InsertAfter objFSO.GetBaseName(strFileName) & vbCrLf
  78.     End If
  79. Next
  80. ' 添加页码到页脚
  81. ' With objDoc.Sections(1).Footers(1).Range
  82. '     .ParagraphFormat.Alignment = 1 ' 居中
  83. '     .InsertAfter "第 "
  84. '     .Fields.Add .Characters.Last, -1, "PAGE", False
  85. '     .InsertAfter " 页,共 "
  86. '     .Fields.Add .Characters.Last, -1, "NUMPAGES", False
  87. '     .InsertAfter " 页"
  88. ' End With
  89. ' 关闭左侧导航窗格
  90. objWord.CommandBars("Navigation").Visible = False
  91. ' 保存Word文档
  92. objDoc.SaveAs strDocName
  93. ' 关闭Word文档
  94. objDoc.Close
  95. ' 退出Word应用
  96. objWord.Quit
  97. ' 清理对象
  98. Set objDoc = Nothing
  99. Set objWord = Nothing
  100. Set objFolder = Nothing
  101. Set objFSO = Nothing
  102. Set objShell = Nothing
  103. ' 打开最新生成的Word文件
  104. Set objWord = CreateObject("Word.Application")
  105. objWord.Visible = True
  106. objWord.Documents.Open strDocName
  107. Set objWord = Nothing
复制代码

111行也不是什么要紧的,改成注释好了

QQ 20147578

TOP

回复 2# czjt1234


    好的 谢谢

TOP

不同word之间略有区别 还会有进程无法关闭等问题 不如输入到txt再手动复制到word
你好

TOP

返回列表