在機房收費系統中,需要查詢充值金額。選擇好日期段,點“查詢”即在MSHFlexGrid(在這裡,此控件命名為:MSHFGRecharge_Records)控件中顯示資訊(看下圖——圖1)。那如何将将顯示出的資訊導出為Excel呢?
圖1
導出方法(大體思路):
1.引用excel對象:MicrosoftExcel 14.0 Ojbect Library
2.建立Application對象:SetxlsApp = CreateObject("Excel.Application")
3.使用Application及其子對象:将mshflexgrid中的記錄對應的導出到excel中
4.關閉Application對象:Set xlsApp = Nothing
代碼部分:
Private Sub cmdTo_Excel_Click()
Dim xlsApp As Excel.Application '存儲所建立的EXCEL對象
Dim xlsBook As Excel.Workbook '存儲所建立的EXCEL工件簿檔案
Dim xlsSheet As Excel.Worksheet '存儲所設定的活動工作表
Dim intForRow As Integer 'for循環語句中的循環變量,用于控制行
Dim intForCol As Integer 'for循環語句中的循環變量,用于控制列
Set xlsApp =CreateObject("Excel.Application") '建立EXCEL對象
Set xlsBook = xlsApp.Workbooks.Add '建立EXCEL工件簿檔案
Set xlsSheet = xlsBook.Worksheets(1) '設定活動工作表
'把表格中的資料寫入Excel對象中
For intForRow = 0 To MSHFGRecharge_Records.Rows - 1
For intForCol = 0 To MSHFGRecharge_Records.Cols - 1
If intForCol = 0 Then '第一行為學号,讓其以字元形式顯示,否則學号中前面的“0”就不顯示
xlsSheet.Cells(intForRow + 1,intForCol + 1) = "'" &MSHFGRecharge_Records.TextMatrix(intForRow, intForCol)
Else
xlsSheet.Cells(intForRow + 1,intForCol + 1) = MSHFGRecharge_Records.TextMatrix(intForRow, intForCol)
End If
Next intForCol
Next intForRow
xlsApp.Visible = True '顯示Excel
Set xlsApp = Nothing '交還控制給Excel
End Sub
注意:
看第一張圖,卡号中有以0開頭的。如果直接把表格中的資料導出到Excel中,卡号中的0就不會顯示(見圖2)。說明,預設導出的為非字元型格式,這就相當于,直接在Excel的單元格中輸入數字,預設為數值型。那如何顯示0呢?當然得轉成字元形式。是以,上方代碼,For循環語句中,用一個“If”語句進行選擇:隻要是首行的資料,就在前面加一個英文的單引号“'”。進而在Excel中,首列單元格中資料轉成了字元型,消失的0奇迹般再現(見圖3)!
圖2
圖3