標題:
[發問]
VBA輸出PDF於特定次數後發生問題
[打印本頁]
作者:
ntpuvnm
時間:
2019-3-19 21:38
標題:
VBA輸出PDF於特定次數後發生問題
本帖最後由 ntpuvnm 於 2019-3-19 21:41 編輯
最近在跑公司資料產製圖表輸出,但無論用「ExportAsFixedFormat」或「Printout」的方式處理,大約165筆左右就會異常,下方有測試時的錄影紀錄
1.不產出PDF測試可以跑完全部資料
2019-03-17VBA測試紀錄
https://youtu.be/4NK0B0OHt9U
[attach]30244[/attach]
2.產出PDF
(1)以ExportAsFixedFormat的方式產出的資料較小
2019-03-17VBA測試紀錄ExportAsFixedFormat
https://youtu.be/ZtYduSyLqnQ
[attach]30243[/attach]
(2)以printout方式產出的資料大約為ExportAsFixedFormat方法的2倍大小
2019-03-17VBA測試紀錄print
https://youtu.be/219px5hiU2k
[attach]30242[/attach]
系統資源不足,無法完整顯示。
[attach]30241[/attach]
但無論以何種方式,大約執行165筆後就會異常,觀察截圖後
讀取量大小 Printout(178,665) > ExportAsFixedFormat(151,766) > 不產出PDF(31,057)
寫入量大小 ExportAsFixedFormat(655,688) > Printout(17,874) > 不產出PDF(5,786)
其他I/O大小 Printout(1,190,267) > ExportAsFixedFormat(948,638) > 不產出PDF(104,833)
記憶體用量 ExportAsFixedFormat(231,952K) > Printout(229,096K) > 不產出PDF(172,692K)
猜想應該是記憶體使用量的問題,但是不產出PDF下執行到499筆的記憶體量卻不會發生「系統資源不足,無法完整顯示。」的問題,請問可能是哪個環節出了問題呢??
下方為轉檔時主要會用到的程式碼
Sub export()
Dim FileName As String
Dim myFolder$
Dim MyFile As Object
Dim i As Integer, filemsg As Integer
myFolder = "D:\"
For i = 1 To 499
'暫停10秒
If i Mod 50 = 0 Then
ThisWorkbook.save
End If
Application.StatusBar = "目前進度" & i
myfilepath = myFolder & FileName & ".pdf"
輸出.ExportAsFixedFormat Type:=xlTypePDF, FileName:=myfilepath,Quality:=xlQualityStandard, IncludeDocProperties:=True,IgnorePrintAreas:=False, OpenAfterPublish:=False 'ExportAsFixedFormat方法
'輸出.PrintOut ActivePrinter:="Microsoft Print to PDF", Copies:=1,Collate:=True, IgnorePrintAreas:=False, PrToFilename:=myfilepath 'printout方法
Application.Wait Now() + TimeValue("00:00:01")
Set MyFile = CreateObject("Scripting.FileSystemObject") '檢測檔案大小
Application.Wait Now() + TimeValue("00:00:01")
With MyFile.Getfile(myfilepath)
filemsg = Round(.Size / 1024)
'判斷檔案大小
If filemsg < 50 Then
filelog = "檔案錯誤,強制跳出迴圈"
MsgBox (filelog)
Exit For
End If
Set MyFile = Nothing
End With
Next
End Sub
作者:
jcchiang
時間:
2019-3-20 08:12
回復
1#
ntpuvnm
If filemsg < 50 Then
filelog = "檔案錯誤,強制跳出迴圈"
MsgBox (filelog)
Exit For
End If
可能是這一段檢查檔案大小,判斷檔案<50就跳出程式,可試著改小試試
作者:
ntpuvnm
時間:
2019-3-20 12:50
在沒設定這段代碼就有這問題了,是設了這段終止執行才對話視窗顯示記憶體問題,否則原先的狀況是excel畫面凍結住都無反應,連問題在哪都不清楚
回復
2#
jcchiang
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)