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

[问题求助] 处理Excel的VBS代码如何才能执行的更快呢?

[复制链接]
发表于 2019-4-19 15:59:58 | 显示全部楼层 |阅读模式
1.更新office后,所有表格大小全部变了。需要调整表格行高、页边距;可是工作簿数量太多,写的脚本处理起来又很慢,有什么好办法呢?
2.能否建立一个可以对工作簿文件 “有选择性的” 打印程序呢?谢谢

需求:
1. "报审表"
      行高Height + 1.7                                      
       左页边距(2.6)
       上页边距(2)
       右页边距(0.8)
       下页边距(2)
  2."定位测量验收记录"
      Height + 1.7                             
      左页边距(2.6)
      上页边距(1.7)
      右页边距(1)
       下页边距(1.7)
3. "楼层轴线复测"
      行高Height + 0.9                                                                              
       ... (2)
      ... (2.3)
      ... (1.5)
      ... (1.4)
4. "成果表"
     行高Height + 5.5
      ...(2.6)
     ... (1.7)
     ... (0.8)
     ... (2)
5. "交接记录"
    行高Height + 2                                       
    ...(2.6)
    ... (2)
    ...(0.8)
    ...(2)
6.能否建立一个可以对工作簿有选择性的打印程序呢?谢谢
  1. Set excel = createobject("excel.application")
  2. excel.visible = true
  3. Set fso = createobject("scripting.filesystemobject")
  4. curdir = fso.getparentfoldername(wscript.scriptfullname)

  5. handlefolder fso.getfolder(curdir)
  6. excel.quit

  7. msgbox "Done!"

  8. Sub HandleFolder(ByVal objFolder)
  9.         For Each objfile In objfolder.files
  10.                 If LCase(fso.getextensionname(objfile.name)) = "xls" Then
  11.                         Set objworkbook = excel.workbooks.open(objfile.path)
  12.                        
  13.                         For Each objsheet In objworkbook.sheets
  14.                                 objsheet.activate

  15.                                 Select Case objsheet.name
  16.                                 Case "报审表"
  17.                                         For Each objRange In objSheet.UsedRange.Rows
  18.                                                 objRange.RowHeight = objRange.RowHeight + 1.7
  19.                                         Next
  20.                                        
  21.                                         objSheet.PageSetup.LeftMargin = excel.CentimetersToPoints(2.6)
  22.                                         objSheet.PageSetup.TopMargin = excel.CentimetersToPoints(2)
  23.                                         objSheet.PageSetup.RightMargin = excel.CentimetersToPoints(0.8)
  24.                                         objSheet.PageSetup.BottomMargin = excel.CentimetersToPoints(2)
  25.                                                                 Case "定位测量验收记录"
  26.                                         For Each objRange In objSheet.UsedRange.Rows
  27.                                                 objRange.RowHeight = objRange.RowHeight + 1.7
  28.                                         Next
  29.                                        
  30.                                         objSheet.PageSetup.LeftMargin = excel.CentimetersToPoints(2.6)
  31.                                         objSheet.PageSetup.TopMargin = excel.CentimetersToPoints(1.7)
  32.                                         objSheet.PageSetup.RightMargin = excel.CentimetersToPoints(1)
  33.                                         objSheet.PageSetup.BottomMargin = excel.CentimetersToPoints(1.7)
  34.                                 Case "楼层轴线复测"
  35.                                         For Each objRange In objSheet.UsedRange.Rows
  36.                                                 objRange.RowHeight = objRange.RowHeight + 0.9
  37.                                         Next
  38.                                        
  39.                                         objSheet.PageSetup.LeftMargin = excel.CentimetersToPoints(2)
  40.                                         objSheet.PageSetup.TopMargin = excel.CentimetersToPoints(2.3)
  41.                                         objSheet.PageSetup.RightMargin = excel.CentimetersToPoints(1.5)
  42.                                         objSheet.PageSetup.BottomMargin = excel.CentimetersToPoints(1.4)
  43.                                                                Case "成果表"
  44.                                         For Each objRange In objSheet.UsedRange.Rows
  45.                                                 objRange.RowHeight = objRange.RowHeight + 5.5
  46.                                         Next
  47.                                        
  48.                                         objSheet.PageSetup.LeftMargin = excel.CentimetersToPoints(2.6)
  49.                                         objSheet.PageSetup.TopMargin = excel.CentimetersToPoints(1.7)
  50.                                         objSheet.PageSetup.RightMargin = excel.CentimetersToPoints(0.8)
  51.                                         objSheet.PageSetup.BottomMargin = excel.CentimetersToPoints(2)
  52.                                                                Case "交接记录"
  53.                                         For Each objRange In objSheet.UsedRange.Rows
  54.                                                 objRange.RowHeight = objRange.RowHeight + 2
  55.                                         Next
  56.                                        
  57.                                         objSheet.PageSetup.LeftMargin = excel.CentimetersToPoints(2.6)
  58.                                         objSheet.PageSetup.TopMargin = excel.CentimetersToPoints(2)
  59.                                         objSheet.PageSetup.RightMargin = excel.CentimetersToPoints(0.8)
  60.                                         objSheet.PageSetup.BottomMargin = excel.CentimetersToPoints(2)
  61.                                 End select
  62.                         Next

  63.                         objworkbook.save
  64.                         objworkbook.close
  65.                 End If
  66.         Next

  67.         For Each objsubfolder In objfolder.subfolders
  68.                 handlefolder objsubfolder
  69.         Next
  70. End Sub
复制代码
发表于 2019-4-19 16:45:44 | 显示全部楼层
改成多进程
 楼主| 发表于 2019-4-19 16:50:22 | 显示全部楼层
回复 2# zaqmlp
多进程,这个不太会 ;P ;P
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 05:07 , Processed in 0.018269 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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