找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 6613|回复: 3

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

[复制链接]
发表于 2025-3-18 13:19:03 | 显示全部楼层 |阅读模式
以下代码是将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
复制代码
发表于 2025-3-19 12:42:36 | 显示全部楼层
111行也不是什么要紧的,改成注释好了
 楼主| 发表于 2025-3-20 12:24:17 | 显示全部楼层
回复 2# czjt1234


    好的 谢谢
发表于 2025-3-21 22:47:05 | 显示全部楼层
不同word之间略有区别 还会有进程无法关闭等问题 不如输入到txt再手动复制到word
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 03:12 , Processed in 0.019084 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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