機房收費系統之學生檢視上機記錄
阿新 • • 發佈:2019-01-28
在做學生檢視上機記錄窗體時,遇到了兩個比較棘手的問題,不過還是解決了!!!
First:如何將msflexgrid中的記錄匯出到excel中
如下:
Private Sub cmdexcel_click() Rem:定義控制元件的行值 Dim i As Integer Rem:定義控制的列值 Dim j As Integer Rem:定義excel程式 Dim xlApp As Excel.Application Rem:定義工作簿 Dim xlBook As Excel.Workbook Rem:定義工作表 Dim xlSheet As Excel.Worksheet Rem:判斷是否有記錄可供匯出 If MSFlexGrid1.Text = "" Then MsgBox "無記錄可匯出!", vbOKOnly + vbInformation, "溫馨提示" Exit Sub Else Rem:物件例項化 Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Rem:不斷例項化工作簿,add在這裡起不斷新建工作簿的作用 Set xlBook = xlApp.Workbooks.Add Rem:例項化工作表 Set xlSheet = xlBook.Worksheets(1) Rem:將msflexgrid中的記錄匯入到excel中 For i = 0 To MSFlexGrid1.Rows - 1 For j = 0 To MSFlexGrid1.Cols - 1 MSFlexGrid1.Row = i MSFlexGrid1.Col = j xlSheet.Cells(i + 1, j + 1) = Trim(MSFlexGrid1.Text) Next Next End If End Sub
我們來看下里面的程式碼:
第一:Set xlApp = CreateObject("Excel.Application")
解釋:這句話的意思是建立一個excel
第二:Set xlBook = xlApp.Workbooks.Add
解釋:不斷的新建工作簿,其意為可以開啟多個工作簿
第三:Set xlSheet = xlBook.Worksheets(1)
解釋:括號中的數字可以對應開啟哪個工作表
Second:msflexgrid控制元件中表格寬度的設定:
此控制元件中想讓它載入的出來的資料剛好能夠不被表格覆蓋,可以用以下程式碼:
Rem:定義msflexgrid的自動列寬 Public Sub adjustcolwidth(frmcur As Form, gridcur As Object, Optional bnullrow As Boolean = True, Optional dbllncwidth As Double = 0) Rem:定義列數和函式的代表值 Dim i, j As Integer Rem:定義寬度 Dim dblwidth As Double With gridcur For i = 0 To .Cols - 1 dblwidth = 0 If .ColWidth(0) <> 0 Then For j = 0 To .Rows - 1 If frmcur.TextWidth(.TextMatrix(j, i)) > dblwidth Then dblwidth = frmcur.TextWidth(.TextMatrix(j, i)) End If Next .ColWidth(i) = dblwidth + dbllncwidth + 1899 End If Next End With End Sub 註釋:frmcur所對應的是窗體的名稱,而grid所對應的是msflexgrid控制元件的名稱
這段程式碼可以加在公共模組中,然後再呼叫它即可。
如何呼叫:
Call adjustcolwidth(frmusercomputer, MSFlexGrid1, True, 0)