vb用陣列方式快速匯出MSFlexGrid表格資料到Excel表格中

miaozk2006發表於2013-02-02
       本來從MSFlexGrid或MSHFlexGrid匯出資料到Excel中,是一個非常簡單的問題,但論壇裡還是經常有人問如何匯出,有的雖然知道用單元格賦值方式迴圈匯出,但速度太慢,因此寫了一個通用的資料匯出函式,由於以陣列方式一次性賦值,運度速度得到了極大提升,需要的朋友可以參照以下程式碼,稍作修改,就可以寫出用於其它表格控制元件向Excel匯出資料的功能了。

程式碼如下:

Public Sub ExportToExcel(ByRef objGrid As MSHFlexGrid, ByVal strFileName As String, Optional StartRow As Long = 1, Optional StartColumn As Long = 1)
    Dim objApp As Object
    Dim objWorkbook As Object
    Dim objWorksheet As Object
    Dim objRange As Object
    Dim CellsData() As String
    Dim i As Long, j As Long
    Dim nRows As Long, nColumns As Long

    '構造二維陣列
    nRows = objGrid.Rows
    nColumns = objGrid.Cols
    ReDim CellsData(1 To nRows, 1 To nColumns)
    For i = 1 To nRows
        For j = 1 To nColumns
            CellsData(i, j) = objGrid.TextMatrix(i - 1, j - 1)
        Next
    Next

    '匯出到Excel中
    If StartRow < 1 Then StartRow = 1
    If StartColumn < 1 Then StartColumn = 1
    Set objApp = CreateObject("Excel.Application")
    objApp.ScreenUpdating = False '禁止螢幕重新整理
    Set objWorkbook = objApp.Workbooks.Add
    Set objWorksheet = objWorkbook.Sheets.Add
    Set objRange = objWorksheet.Range(objWorksheet.Cells(StartRow, StartColumn), objWorksheet.Cells((StartRow - 1) + nRows, (StartColumn - 1) + nColumns))
    objRange.Value = CellsData
    objWorkbook.SaveAs strFileName '儲存到指定檔案
    objWorkbook.Close
    objApp.Quit '退出Excel
    Set objRange = Nothing
    Set objWorksheet = Nothing
    Set objWorkbook = Nothing
    Set objApp = Nothing

    '銷燬二維陣列
    Erase CellsData
End Sub

 測試程式碼如下:

Option Explicit

Private Sub Form_Load()
    Dim i As Long, j As Long

    '填充測試用資料
    Me.MSHFlexGrid1.Rows = 2000
    Me.MSHFlexGrid1.Cols = 10
    For i = 0 To Me.MSHFlexGrid1.Rows - 1
        For j = 0 To Me.MSHFlexGrid1.Cols - 1
            Me.MSHFlexGrid1.TextMatrix(i, j) = i & "行" & j & "列"
        Next
    Next
    Debug.Print Me.MSHFlexGrid1.TextArray(100)
End Sub

Private Sub cmdExport_Click()
    ExportToExcel Me.MSHFlexGrid1, "d:/temp.xls"

    Me.SetFocus
    MsgBox "匯出完畢"
End Sub

 

摘自:用陣列方式快速匯出MSFlexGrid表格資料到Excel表格中

相關參考

vb用陣列方式快速匯出MSFlexGrid表格資料到Excel表格中

Excel 非常詳細 [網摘]

如何使用自動化與分析工具庫建立 Excel 直方圖

VB封裝Excel chart

如何用VB實現Excel檔案的自動合併

vb如何用程式碼對Excel的指定區域實行保護

如何真正實現無提示儲存Excel文件

相關參考

VB表格控制元件總覽與例程分析

VB用記錄集填充表格函式

VBMSHFlexGrid新增表格編輯功能

VB相關

VB 釋放資原始檔到指定目錄函式

VB 讀取資原始檔裡面的字串

VB中資原始檔.res的使用方法詳解

VB6.0中建立和使用文字資原始檔

VB WindowsMediaPlayer 播放

vbWindowsMediaPlayer的常用屬性和方法

VB Environ系統環境變數函式大全

VB 去除文字框貼上功能

VB LISTBOX

VB 刪除陣列中的重複元素

VB陣列快速排序演算法

關於三個概念:ActiveXOLECOM

VB 獲得磁碟的檔案系統

VB中用API實現檔案拖放

加密演算法-MD5演算法

VB中使用MD5演算法

VB 全域性熱鍵HOOK (不佔系統資源版本)

VB 小技巧自定義TextBox文字框右鍵選單

VB 寫下載者程式碼

VB 一行程式碼的訣竅

VBS教程-wscript物件

vb列舉程式

VB中如何讓執行緒或程式在指定的CPU上執行

VB判斷指定的WORD文件是否被開啟

VB如何讀取快捷方式的目標路徑

VBAPI控制輸入法狀態

為系統載入右鍵註冊控制元件選項【VB 註冊控制元件】

VB如何根據視窗標題獲得程式名稱

VB快速查詢大型檔案中包含的字串

VB實現可執行檔案執行時自刪除

VB 開啟txt,bat,jpg 任意字尾程式

VB 寫檔案關聯程式

VB 自啟動建立右鍵選單

VB 判斷IP能否ping

VB FTP操作類(可上傳、下載、建立資料夾等等)

VB部分檔案彙總B

Vb 求素數最經典的方法也是最快的方法

vb用陣列方式快速匯出MSFlexGrid表格資料到Excel表格中

VBMsFlexGrid控制元件的使用細則

點選MSFlexGrid資料控制元件的標題進行資料排序

VB 獲取滑鼠座標

VBNEW的用法(申請記憶體空間)

VB CreateObject函式

VB中的New CreateObject的區別

VB ListBox 新增不重複的值

VB 單擊ListView控制元件某列表頭進行排序

VB 簡單實現簡體與繁體互轉

VB 阿拉伯數字轉換為中文大寫數值函式

VB 獲取Textbox文字框中的行數函式

更多精彩>>>

相關文章