高考考试网
当前位置: 首页 高考资讯

excel自动获取vbscript数据(使用VBScript实现多Excel文件相互sheet拷贝等操作)

时间:2023-07-27 作者: 小编 阅读量: 7 栏目名: 高考资讯

excel自动获取vbscript数据之前的使用VBA实现的多文件相互sheet拷贝。在实践中,发现文件的数量越多,文件的大小越大,VBA工具越不稳定。这主要是因为VBA不够稳定,而且非常耗费内存。更改为VBScript后,性能问题大为改善。基本不需要人工干预了。另外有一些对象没有关闭,虽不影响执行,但是会产生一些内存垃圾。代码'标注必须显示声明各种变量OptionExplicit'声明变量的时候,不需要类型。

excel自动获取vbscript数据?之前的【工作拾遗2 VBA工具实现Module和Sheet的拷贝及按钮绑定宏】使用VBA实现的多文件相互sheet拷贝在实践中,发现文件的数量越多,文件的大小越大,VBA工具越不稳定经常会出现各种奇怪的问题出现问题的时候, 就需要手工干预这主要是因为VBA不够稳定,而且非常耗费内存更改为VBScript后,性能问题大为改善 基本不需要人工干预了,今天小编就来聊一聊关于excel自动获取vbscript数据?接下来我们就一起去研究一下吧!

excel自动获取vbscript数据

之前的【工作拾遗2 VBA工具实现Module和Sheet的拷贝及按钮绑定宏】使用VBA实现的多文件相互sheet拷贝。在实践中,发现文件的数量越多,文件的大小越大,VBA工具越不稳定。经常会出现各种奇怪的问题。出现问题的时候, 就需要手工干预。这主要是因为VBA不够稳定,而且非常耗费内存。更改为VBScript后,性能问题大为改善。 基本不需要人工干预了。

涉及到的功能

使用VBS操作Excel的Sheet,Module,打开,保存,关闭等

输出log

取得当前文件夹

文件的基本操作,追加模式,建立文件,判断存在,删除等

可参照之前的VBA实现的相同功能,对比一下不同。另外有一些对象没有关闭,虽不影响执行,但是会产生一些内存垃圾。作者比较懒,先不修正了。

代码

' 标注必须显示声明各种变量 Option Explicit ' 声明变量的时候,不需要类型。否则会出编译错误 Dim objExcel Dim currentPath Dim templateWorkbook Dim jsonConverter Dim loadAdip Dim util Dim objFSO Dim objLogfile' 建立很常用的fso对象,用来操作普通文件 Set objFSO = CreateObject("Scripting.FileSystemObject") ' 建立Excel对象 Set objExcel = CreateObject("Excel.Application")' 取得当前文件夹 currentPath = objFSO.GetFolder(".").Path ' 追加模式打开/建立log文件 Set objLogfile = objFSO.OpenTextFile(currentPath & "\AddDDSheet.log", 8, True)' 上一章讲过,不显示警告对话框 objExcel.DisplayAlerts = False ' 输出log writeLog objLogfile, "############## Start ##############"' 取得需要拷贝的Sheet存在的模板文件Set templateWorkbook = objExcel.Workbooks.Open(currentPath & "CopyFrom.xlsm")' 取得需要拷贝的Module,从文件中导出到当前文件夹 module1 = currentPath & "\module1.bas" templateWorkbook.VBProject.VBComponents("module1").Export jsonConverter' 递归调用sub,实现将Sheet和Module拷贝到当前文件夹\files下所有Excel文件中 ' 这里需要注意,只有扩展名为xlsm的Excel文件才能接收Module LoopAllSubFolders currentPath & "\files", templateWorkbook' 关闭模板文件 templateWorkbook.Close() ' 将刚才导出的module删除 If IsExitAFile(module1) Then DeleteAFile(module1) END ifobjExcel.DisplayAlerts = True Set objExcel = nothing writeLog objLogfile, "############## End ##############" objLogfile.close() Set objFSO = Nothing Set objLogfile = Nothing msgbox("Execution over")' 递归调用的sub,也是主要功能模块Sub LoopAllSubFolders(folderPath, template) Dim fileName Dim fullFilePath Dim tempWorkbook Dim tempWorksheet Dim currentPathDim fso Dim folder Dim files Dim basefolder Dim subFolders Dim fileIf Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"Set fso = CreateObject("Scripting.FileSystemObject") Set basefolder = fso.GetFolder(folderPath) For Each file In basefolder.files fileName = file.Name ' excel files only If Right(fileName, 5) = ".xlsx" Or Right(fileName, 5) = ".xlsm" ThenSet tempWorkbook = objExcel.Workbooks.Open(folderPath & fileName)Dim isExist isExist = FalseIf worksheetExists("EventDefinition", tempWorkbook) Or worksheetExists("DBMapping(R)", tempWorkbook) Or _ worksheetExists("DBMapping(CUD)", tempWorkbook) Or worksheetExists("Master", tempWorkbook) Then isExist = True End IfIf isExist Then tempWorkbook.Close ElseDim module1 module1 = currentPath & "\module1.bas"' 导入module到目标文件 If IsExitAFile(module1) Then tempWorkbook.VBProject.VBComponents.Import module1' 拷贝多个Sheet到目标文件 ' 这里要注意,Copy方法有两个参数,第一个是Before,第二个是After,想指定拷贝到某个Sheet之前,需要用第一个, 否则需要用第二个。 这里用的第二个, 所以第一个参数是空的,第二个参数和空的第一个参数之间用逗号间隔 template.Worksheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")).Copy , tempWorkbook.Worksheets(tempWorkbook.Worksheets.Count)' 将module中的宏绑定到按钮上 tempWorkbook.Worksheets("Sheet1").Shapes("Button 1").OnAction = tempWorkbook.Name & "!Module1.execute"' 保存文件 tempWorkbook.Save' 关闭文件 tempWorkbook.ClosewriteLog objLogfile, "############## " & folderPath & fileName & "executed ##############" End If End If Next ' 递归 Set subFolders = basefolder.subFoldersFor Each folder In subFoldersLoopAllSubFolders folder.path, templateNextEnd Sub' 判断Sheet是否存在Function worksheetExists(shtName, wb) Dim sht worksheetExists = False For Each sht In wb.Worksheets If sht.Name = shtName Then worksheetExists = True exit for End if NextEnd Function' 输出logSub writeLog(objLogfile, str)objLogfile.WriteLine FormatDateTime(Now(), 1) & _" " & FormatDateTime(Now(), 3) & " " & strEnd Sub' 判断文件是否存在Function IsExitAFile(filespec) Dim fso Set fso=CreateObject("Scripting.FileSystemObject")If fso.fileExists(filespec) ThenIsExitAFile=TrueElse IsExitAFile=FalseEnd IfEnd Function' 删除文件Sub DeleteAFile(filespec) Dim fso Set fso= CreateObject("Scripting.FileSystemObject") fso.DeleteFile(filespec)End Sub

    推荐阅读
  • 三月看樱花适合发朋友圈的微信心情说说(关于看樱花的句子)

    三月看樱花适合发朋友圈的微信心情说说?阳光明媚,樱花盛开,醉了整个春天!春光翩翩而至,樱花路上漫天飞的樱花,心情确实明媚了很多。这如曼如雾亦如烟的花海,真正演绎了什么叫花的魅力。游人如织,只为见证花开花落的盛况。满树繁花锦簇,人们喜笑颜开,春天是真的拥抱了这个世界。阳春三月,春光明媚。期待已久的樱花初绽,像是落在春日里的一场雪。樱花已静静绽放,被风吹落的花瓣洋洋洒洒,犹如樱花雨!

  • 孙悟空为什么最后选择了取经(孙悟空是人马座还是猎户座)

    孙悟空是人马座还是猎户座如果一个人坚持他的信念,不管这信念来自于他自己还是来自于他人的观点,不管这些信念代表的是原则、态度、顿悟或任何其他精神力量,我们说这个人有性格力量,或就是有性格——《战争论》孙悟空是什么星座的?是射手。

  • 虾的正确制作方法(虾怎么做好吃)

    接下来我们就一起去了解一下吧!虾的正确制作方法鲜虾从虾头和虾身连接处挑出虾线,洗净后放入碗中,加入1勺料酒1勺盐,搅拌均匀,进行腌制。2头整蒜剁成泥,青红椒切丁,葱切颗粒。锅中适量油烧热,倒入蒜泥、青红椒,加入1勺白糖,小火炒香。蒜蓉炒香后,倒入腌制好的鲜虾,炒至变色,加入1勺耗油2勺生抽,不断翻炒。加入半碗水,撒入葱花,先大火烧开,再中火慢慢收干汁,就可出锅啦。

  • 气血不足不能吃什么水果(气血不足吃什么)

    桂圆能够补益心脾,养血安神。现在是秋冬季,气温很低,气血不足的女性朋友可以每天泡一杯桂圆红枣枸杞水,有助于调理气色、安神保健。

  • 通过司法考试有什么用(了解一下)

    跟着小编一起来看一看吧!国家司法考试是国家统一组织的从事特定法律职业的资格考试。初任法官、初任检察官和取得律师资格必须通过国家司法考试。我国实行司考资格与律师执业相分离制度,通过司考只是取得了律师资格,要想做律师,还须申请领取律师执业证书。根据《律师法》,申请颁发律师执业证书,应当具备以下条件:拥护我国宪法。在律师事务所实习满一年。

  • 香芋牛奶汤圆制作方法(香芋牛奶汤圆做法)

    以下内容希望对你有帮助!香芋牛奶汤圆制作方法主料:香芋1个、牛奶1盒、糯米粉适量、白糖适量。材料备好,香芋洗净切长块。取一点糯米粉加适量的水。坐锅烧开水,糯米团搓成汤圆。水开了放下去煮至漂浮,倒掉一些水。留一点就行了、然后加牛奶进去。加入蒸熟的香芋煮2分钟即可。

  • 跑完步按摩技巧(跑完步有哪些按摩技巧)

    一般每个部位按摩3~5分钟,感觉较为疲劳的部位可适当延长时间。点按太冲、商丘、合谷、风池穴,每穴点按20秒~1分钟。太冲穴在一、二跖骨结合前凹陷处,商丘穴在外踝前下方凹陷处,合谷穴在一、二掌骨间平等二掌骨中央处,风池穴在枕后两侧凹陷平耳垂处。点按这四个穴位有助于消除肌肉疲劳和增强抵抗力,点按时由轻而重用力,至有较强的酸胀麻痛感时持续20秒至1分钟。

  • 神武3魔族角色哪个好看(神武3电脑版谁是最强萌宠)

    是的,那就是《神武3》中的萌宠:吉祥、小葫芦、小昕、小武、小贝和嵩鼠。小昕小昕应该是所有萌宠里最最常见的了,只要首充就能得到,可以说是人手一只的前期神宝宝。这样武功盖世的小武,和小贝一样的资质,两个宝宝算是萌宠界的“雌雄双煞”了。资质方面,嵩鼠的各项资质上限可以说是萌宠中最高的了,攻击达到1564,防御和体力也有1437和1373,算是正常水平,速度也有1500。

  • 战狼2票房56亿吴京拿多少(战狼2创造投资2亿票房18亿的奇迹)

    在上映8天之时,《战狼2》票房已高达18亿,片方肯定赚得盆满钵满。而吴京没有这么做,他为了确保《战狼2》品质,一直在尽量压缩演员片酬,对于天价演员都一一拒绝。据悉,在为张翰那个角色寻找演员时,吴京先找了其他男星,可一连找几位都提出高片酬。总之,《战狼2》之所以能做出美国大片的效果,最大功臣肯定是作为导演和男主的吴京。

  • 馒头不用蒸熟也能做(馒头不用蒸不用烤)

    正好有一盒秘鲁飞鱼籽肠,如果煎着吃,就失去清香的鲜味,而且还油腻。家庭主妇最爱的地方是厨房,而厨房里的锅碗瓢盆和厨电肯定是少不了的。利用这15分钟的时间还可以去干点别的,时间利用得非常好。面团揉好后,不用取出来,盖一块湿布增加发酵的湿度。生坯放入不粘锅中时千万不要放油,就让面皮贴在锅上二次发酵即可。明天还会继续为大家更新内容,不要错过!