2017-08-08 62 views
1

我正在將具有46列作爲生產報告的12,000條記錄寫入Excel文件。充滿數據時不顯示工作表。快速設置使用Excel對象的數字格式

上一個StackOverflow信息教會了我如何使用對象數組將數值放入速度範圍中。我希望這也可以用於格式化值。

代碼剪斷:

objExcel.Calculation = XlCalculation.xlCalculationManual 
objExcel.ScreenUpdating = False 

dcel = objWS.Range(objWS.Cells(rowdatastart, 1), objWS.Cells(rowdataend, nProdReportCol.ProdReportColCount - 2)) 

dcel.Value = aobj 

dcel.NumberFormat = bobj 

objExcel.ScreenUpdating = True 
objExcel.Calculation = XlCalculation.xlCalculationAutomatic 

aobj和BOBJ是適合的範圍對象(,)陣列。 bobj包含顯示時間爲「12:23a」的字符串,如「h:mma/p」,以及顯示數字爲「53/25」的「0.00」。

「dcel.value = aobj」需要半秒。 「dcel.NumberFormat = bobj」需要38秒。

對於我錯過/誤解的任何建議?我寧願7秒鐘的報告(開始excel,寫,保存,關閉excel)不花45秒,因爲我希望數字/日期/時間出現在我選擇的位置。

+0

不適用于格式。也許你可以創建範圍對象,以便所有需要特定'bobj'格式的單元格可以一次格式化;或者你可以使用條件格式來一次設置整個範圍。由於你的代碼正在工作,這可能是最好的[代碼審查](https://codereview.stackexchange.com/) –

回答

0

如果每列都有其自己的格式,然後嘗試每個整列的格式。對於每列也不要使用數組,如果格式相同,則可以使用單個字符串。

爲每一列都這樣做。

請嘗試並提供反饋。

0

經過一番更多的實驗後,我找到了與S Meaden相同的解決方案。由於46列中只有14列不是「一般」,因此我收集了日期,時間和二進制數字的列號。循環遍歷每一個,爲12000條記錄和1列創建一個範圍,設置格式。這對於所有列大約需要半秒鐘。

奇怪的是,使用46對象數組設置46個單元格的行要比列中的12000個單元格長很多,但是在那裏。

謝謝大家。