Office 板


LINE

软体:EXCLE 版本:2010 您好 我运用EXCEL VBA撰写一个巨集指令 内容是读取100个JSON档案後再将其内容重行排版後 输出成1个TXT档(目的是为了格式转换) 但是我发现开启这个EXCEL并第1次执行时耗时6.8秒 在未关闭EXCEL档案情况下,执行第2次时耗时7.7秒 依此类推,第3次耗时8.9秒、第4次耗时10.64秒、第5次耗时13.56秒... 请问原因是什麽呢?因为我原始资料有达数十万笔,如果依照这样的速率 将无法继续执行下去 感谢回复 巨集内容如下: Sub test() Dim Time0# Time0 = Timer Dim OutputFilePath As String OutputFilePath = "D:\output.txt" Open OutputFilePath For Output As #1 len1 = WorksheetFunction.CountA(Range("'工作表1'!A:A")) For i = 1 To 100 On Error Resume Next num1 = WorksheetFunction.Find(",", 工作表1.Cells(i, 1)) numA = Mid(工作表1.Cells(i, 1), 1, num1 - 2) numB = Mid(工作表1.Cells(i, 1), num1 - 1, 1) num2 = WorksheetFunction.Find(",", 工作表1.Cells(i, 1), num1 + 1) numC = Mid(工作表1.Cells(i, 1), num1 + 1, num2 - num1 - 1) num3 = WorksheetFunction.Find(",", 工作表1.Cells(i, 1), num2 + 1) numD = Mid(工作表1.Cells(i, 1), num2 + 1, num3 - num2 - 1) num4 = WorksheetFunction.Find(",", 工作表1.Cells(i, 1), num3 + 1) numE = Mid(工作表1.Cells(i, 1), num3 + 1, num4 - num3 - 1) numF = Mid(工作表1.Cells(i, 1), num4 + 1, 8) Sheets("工作表2").Select filepath1 = "TEXT;D:\ " & 工作表1.Cells(i, 1) With ActiveSheet.QueryTables.Add(Connection:= _ filepath1, Destination _ :=Range("$A" & 1)) .Name = 工作表1.Cells(i, 1) .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 65001 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With num5 = Len(工作表2.Cells(1, 11)) numG = Mid(工作表2.Cells(1, 11), 9, num5 - 9) 工作表2.Rows("1:1").Select Selection.Delete Shift:=xlToLeft Print #1, 工作表1.Cells(i, 1); " "; numA; " "; numB; " "; numC; " "; numD; " "; numE; " "; numF; " "; numG Next Close #1 MsgBox "执行时间 " & Timer - Time0 & " 秒" & vbCrLf & "平均时间" & (Timer - Time0) / 100 & "秒" End Sub --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.249.38.71
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1537800892.A.93A.html ※ 编辑: genow (111.249.38.71), 09/24/2018 23:09:18 ※ 编辑: genow (111.249.38.71), 09/24/2018 23:10:15
1F:→ newacc: num值或许可以使用split方式来解析Cells(i,1) 09/24 23:21
2F:→ newacc: 程式中会大量调用Cells内容,可以试试看一开始直接把工作 09/24 23:22
3F:→ newacc: 表1的A1:A100值先存在一个array里面,之後回圈里需要时再 09/24 23:22
4F:→ newacc: 从array(i)叫值出来 09/24 23:22
5F:→ newacc: 不过我会想先分段计时看看,才知道一直呼叫cells值是不是 09/24 23:24
6F:→ newacc: 拖慢速度的原因 09/24 23:24
7F:→ newacc: 另外,不确定Print会不会也是拉长速度的原因,可以试试看 09/24 23:25
8F:→ newacc: 先全部存在一个变数里,回圈跑完之後再写进txt档里 09/24 23:25
9F:→ newacc: 我猜工作表2删100次也是一个主因,建议不要在回圈中执行 09/24 23:27
10F:→ newacc: delete动作,可以跟工作表1一样套用i控制变数,最後再一次 09/24 23:28
11F:→ newacc: 把工作表2.Range("1:100").Delete即可 09/24 23:28
12F:推 newacc: 实测Print速度很快,存变数反而慢很多0rz 09/24 23:46
13F:→ newacc: 呃,刚刚在看到你的QueryTable是放在工作表2的A1 QQ 09/24 23:48
14F:→ newacc: 我有个疑问,请问你载入的外部资料内容有多少?除了K1的值 09/25 00:17
15F:→ newacc: 以外,其他的值会用到吗? 09/25 00:18
16F:→ newacc: 我自己测试,如果有新的资料进来,会把旧资料往右推,但因 09/25 00:22
17F:→ newacc: 为你每个回圈都会删掉第一行,所以越早进来的资料,会一行 09/25 00:23
18F:→ newacc: 一行被删掉,如果只需要读K1值的话,一是看有没有办法不要 09/25 00:23
19F:→ newacc: 用QueryTable,直接在档案中读取。二是把.RefreshStyle值 09/25 00:24
20F:→ newacc: 改成xlOverwriteCells,也不需要把第一行删掉,新资料会自 09/25 00:24
21F:→ newacc: 动把旧资料覆盖掉 09/25 00:24
22F:→ newacc: 当然这些还是跟你的资料内容有关 09/25 00:25
23F:→ genow: 感谢回覆,今天人在外面,等晚上回家时立即来试试,有问题 09/25 07:56
24F:→ genow: 再请教! 09/25 07:56







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP