ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 500多份文档表格格式修改

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-4-24 00:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主,你提供的附件样稿中,欲改文档和改好文档两相对照,不一样啊!(怎么1、4桩变成了2、4桩?)。
还有,你应该把要设置格式的地方变成红色字体,这样才鲜明!
再有,你说表头什么什么格式,但据我所知,所谓表头,其实是表格第一行文字(你的表头意思是表格之小标题),这个我不敢苟同!
——想帮忙吧,但就是没看明白,该怎么做。
——请楼主,重新提供两相对照的新样稿附件(我虽然很笨,但也会一点点VBA编程)。。。

TA的精华主题

TA的得分主题

发表于 2015-4-24 00:11 | 显示全部楼层
欲改文档,应提供3-5个文档做为示例;改好文档,仅提供一个示例文档即可,并以红色标注已经修改的地方。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-27 20:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
多谢楼上的建议。

107.rar

88.81 KB, 下载次数: 23

欲改文件

1-1桩基检验批(完整版)(资料员做).rar

25.05 KB, 下载次数: 23

注释文件(仅注释处已修改)

TA的精华主题

TA的得分主题

发表于 2015-5-3 23:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢楼主!但是非常抱歉,我还是没看明白怎么做!就是表格太多了,给我整懵了。

TA的精华主题

TA的得分主题

发表于 2015-5-5 14:34 | 显示全部楼层
楼主的表格太不规范了,表格之前的内容可能是1行-3行,做起来懵。
给个表格规范时的中间过程吧,希望楼主有能力研究
  1. Sub 批量修改_MeThee()
  2. On Error Resume Next
  3. Application.ScreenUpdating = False
  4. Dim aPath$, arr, aDoc As Document
  5. Dim aTable As Table, aRange As Range
  6. Dim aTableCount&, aParaCount, aLength&, bLength&
  7. Dim aSectionCount&
  8. aPath = ThisDocument.Path
  9. arr = mySearch(aPath & "\107\*.doc")  '遍历结果
  10. iLbound = LBound(arr)
  11. iUbound = UBound(arr)
  12. For i = iLbound To iUbound - 1
  13.     If InStr(1, arr(i), "~") = 0 Then
  14.         Set aDoc = Documents.Open(arr(i))
  15.         aSectionCount = aDoc.Sections.Count
  16.         For j = 1 To aSectionCount
  17.             With aDoc.Sections(j).PageSetup
  18.                 .TopMargin = CentimetersToPoints(2)
  19.                 .BottomMargin = CentimetersToPoints(2)
  20.                 .LeftMargin = CentimetersToPoints(2.5)
  21.                 .RightMargin = CentimetersToPoints(1.5)
  22.                 '.HeaderDistance = 1.5
  23.                 '.FooterDistance = 1.75
  24.             End With
  25.         Next j
  26.         aTableCount = aDoc.Tables.Count
  27.         For j = 1 To aTableCount
  28.             Set aTable = aDoc.Tables(j)
  29.             aParaCount = aDoc.Range(0, aTable.Range.Start).Paragraphs.Count
  30.             Set aRange = aDoc.Paragraphs(aParaCount - 2).Range
  31.             aRange.SetRange aRange.Start, aRange.End - 1
  32.             With aRange '设置第一行格式
  33.                 .Font.Name = "宋体"
  34.                 .Font.Size = 15
  35.                 .Font.Bold = True
  36.                 .Font.Spacing = 3  '设置字距
  37.                 .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
  38.                 .ParagraphFormat.LineSpacing = 22
  39.                 .ParagraphFormat.Alignment = wdAlignParagraphCenter
  40.             End With
  41.             aLength = myLength(aRange)
  42.             Set aRange = aDoc.Paragraphs(aParaCount - 1).Range
  43.             aRange.SetRange aRange.Start, aRange.End - 1
  44.             aRange.Text = VBA.Trim$(aRange.Text)
  45.             With aRange
  46.                 .Font.Name = "宋体"
  47.                 .Font.Size = 18
  48.                 .Font.Bold = True
  49.                 .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
  50.                 .ParagraphFormat.LineSpacing = 22
  51.                 .ParagraphFormat.Alignment = wdAlignParagraphCenter
  52.                 '根据特殊要求调整字距
  53.                 aSpacing = .Font.Spacing
  54.                 aChrCount = .Characters.Count
  55.                 aRange.SetRange aRange.Start, aRange.End - 1
  56.                 bLength = myLength(aRange)
  57.                 aRange.Select
  58. s:
  59.                 If bLength < aLength Then
  60.                     Selection.Font.Spacing = Selection.Font.Spacing + 1
  61.                     bLength = myLength(aRange)
  62.                     If bLength < aLength Then GoTo s
  63.                 End If
  64.                 .Font.Spacing = .Font.Spacing + 0.5
  65.             End With
  66.             With aRange.Find
  67.                 Set bRange = aRange
  68.                 .ClearFormatting
  69.                 .MatchWildcards = True
  70.                 .Text = "[0-9A-Za-z]{2}"
  71.                 .Forward = True
  72.                 .Wrap = wdFindStop
  73.                 Do While .Execute = True
  74.                     Set aRange = .Parent
  75.                     aRange.SetRange aRange.Start, aRange.End - 1
  76.                     aRange.Font.Spacing = 0
  77.                     aRange.SetRange aRange.End, bRange.End
  78.                 Loop
  79.             End With
  80.             Set aRange = aDoc.Paragraphs(aParaCount).Range
  81.             With aRange
  82.                 .Font.Name = "宋体"
  83.                 .Font.Size = 10
  84.             End With
  85.             '标题段格式设置完成
  86.             With aTable.Range.Font
  87.                 .Name = "宋体"  '设置表格字体
  88.                 .Size = 9
  89.                 .Bold = False   '去除加粗
  90.             End With
  91.             '这里是其他操作
  92.         Next j
  93.         aDoc.Close True  '保存关闭
  94.         End If
  95. Next i
  96. Application.ScreenUpdating = True
  97. End Sub
复制代码
  1. Enum aSearchType
  2.     aSearchTypeFolder = 0
  3.     aSearchTypeFile = 1
  4.     aSearchTypeAll = 2
  5. End Enum

  6. Function mySearch(aPath$, Optional searchTraversal As Boolean = True, Optional searchType As aSearchType = aSearchTypeFile) As String()
  7. '参数1:遍历目录全路径
  8. '参数2:是否搜索子目录
  9. '参数3:搜索文件、目录或者全部
  10. Dim aNum&, cmdStr$, folder$, aTemp$
  11. folder = """" & aPath & """"
  12. cmdStr = Environ$("comspec") & " /c dir " & folder   '初始化字串
  13. If searchTraversal Then cmdStr = cmdStr & " /s"      '定义是否遍历
  14. aTemp = Mid(aPath, InStrRev(aPath, "") + 1)         '获取最后一个""后的内容
  15. If Left(aTemp, 2) = "*." Then searchType = aSearchTypeFile
  16. If searchType = aSearchTypeFile Then                 '定义搜索文件、目录还是全部
  17.     cmdStr = cmdStr & " /a:-d /b"
  18. ElseIf searchType = aSearchTypeFolder Then
  19.     cmdStr = cmdStr & " /a:d /b"
  20. ElseIf searchType = aSearchTypeAll Then
  21.     cmdStr = cmdStr & " /b"
  22. End If
  23. cmdStr = cmdStr & " > C:\aTemp.txt"
  24. With CreateObject("WScript.Shell")
  25.        .Run cmdStr, 0, True
  26. End With
  27. aNum = FreeFile
  28. Open "C:\aTemp.txt" For Input As #aNum
  29.     mySearch = Split(StrConv(InputB(LOF(aNum), aNum), vbUnicode), vbCrLf)
  30. Close #aNum
  31. End Function

  32. Public Function myRegExp(ByVal str$, ByVal aPattern$)
  33. With CreateObject("Vbscript.RegExp")
  34.     .Global = True
  35.     .Pattern = aPattern    '"[^一-﨩]"
  36.     myRegExp = .Replace(str, "")
  37. End With
  38. End Function

  39. Function myLength(aRange As Range)
  40. Dim aLeft&, aRight&
  41. Dim aStart&, aEnd&
  42. aStart = aRange.Start
  43. aEnd = aRange.End
  44. With aRange
  45.     aLeft = .Information(wdHorizontalPositionRelativeToPage)
  46.     .SetRange .End, .End
  47.     aRight = .Information(wdHorizontalPositionRelativeToPage)
  48.     .SetRange aStart, aEnd
  49. End With
  50. myLength = Abs(aRight - aLeft)
  51. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2015-7-6 14:07 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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