在做学生查看上机记录窗体时,遇到了两个比较棘手的问题,不过还是解决了!!!
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控件中表格宽度的设置:
此控件中想让它加载的出来的数据刚好能够不被表格覆盖,可以用以下代码:
扫描二维码关注公众号,回复:
4125421 查看本文章
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)