在VB中把EXCEL文件导入MSFlexGrid
VBA实现Excel的数据导入与处理

VBA实现Excel的数据导入与处理数据导入与处理是Excel中一个重要的功能,可以通过VBA编程实现自动化操作,提高工作效率。
本文将介绍如何使用VBA编程实现Excel的数据导入与处理。
首先,我们需要创建一个新的Excel工作簿并打开VBA编辑器。
在VBA编辑器中,我们需要添加以下引用:```Microsoft Excel 16.0 Object Library```这个引用将允许我们使用Excel的对象和方法。
一般来说,我们需要使用文件对话框来选择要导入的数据文件。
以下是一个简单的VBA代码示例,用于实现文件对话框功能:```vbaSub SelectFile()Dim MyFile As Variant'创建文件对话框对象With Application.FileDialog(msoFileDialogFilePicker).Title = "选择要导入的数据文件".AllowMultiSelect = False.Filters.Clear.Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls" .Show'获取选择的文件路径If .SelectedItems.Count > 0 ThenMyFile = .SelectedItems(1)ElseExit SubEnd IfEnd With'导入数据到工作簿ImportData MyFileEnd Sub```在上述代码中,我们使用了`FileDialog`对象来创建一个文件对话框,设置了对话框的标题、允许选择的文件类型,并显示对话框。
选择的文件路径存储在`MyFile`变量中,然后将文件路径作为参数调用`ImportData`子过程来导入数据。
接下来,我们需要定义一个`ImportData`子过程,用于将选择的文件中的数据导入到Excel工作簿中:```vbaSub ImportData(MyFile As Variant)Dim wb As WorkbookDim ws As WorksheetDim srcRange As RangeDim dstRange As Range'打开选择的文件并复制数据Set wb = Workbooks.Open(MyFile)Set ws = wb.Sheets(1)'定义数据源和目标范围Set srcRange = edRangeSet dstRange = ThisWorkbook.Sheets(1).Cells(1, 1)'将源范围数据复制到目标范围srcRange.Copy dstRange'关闭选择的文件wb.Close SaveChanges:=False'进行数据处理操作ProcessData dstRangeEnd Sub```在上述代码中,我们首先打开选择的文件并复制数据到一个源范围(`srcRange`)中。
VBA实现Excel数据导入和导出的实用方法

VBA实现Excel数据导入和导出的实用方法Excel是一款功能强大的办公软件,而VBA(Visual Basic for Applications)是Excel的一种编程语言,它可以帮助我们实现各种自动化任务。
在本篇文章中,我将为您介绍VBA实现Excel数据导入和导出的实用方法。
一、数据导入方法:1. 打开Excel,按下“ALT + F11”打开VBA编辑器。
2. 在VBA编辑器中,选择“插入”-“模块”,在新建的模块中编写以下代码:```vbaSub ImportData()Dim dataWorkbook As WorkbookDim importWorkbook As WorkbookDim importSheet As WorksheetDim importRange As Range'选择需要导入数据的Excel文件Application.FileDialog(msoFileDialogOpen).Show'将选择的文件导入到新建的工作簿Set importWorkbook =Workbooks.Open(FileName:=Application.FileDialog(msoFileDialogOpen). SelectedItems(1))'选择需要导入数据的工作表和范围Set importSheet = importWorkbook.Sheets("Sheet1") '根据需要修改工作表名称Set importRange = importSheet.Range("A1:B10") '根据需要修改数据范围'将数据复制到当前工作簿中importRange.Copy ThisWorkbook.Sheets("Sheet1").Range("A1") '根据需要修改当前工作簿和工作表名称'关闭导入的工作簿,不保存更改importWorkbook.Close SaveChanges:=FalseEnd Sub```3. 关闭VBA编辑器,返回Excel界面,按下“ALT + F8”调出宏对话框,选择并运行“ImportData”宏。
关于vb如何从MSFlexGrid空间中把内容导入excel的方法

以下代码写在模块中:'MSHFlexGrid控件导出到ExcelPublic Function ExportFlexDataToExcel(flex As MSFlexGrid, g_CommonDialog As CommonDia log)On Error GoTo ErrHandlerDim xlApp As ObjectDim xlBook As ObjectDim Rows As Integer, Cols As IntegerDim iRow As Integer, hCol As Integer, iCol As IntegerDim New_Col As BooleanDim New_Column As Booleang_CommonDialog.CancelError = TrueOn Error GoTo ErrHandler' 设置标志g_CommonDialog.Flags = cdlOFNHideReadOnly' 设置过滤器g_CommonDialog.Filter = "All Files (*.*)|*.*|Excel Files" & _"(*.xls)|*.xls|Batch Files (*.bat)|*.bat"' 指定缺省的过滤器g_CommonDialog.FilterIndex = 2' 显示“打开”对话框g_CommonDialog.ShowSaveIf flex.Rows <= 1 ThenMsgBox "没有数据!", vbInformation, g_MsgtitleExit FunctionEnd IfSet xlApp = CreateObject("Excel.Application")Set xlBook = xlApp.Workbooks.AddxlApp.Visible = FalseWith flexRows = .RowsCols = .ColsiRow = 0iCol = 1For hCol = 0 To Cols - 1For iRow = 1 To RowsxlApp.Cells(iRow, iCol).Value = .TextMatrix(iRow - 1, hCol)Next iRowiCol = iCol + 1Next hColEnd WithWith xlApp.Rows(1).Font.Bold = True.Cells.Select.Columns.AutoFit.Cells(1, 1).Select' .Application.Visible = TrueEnd WithxlBook.SaveAs (g_CommonDialog.FileName)xlApp.Application.Visible = FalsexlApp.DisplayAlerts = FalsexlApp.QuitSet xlApp = Nothing '"交还控制给ExcelSet xlBook = Nothingflex.SetFocusMsgBox "数据已经导出到Excel中。
VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示

VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示2013年11月14日作者:Admin1.VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示2.以前也有Excel导入通用功能,但速度有些慢一会把两种实现体式格式都供给出为参考对比。
一、原通用导入excel文件到MSHFlexGrid控件如下:Public Function DRExcel(fd As MSHFlexGrid,CD1 As CommonDialog)As Boolean ""导入Excel文件函数20120621孙广乐Dim file_name As StringDim xlApp As New Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.worksheetDim xlQuery AsExcel.QueryTableDim r ""r为行数Dim i,jOn Error GoTo a:file_name = ""fnum = FreeFileCD1.Flags =&H2With CD1 .Flags = cdlOFNHideReadOnly& cdlOFNOverwritePrompt "" 设置过滤器 .Filter ="xls文档(*.xls)|*.xls|xlsx文档(*.xlsx)|*.xlsx" ""只能导入xls这种文件格局"" 指定缺省的过滤器 .FilterIndex = 1 "".ShowSave .ShowOpenfile_name = .filenameEnd WithIf file_name = "" Then ""断定文件是否存在DRExcel = False Exit FunctionEnd If Set xlApp = CreateObject("Excel.Application")Set xlBook = NothingSet xlSheet = NothingSet xlBook = xlApp.Workbooks().AddSet xlSheet = xlBook.Worksheets ("sheet1")""xlApp.Visible = TrueSet xlBook =xlApp.Workbooks.Open(file_name)Set xlSheet = xlBook.Worksheets(1)""测列数j = 1Do While xlSheet.Cells(1,j)<> "" j = j + 1Loopi = 1Do While xlSheet.Cells(i,1)<> "" i = i + 1LoopIf j = 1 Or i = 1 Then MsgBox "不容许导入空表!" DRExcel = False Exit FunctionEnd Iffd.Visible = Truefd.rows = i - 1fd.Cols = j - 1 For i = 1 To fd.rows For j = 1 To fd.Cols ""列数fd.TextMatrix(i - 1,j - 1)= xlSheet.Cells (i,j)Next jNext i ""xlApp.Application.Visible = TruexlBook.ClosexlApp.Quit """交还把握给Excelfd.ColAlignment(0)= 0 ""物品代码MsgBox "完成导入"fd.FixedRows = 1fd.FixedCols = 0CD1.filename = ""DRExcel = Truea:End Function二、新办法,高效把excel文件导入到MSHFlexGrid控件。
VB实现类电子表格grid的数据录入

VB实现类电子表格grid的数据录入---- 在编程中经常会遇到应用程序中要输入大量数据的问题,如果能在该程序中实现象电子表格那样的输入界面,就可以解决这个问题。
---- VB 虽提供了Grid 网格控件,但其只具有显示输出功能,要使其能接受输入数据,必须对它加以改造,在计算机报刊中的许多文章都对此进行了探讨,但所用方法都不能令人满意,笔者经过摸索,找出以下办法,供有兴趣者参考。
---- 首先在VB 5.0 环境下Form1 中放上如图1 所示的各控件:Text1;Grid1;Command1;Command2;Vscroll1;Hscroll1。
图1 Form1 及其控件---- 双击Form1 打开Code 窗口,编制程序代码。
Dim inputcolnum, inputrownum As IntegerPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Activate()Text1.SetFocus ' 文本框获得焦点End SubPrivate Sub Form_Load()Grid1.ColWidth(0) = 540Grid1.RowH eight(0) = 216 '单元格的宽和高inputcolnum = 13inputrownum = 15 '表中显示的列、行数Grid1.Cols = 20Grid1.Rows = 20 '表中总的列、行数HScroll1.Height = 300VScroll1.Width = 300 '水平和垂直滚动条的高、宽度Grid1.Height = (inputrownum + 1) '(Grid1.RowHeight(0) + Grid1.GridLineWidth * 12) + 12 + HScroll1.Height'800×600象素时为12;640×480为15Grid1.Width = (inputcolnum + 1) *(Grid1.ColWidth(0) + Grid1.GridLineWidth * 12) + 12 + VScroll1.Width'表的高、宽度HScroll1.Width = Grid1.Width - VScroll1.Width VScroll1.Height = Grid1.Height - HScroll1.Height ' 水平和垂直滚动条的宽、高度HScroll1.Left = Grid1.LeftHScroll1.Top = Grid1.Top + Grid1.Height - HScroll1.Height ' 水平滚动条的位置VScroll1.Left = Grid1.Left + Grid1.Width - VScroll1.Width VScroll1.Top = Grid1.Top' 垂直滚动条的位置HScroll1.Min = 1HScroll1.Max = Grid1.Cols - inputcolnumVScroll1.Min = 1VScroll1.Max = Grid1.Rows - inputrownum' 水平和垂直滚动条的范围Text1.Width = Grid1.ColWidth(0)Text1.Height = Grid1.RowHeight(0)' 文本框的宽、高度Text1.Left = Grid1.Left + Grid1.ColWidth(0)+ Grid1.GridLineWidth * 12Text1.Top = Grid1.Top + Grid1.RowHeight(0)+ Grid1.GridLineWidth * 12' 文本框的位置' 初始化赋值Text1.Visible = TrueFor I = 1 To Grid1.Cols - 1Grid1.Col = IGrid1.Row = 0Grid1.Text = Str(I)Grid1.Col = 0Grid1.Row = IGrid1.Text = Str(I)Next IGrid1.Col = 1Grid1.Row = 1 ' 网格的列、行初始位置Grid1.SelStartCol = 1Grid1.SelStartRow = 1 '网格中单元格的列、行初始位置Grid1.LeftCol = 1Grid1.TopRow = 1 '网格中左上角的列、行初始位置End SubPrivate Sub Grid1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)Grid1.Col = Grid1.SelStartColGrid1.Row = Grid1.SelStartRowText1.Text = Grid1.Textcolnum = Grid1.Col - Grid1.LeftCol + 1rownum = Grid1.Row - Grid1.TopRow + 1Text1.Left = Grid1.Left + (Grid1.ColWidth(0)+ Grid1.GridLineWidth * 12) * colnumText1.Top = Grid1.Top + (Grid1.RowHeight(0)+ Grid1.GridLineWidth * 12) * rownumEnd SubPrivate Sub Grid1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Text1.SetFocusEnd SubPrivate Sub HScroll1_Change()startcol = Grid1.LeftColGrid1.LeftCol = HScroll1.ValueGrid1.SelStartCol = Grid1.SelStartCol+ Grid1.LeftCol - startcolGrid1.Col = Grid1.SelStartColText1.Text = Grid1.TextEnd SubPrivate Sub Text1_Change()Grid1.Text = Text1.TextEnd SubPrivate Sub Text1_KeyDown(KeyCodeAs Integer, Shift As Integer)Select Case KeyCodeCase 38 ' 光标向上Grid1.Text = Text1.TextIf Grid1.SelStartRow < 2 ThenIf Grid1.TopRow > 1 ThenVScroll1.Value = VScroll1.Value - 1ElseGrid1.SelStartRow = 1End IfElseIf Grid1.TopRow = Grid1.SelStartRow Then VScroll1.Value = VScroll1.Value - 1ElseGrid1.SelStartRow = Grid1.SelStartRow - 1End IfEnd IfGrid1.Col = Grid1.SelStartColGrid1.Row = Grid1.SelStartRowcolnum = Grid1.Col - Grid1.LeftCol + 1rownum = Grid1.Row - Grid1.TopRow + 1Text1.Text = Grid1.TextText1.Left = Grid1.Left + (Grid1.ColWidth(0)+ Grid1.GridLineWidth * 12) * colnumText1.Top = Grid1.Top + (Grid1.RowHeight(0)+ Grid1.GridLineWidth * 12) * rownumExit SubCase 40 ' 光标向下Grid1.Text = Text1.TextIf Grid1.SelStartRow > inputrownum - 1 ThenIf Grid1.TopRow < Grid1.Rows - inputrownum Then VScroll1.Value = VScroll1.Value + 1ElseIf VScroll1.Value = VScroll1.Max AndGrid1.SelStartRow < Grid1.Rows - 1 ThenGrid1.SelStartRow = Grid1.SelStartRow + 1ElseGrid1.SelStartRow = Grid1.Rows - 1End IfEnd IfElseIf Grid1.TopRow = Grid1.SelStartRow - inputrownum Then VScroll1.Value = VScroll1.Value + 1ElseGrid1.SelStartRow = Grid1.SelStartRow + 1End IfEnd IfGrid1.Col = Grid1.SelStartColGrid1.Row = Grid1.SelStartRowcolnum = Grid1.Col - Grid1.LeftCol + 1rownum = Grid1.Row - Grid1.TopRow + 1Text1.Text = Grid1.TextText1.Left = Grid1.Left + (Grid1.ColWidth(0)+ Grid1.GridLineWidth * 12) * colnumText1.Top = Grid1.Top + (Grid1.RowHeight(0)+ Grid1.GridLineWidth * 12) * rownumExit Sub。
VB编程:使用MSHFlexGrid控件与Excel互传数据

VB编程:使用MSHFlexGrid控件与Excel互传数据使用MSHFlexGrid控件获取并更新Excel中的数据要点:1、工程-引用,勾选Microsoft Excel 11.0 Object Libraly。
2、工程-部件,勾选Microsoft Hierarchical FlexGridControl 6.0。
3、在窗体添加一个MSHFlexGrid控件。
4、将需要打开更新的电子表格设置为“共享”(非常重要),方法:工具--共享工作簿。
代码:Private Sub Form_Load()Dim xlExcel As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim AppExcel As ObjectSet xlExcel = CreateObject("Excel.Application")xlExcel.Workbooks.Open "C:\Program Files\Microsoft Visual Studio\mywork\book1.xls"Set xlBook = xlExcel.Workbooks("book1.xls")Set xlSheet = xlBook.Worksheets(2)'选择第2个工作表Dim i As LongWith xlSheetx = 2y = 1While .Cells(2, y).Value <> ""y = y + 1WendWhile .Cells(x, 1).Value <> ""x = x + 1Wend'Debug.Print .RowsMSHFlexGrid1.Rows = x - 1MSHFlexGrid1.Cols = y - 1 MSHFlexGrid1.TextMatrix(0, 0) = .Cells(2, 1).ValueFor j = 2 To MSHFlexGrid1.ColsDim k As Integerk = jIf k Mod 2 = 1 Then k = k - 1MSHFlexGrid1.TextMatrix(0, j - 1) = .Cells(1, k) & .Cells(2, j) NextFor i = 3 To MSHFlexGrid1.RowsFor j = 1 To MSHFlexGrid1.Cols MSHFlexGrid1.TextMatrix(i - 2, j - 1) = .Cells(i, j).ValueNextNextEnd WithWith MSHFlexGrid1.Col = 1.Row = 1' .CellBackColor = vbBlueEnd With xlBook.Close (False) '关闭EXCEL工作簿Set xlSheet = NothingSet xlBook = NothingxlExcel.Quit '关闭EXCELSet xlExcel = Nothing '释放EXCEL对象End SubPrivate Sub Command4_Click() Dim xlExcel AsExcel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim AppExcel As Object'MSFlexGrid1.Redraw = FalseSet xlExcel = CreateObject("Excel.Application")Set xlBook = xlExcel.Workbooks.Open("C:\Program Files\Microsoft Visual Studio\mywork\book1.xls", , ReadWrite) 'Set xlBook = xlExcel.Workbooks("zkb.xls")Set xlSheet = xlBook.Worksheets(2)' xlExcel.Visible = True '设置工作簿为可见With xlSheetFor i = 3 To MSHFlexGrid1.RowsFor j = 1 To MSHFlexGrid1.Cols .Cells(i, j) = MSHFlexGrid1.TextMatrix(i - 2, j - 1)NextNext End With'MSFlexGrid1.Redraw = TruexlBook.SavexlExcel.DisplayAlerts = FalsexlBook.Close (False) '关闭EXCEL工作簿Set xlSheet = NothingSet xlBook = NothingxlExcel.Quit '关闭EXCELSet xlExcel = Nothing '释放EXCEL对象End SubPrivate Sub Form_Load()Dim xlExcel As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim AppExcel As ObjectSet xlExcel = CreateObject("Excel.Application")xlExcel.Workbooks.Open "C:\Program Files\Microsoft Visual Studio\mywork\book1.xls"Set xlBook = xlExcel.Workbooks("book1.xls")Set xlSheet = xlBook.Worksheets(2)Dim i As LongWith xlSheetx = 2y = 1While .Cells(2, y).Value <> ""y = y + 1WendWhile .Cells(x, 1).Value <> ""x = x + 1Wend'Debug.Print .RowsMSHFlexGrid1.Rows = x - 1MSHFlexGrid1.Cols = y - 1 MSHFlexGrid1.TextMatrix(0, 0) = .Cells(2, 1).ValueFor j = 2 To MSHFlexGrid1.ColsDim k As Integerk = jIf k Mod 2 = 1 Then k = k - 1MSHFlexGrid1.TextMatrix(0, j - 1) = .Cells(1, k) & .Cells(2, j) NextFor i = 3 To MSHFlexGrid1.RowsFor j = 1 To MSHFlexGrid1.Cols MSHFlexGrid1.TextMatrix(i - 2, j - 1) = .Cells(i, j).ValueNextNextEnd WithWith MSHFlexGrid1.Col = 1.Row = 1' .CellBackColor = vbBlueEnd With xlBook.Close (False) '关闭EXCEL工作簿Set xlSheet = NothingSet xlBook = NothingxlExcel.Quit '关闭EXCELSet xlExcel = Nothing '释放EXCEL对象End SubPrivate Sub MSHFlexGrid1_Click()With MSHFlexGrid1.CellBackColor = vbCyanText3 = .TextMatrix(.Row, .Col)End WithText3.SetFocusEnd SubPrivate Sub MSHFlexGrid1_DblClick()With MSHFlexGrid1If .CellBackColor = vbCyan Then .CellBackColor = &HFFFFFF End WithEnd Sub。
msflexgrid控件用法

msflexgrid控件用法MSFlexGrid控件是Visual Basic 6.0提供的一种非常有用的表格控件,可以在窗体中创建可编辑的网格。
它允许用户浏览和编辑多行和多列的数据,还可以对数据进行排序、过滤和格式化。
在本文中,我将详细介绍MSFlexGrid控件的用法,包括创建、显示和操作表格数据。
一、创建和显示MSFlexGrid控件在使用MSFlexGrid控件之前,首先需要在窗体中添加一个FlexGrid控件。
在VB6的工具箱中,可以找到FlexGrid控件并将其拖放到窗体上。
在窗体上添加FlexGrid控件后,可以通过设置控件的属性来进行进一步的配置和定制。
1. 设置列数和行数在使用MSFlexGrid控件之前,首先需要设置表格的列数和行数。
可以通过设置Col属性和Row属性来实现。
例如,设置表格的列数为5,行数为10的代码示例如下:MSFlexGrid1.Cols = 5MSFlexGrid1.Rows = 102. 设置表格显示样式可以通过设置控件的属性来设置表格的样式,例如,可以设置表格的边框颜色、背景颜色和字体。
以下是一些常用的属性设置示例:MSFlexGrid1.BorderStyle = flexBorderStyleFixedSingle ' 设置边框样式为单线条MSFlexGrid1.BackColor = vbWhite ' 设置背景颜色为白色MSFlexGrid1.ForeColor = vbBlack ' 设置前景颜色为黑色MSFlexGrid1.FontSize = 12 ' 设置字体大小为12号3. 添加数据到表格可以通过设置控件的TextMatrix属性来添加数据到表格中。
TextMatrix属性是一个二维数组,可以通过指定行和列的索引来设置相关的数据。
例如,将数据“Apple”添加到(1,1)位置的代码示例如下:MSFlexGrid1.TextMatrix(1, 1) = "Apple"二、操作MSFlexGrid控件中的数据在将数据添加到表格之后,可以对表格中的数据进行许多操作,例如,读取单元格数据、排序和过滤数据等。
通过VBA实现Excel数据导入外部数据库的方法

通过VBA实现Excel数据导入外部数据库的方法在Excel中使用VBA可以实现将数据导入到外部数据库的功能,这样可以方便地将Excel表格中的数据保存到其他系统中进行进一步处理和存储。
下面将介绍通过VBA实现Excel数据导入外部数据库的方法。
首先,我们需要确保电脑中已安装数据库驱动程序,例如MySQL、Access等,并且将数据库驱动程序注册到操作系统中。
接下来,在Excel中按下 `ALT + F11` 组合键,打开VBA编辑器。
然后,在VBA编辑器中,通过点击菜单栏上的 `插入` -> `模块` 插入一个新的模块。
在新插入的模块中编写以下代码,该代码将连接数据库并将Excel表格中的数据导入到外部数据库中。
```vbaSub ImportDataToDatabase()' 声明变量Dim con As Object ' 数据库连接对象Dim rs As Object ' 数据库记录集对象Dim strSQL As String ' SQL语句Dim i As Long ' 计数器' 初始化变量Set con = CreateObject("ADODB.Connection")Set rs = CreateObject("ADODB.Recordset")' 连接数据库con.Open "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:\path\to\database.accdb"' 清空数据库中的数据strSQL = "DELETE FROM TableName"con.Execute strSQL' 循环遍历Excel表格中的数据For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row ' 假设数据从第2行开始,第1列为数据库表格的第一个字段' 构造插入数据的SQL语句strSQL = "INSERT INTO TableName (Field1, Field2, Field3) VALUES (" _& "'" & Cells(i, 1).Value & "', " _ ' 假设数据库表格有三个字段,分别为Field1、Field2、Field3& "'" & Cells(i, 2).Value & "', " _& "'" & Cells(i, 3).Value & "')"' 执行SQL语句,将数据插入到数据库中con.Execute strSQLNext i' 关闭数据库连接con.Close' 释放对象Set con = NothingSet rs = Nothing' 提示导入数据成功MsgBox "数据成功导入到数据库中。
VB中MsFlexGrid控件的使用细则及应用举例

VB中MsFlexGrid控件的使用细则及应用举例VB中MsFlexGrid控件的使用细则及应用举例1.VB中MsFlexGrid控件的使用细则>>将文本赋值给MsFlexGrid的单元格MsFlexGrid.TextMatrix(3,1)=”Hello”.>>在MsFlexGrid控件单元格中插入背景图形Set MsFlexGrid.CellPicture=LoadPicture(“C:\temp\1.bmp”)版权申明:本站文章均来自网络.>>选中某个单元MsFlexGrid.Row=1MsFlexGrid.Col=1。
>>用粗体格式化当前选中单元MsFlexGrid.CellFontBold=True根据专家观察,这样的理论和现象都是值得各位站长深思的,所以希望大家多做研究学习,争取总结出更多更好的经验!>>添加新的一行使用AddItem方法,用Tab字符分开不同单元格的内容dim row as stringrow=”AAA”&VBtab&”bbb”MsFlexFrid1.addItem row..>>怎样来实现MSFlexGrid控件单数行背景为白色,双数的行背景为蓝色?Dim i As IntegerWith MSFlexGrid1.AllowBigSelection=True’设置网格样式.FillStyle=flexFillRepeatFor i=0T o.Rows-1.Row=i:.Col=.FixedCols.ColSel=.Cols()-.FixedCols-1If i Mod2=0Then.CellBackColor=&HC0C0C0’浅灰Else.CellBackColor=vbBlue’兰色End IfNext iEnd With。
>>MSFlexGrid控件如何移到最后一行MSFlexGrid1.TopRow=MSFlexGrid1.Rows–1版权申明:本站文章均来自网络,如有侵权,请联系028-********-215,我们收到后立即删除,谢谢!>>如何判断msflexgrid有无滚动条Declare Function GetScrollRange Lib"user32"(ByVal hWnd As Long,ByVal nBar As Long, lpMinPos As Long,lpMaxPos As Long)As LongPublic Const SB_HORZ=&H0Public Const SB_VERT=&H1.Public Function VsScroll(MshGrid As MSHFlexGrid)As Boolean’判断水平滚动条的可见性Dim i As LongVsScroll=Falsei=GetScrollRange(MshGrid.hWnd,SB_HORZ,lpMinPos,lpMax Pos)If lpMaxPos<>lpMinPos Then VsScroll=TrueEnd Function。
VB数据库编程中MSHFlexG...

VB数据库编程中MSHFlexG...VB数据库编程中MSHFlexGrid控件用法详解添加MSHFlexGrid将Name改成flex1添加text 将name 改成txteditPublic rs1 As New ADODB.Recordset, rs2 As New ADODB.Recordset '定义数据集对象Dim i As Integer, j As IntegerSub EditKeyCode(MSHFlexGrid As Control, Edt As Control, KeyCode As Integer, Shift As Integer)'标准编辑控件处理。
Select Case KeyCodeCase 27 'ESC:隐藏焦点并将其返回 MSFlexGridEdt.Visible = FalseMSHFlexGrid.SetFocusCase 13 'ENTER 将焦点返回 MSFlexGrid。
MSHFlexGrid.SetFocusDoEventsIf MSHFlexGrid.Col < MSHFlexGrid.Cols - 1 ThenMSHFlexGrid.Col = MSHFlexGrid.Col + 1ElseIf MSHFlexGrid.Col = MSHFlexGrid.Cols - 1 ThenMSHFlexGrid.Row = MSHFlexGrid.Row + 1MSHFlexGrid.Col = 1End IfEnd IfCase 38 '向上MSHFlexGrid.SetFocusDoEventsIf MSFlexGrid.Row > MSFlexGrid.FixedRows ThenMSFlexGrid.Row = MSFlexGrid.Row - 1End IfEnd SelectEnd SubSub view_DP()If flex1.Col = 4 Or flex1.Col = 5 Or flex1.Col = 6 Then'格式化Flex1表的第7列、第8列、第9列、第11列flex1.TextMatrix(flex1.Row, 5) = Format(flex1.TextMatrix(flex1.Row, 5), "0.00")flex1.TextMatrix(flex1.Row, 6) = Val(flex1.TextMatrix(flex1.Row, 4)) * Val(flex1.TextMatrix(flex1.Row, 5))flex1.TextMatrix(flex1.Row, 6) = Format(flex1.TextMatrix(flex1.Row, 6), "0.00")End IfDim A, B As Single '声明单精度浮点型变量On Error Resume NextFor i = 1 To flex1.Rows - 1If flex1.TextMatrix(i, 1) <> "" And flex1.TextMatrix(i, 4) <> "" And flex1.TextMatrix(i, 6) <> "" ThenA = Val(flex1.TextMatrix(i, 6)) + A '求合计金额B = Val(flex1.TextMatrix(i, 4)) + B '求合计数量End IfNext ilblCount = BlblSum = Format(A, "0.00") '格式化合计金额End SubSub SetButtons(bVal As Boolean)cmdRegister.Enabled = Not bValcmdSave.Enabled = bValcmdCancel.Enabled = bValflex1.Enabled = bValFrame1.Enabled = bValEnd SubPrivate Sub DataGrid2_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyReturn ThenWith Adodc2.Recordset'赋值给flex1表格If .Fields("商品名称") <> "" Then flex1.T extMatrix(flex1.Row, 1) = Trim(.Fields("商品名称"))If .Fields("规格") <> "" Then flex1.TextMatrix(flex1.Row, 2) = Trim(.Fields("规格"))If .Fields("单位") <> "" Then flex1.TextMatrix(flex1.Row, 3) = Trim(.Fields("单位"))flex1.TextMatrix(flex1.Row, 5) = .Fields("成本价")End Withflex1.Col = 4DataGrid2.Visible = False 'DataGrid2不可见txtEdit.Text = ""txtEdit.SetFocusEnd IfIf KeyCode = vbKeyEscape Then '按ESC键DataGrid2不可见DataGrid2.Visible = False' txtEdit.SetFocus 'txtEdit获得焦点End IfEnd SubPrivate Sub delone_Click()For i = 1 To flex1.Cols - 1flex1.TextMatrix(flex1.Row, i) = ""Next iview_DPEnd SubPrivate Sub flex1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)'利用PopupMenu方法If Button And vbRightButton ThenPopupMenu edit '弹出菜单End IfEnd SubPrivate Sub Form_Load()Dim i As Integer'使第一列较窄。
读取Excel内容到MSHFlexgrid

读取Excel内容到MSHFlexgridPublic Sub ExcelToMshfgrd(FileName As String, ByRef RowCount As Integer, ByRef ColCount As Integer, mshg As MSHFlexGrid) '直接导入Excel内容到MshFlexGridIf InStr(FileName, ".xls") = 0 ThenMsgBox "请选择 Excel 文件", vbInformation, "请选择正确文件格式"Exit SubEnd IfDim oExcel As Excel.Application '用前期绑定Set oExcel = New Excel.ApplicationDim wsBook As Workbook '定义工作簿Dim wsSheet As Worksheet '定义工作表With oExcel.Visible = FalseSet wsBook = .ActiveWorkbookSet wsBook = .Workbooks.Open(FileName)Set wsSheet = .ActiveWorkbook.Sheets(1) '读取 Sheet1的数据End With'读取的Excel,基本格式为第一行:主标题,第二行列标题,第三行开始正式内容With wsSheet' If .Cells(1, 1) = "" Then '对第一行内容进行检测,也可忽略' MsgBox "请从第一个单元格开始填写数据", vbOKOnly ' Exit Sub' End If.Cells(1, 1).Select'可对列数进行限定,防止取回列数与所需不符' If ColCount = .Cells.CurrentRegion.Columns.count Then'' End IfRowCount = .Cells.CurrentRegion.Rows.countColCount = .Cells.CurrentRegion.Columns.countWith mshg.MergeCells = flexMergeRestrictRows '.MergeRow(0) = True '合并主标题.Rows = RowCount '+ 1.Cols = ColCount + 1For i = 1 To ColCount.TextMatrix(0, i) = wsSheet.Cells(1, 1) '读取主标题.TextMatrix(1, i) = wsSheet.Cells(2, i) '读取列标题NextFor i = 3 To RowCount '读取选择的内容.TextMatrix(i - 1, 0) = i - 2 '读取行数For j = 1 To ColCount.TextMatrix(i - 1, j) = wsSheet.Cells(i, j) NextNextEnd WithEnd WithwsBook.Close FalseoExcel.Quit '退出'释放内存If Not (wsBook Is Nothing) ThenSet wsBook = NothingEnd IfIf Not (wsSheet Is Nothing) ThenSet wsSheet = NothingEnd IfIf Not (oExcel Is Nothing) ThenSet oExcel = NothingEnd IfEnd Sub。
vb将Excel导入到DataGrid(或数据库)

vb将Excel导入到DataGrid(或数据库)方法一:把Excel当作数据库来操作(这样速度快)或用Excel对象来做,读取数据,然后循环导入读取数据然后一条条的导进去,循环操作因为数据量大很慢。
如何把excel像数据库那样读?难道写成结构体数组么?当作数据库操作:'引用ado:工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)Private Sub Form_Load()Dim cn As New ADODB.Connection, rs As New ADODB.Recordsetcn.CursorLocation = adUseClientcn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\temp.xls;Extended Properties='Excel 8.0;HDR=Yes'"rs.Open "select * from [Sheet1$]", cn, adOpenDynamic, adLockOptimisticSet DataGrid1.DataSource = rsEnd Sub方法二:EXCEL文件要设置固定格式,还要设置命名范围,然后才可以导入大致思路如下:'// 设置打开 EXCEL 文件的连接字符串strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _"Data Source=excel文件名;Extended Properties=Excel 8.0"'// 以记录集的形式打开Excel 文件,adoConn 为ADODB.Connection 对象adoConn.Open strConn'// 将数据插入到指定的表中(以ODBC的方式打开SQL数据库)strSQL = "INSERT INTO [odbc;Driver={SQL Server};Server=服务器IP;Database=数据库;UID=用户名;PWD=密码].SQL中的表名SELECT EXCEL中的字段 FROM EXCEL工作表名"'// 执行导入语句adoConn.Execute strSQL, , adExecuteNoRecords方法三:Dim Conn As ADODB.ConnectionSet Conn = New ADODB.ConnectionConn.Open "连接到你的数据库XJGL.MDB的字符串"Conn.Execute "select * into tmptable from [excel 8.0;database=" + 你的excel表名 + "].[sheet名$]"Conn.Execute "insert into xsda(学籍号,准考证号,姓名,性别,出生年月,班级)select 学籍号,准考证号,姓名,性别,出生年月,班级from tmptable"Conn.Execute "drop tabel tmptable"Set Conn = NothingVB新建Excel文档Public xlApp As Excel.ApplicationPublic xlBook As Excel.WorkbookPublic xlChar As New Excel.ChartPublic xlSheet As New Excel.WorksheetSet xlApp = New Excel.ApplicationSet xlApp = CreateObject("Excel.Application")Set xlBook = xlApp.Workbooks.AddSet xlSheet = xlBook.Worksheets.AddxlSheet.Cells(1, 1) = "测试" '写入内容xlBook.SaveAs ("FILENAME") '保存文件xlApp.QuitSet xlApp = Nothing本方法采用add添加excel文件和datasheet,然后用save保存。
Excel文件导入StringGrid

Excel文件导入StringGrid这是我看到的文章-----不是源作我暂时还没验证正确性EXCEL电子表格作为办公软件OFFICE中的重要组成部份,是日常办公系统的主要助手,因此许多日常所需的业务方面的数据通常是通过电子表格存取。
有时我们需要从日常工作中创建的EXCEL中取得数据进行操作、打印、查询,统计等工作。
在这里我将介绍如何利用delphi完成EXCEL电子表格中数据的操作。
一、新建一项目,从控件栏servers中分别选取控件:excelapplication、excelworkbook1、excelworksheet,放到主窗体from1中,并加入stringgrid、三个按钮、五个显示字段内容的EDIT、二个操作显示记录的label、一个用于打开EXCEL电子表格的控件opendialog等,如下图所示:二、选择excel表'按钮,用于打开EXCEL文件,其代码如下:procedure TForm1.Button1Click(Sender: TObject);var i,j:integer;beginopendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件的打存放初始路径opendialog1.Execute;TryExcelApplication1.Connect;//EXCEL应用程序ExceptMessageDlg('Excel may not be installed',mtError, [mbOk], 0);Abort;End;ExcelApplication1.Visible[0]:=True;ExcelApplication1.Caption:='Excel Application';tryexcelapplication1.Workbooks.Open(opendialog1.FileName, null,null,null,null,null,null,null,null,null,null,null,null,0);//打开指定的EXCEL 文件exceptbeginExcelApplication1.Disconnect;//出现异常情况时关闭ExcelApplication1.Quit;showmessage('请选择EXCEL电子表格!');exit;end;end;ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1 ]);//ExcelWorkbook1与Eexcelapplication1建立连接ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1与Excelworkbook1建立连接//开始从EXCEL中取数,放到stringgrid1中,取完数后关闭EXCELfor i:=1 to 1000 do//最大取值1000for j:=1 to 6 dobeginif trim(excelworksheet1.cells.item[i+1,1])<>'' thenbeginstringgrid1.rowCount:=i+1;stringgrid1.Cells[j,i]:=ExcelWorksheet1.Cells.Item[i+1,j];endelsebeginlabel3.caption:=inttostr(i-1);ExcelApplication1.Disconnect;ExcelApplication1.Quit;//将第一条数据赋给编辑框edit2.text:=stringgrid1.Cells[1,1];edit1.text:=stringgrid1.Cells[2,1];edit3.text:=stringgrid1.Cells[3,1];edit4.text:=stringgrid1.Cells[4,1];edit5.text:=stringgrid1.Cells[5,1];exit;end;end;end;三、'下一条记录'按钮,完成记录向下移动,代码如下:procedure TForm1.Button2Click(Sender: TObject); var x:integer;beginx:=stringgrid1.row+1;if x<> stringgrid1.RowCount thenbeginstringgrid1.row:=stringgrid1.row+1;label1.caption:=inttostr(x);edit2.text:=stringgrid1.Cells[1,x];edit1.text:=stringgrid1.Cells[2,x];edit3.text:=stringgrid1.Cells[3,x];edit4.text:=stringgrid1.Cells[4,x];edit5.text:=stringgrid1.Cells[5,x];exit;endelseshowmessage('已到第一条记录!');end;四、'上一条记录',完成记录上移,代码如下:var x:integer;beginx:=stringgrid1.row-1;if x<>0 thenbeginstringgrid1.row:=stringgrid1.row-1;label1.caption:=inttostr(x);edit2.text:=stringgrid1.Cells[1,x];edit1.text:=stringgrid1.Cells[2,x];edit3.text:=stringgrid1.Cells[3,x];edit4.text:=stringgrid1.Cells[4,x];edit5.text:=stringgrid1.Cells[5,x];exit;endelseshowmessage('已到最后一条记录!');end;五、stringgrid中上下移动时代码:procedure TForm1.StringGrid1Click(Sender: TObject); var i:integer;begini:=stringgrid1.Row;label1.caption:=inttostr(i);edit1.text:=stringgrid1.Cells[2,i];edit2.text:=stringgrid1.Cells[1,i];edit3.text:=stringgrid1.Cells[3,i];edit4.text:=stringgrid1.Cells[4,i];edit5.text:=stringgrid1.Cells[5,i];end;六、运行程序,点击按钮1打开excel表格。
VB中MSHFlexGrid的使用

VB中MSHFlexGrid的使⽤VB-MSHFlexGrid的使⽤直接将查询数据填⼊MSHFLEXGRID:Sub QueryFromSybasebyCon(Condition)With QEvent‘QEvent为Form名称Con.Open strConnRemoters.CursorLocation=adUseClientrs.CursorType=adOpenKeysetOn Error Resume NextRs.Open"select*where"&Condition&"order by event_ts",Con, 3,1‘Condition为SQL查询条件.MSHFlexGrid1.Redraw=False‘重绘,可⼤⼤提⾼Grid的格式化后显⽰速度Set.MSHFlexGrid1.DataSource RsSet Rs=NothingSet Con=NothingEnd WithEnd Sub2.设置MSHFlexGrid的格式Sub FormatFlexGrid()With QEvent.MSHFlexGrid1If.Rows>1And.TextMatrix(1,1)<>""Then'Set Column width.ColWidth(0)=3000'Set Column header.TextMatrix(0,0)="Test"‘设置对齐.ColAlignment(5)=flexAlignRightCenterEnd If‘设置整⾏的颜⾊.Redraw=False.Row=3.Col=0.ColSel=.Cols-1.CellBackColor=RGB(254,216,209)End Sub3.⽀持滚轮事件‘模块部分Public Cn As New ADODB.ConnectionPublic Const GWL_WNDPROC=(-4)Public Const WM_COMMAND=&H111Public Const WM_MBUTTONDOWN=&H207Public Const WM_MBUTTONUP=&H208Public Const WM_MOUSEWHEEL=&H20APublic Oldwinproc As LongPublic Declare Function SetWindowLong Lib"user32"Alias "SetWindowLongA"(ByVal hwnd As Long,_ByVal nIndex As Long,ByVal dwNewLong As Long)As LongPublic Declare Function CallWindowProc Lib"user32"Alias "CallWindowProcA"(ByVal lpPrevWndFunc As Long,_ByVal hwnd As Long,ByVal Msg As Long,ByVal wParam As Long,ByVal lParam As Long)As LongPublic Declare Function GetWindowLong Lib"user32"Alias "GetWindowLongA"(ByVal hwnd As Long,_ByVal nIndex As Long)As LongPublic Declare Function ShellExecute Lib"shell32.dll"Alias "ShellExecuteA"(ByVal hwnd As Long,ByVal lpOperation As String, ByVal lpFile As String,ByVal lpParameters As String,ByVal lpDirectory As String,ByVal nShowCmd As Long)As Long ‘⽀持⿏标动作的函数Public Function FlexScroll(ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,ByVal lParam As Long)As LongSelect Case wMsgCase WM_MOUSEWHEELSelect Case wParamCase-7864320'向下滚动SendKeys"{PGDN}"Case7864320'向上滚动SendKeys"{PGUP}"End SelectEnd SelectFlexScroll=CallWindowProc(Oldwinproc,hwnd,wMsg,wParam, lParam)End Function‘窗体中的程序Private Sub MSHFlexGrid1_GotFocus()Oldwinproc=GetWindowLong(Me.hwnd,GWL_WNDPROC)Private Sub MSHFlexGrid1_LostFocus()SetWindowLong Me.hwnd,GWL_WNDPROC,OldwinprocEnd Sub⽀持键盘事件Private Sub MSHFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer) Dim X As LongDim Y As LongDim L As LongDim Tmp As StringX=MSHFlexGrid1.ColY=MSHFlexGrid1.RowSelect Case KeyCode'功能或扩展Case46‘响应删除Delete键MSHFlexGrid1.Text=""Case vbKeyC'响应Ctrl+C复制功能Clipboard.ClearCall ExportExcelclip(QEvent.MSHFlexGrid1) End SelectEnd SubFunction ExportExcelclip(FLex As MSHFlexGrid)'------------------------------------------------‘将表中内容复制到剪贴板'[Scols]................复制的起始列'[Srows]...............复制的起始⾏'[Ecols]................复制的结束列'[Erows]...............复制的结束⾏'------------------------------------------------Screen.MousePointer=13'Dim Scols,Srows,Ecols,Erows As Integer With FLexScols=.ColSrows=.RowEcols=.ColSelErows=.RowSelIf.ColSel>.Col And.RowSel>.Row ThenSrows=.RowEcols=.ColSelErows=.RowSelElseIf.ColSel<.Col And.RowSel<.Row ThenScols=.ColSelSrows=.RowSelEcols=.ColErows=.RowElseIf.ColSel>.Col And.RowSel<.Row Then Scols=.Col Srows=.RowSelEcols=.ColSelErows=.RowElseIf.ColSel<.Col And.RowSel>.Row Then Scols=.ColSel Srows=.RowEcols=.ColErows=.RowSelEnd IfIf.Col=1And.Row=1ThenScols=0Srows=0End IfEnd WithDim i,J As IntegerDim str As StringDim Fileopens As BooleanOn Error GoTo errstr=""If Srows=0ThenFor i=Scols To Ecols'复制表头If i=Scols Then'str=str&FLex.TextMatrix(0,i)Elsestr=str&Chr(9)&FLex.TextMatrix(0,i)End IfEnd IfFor J=Srows To ErowsIf J>=1ThenFor i=Scols To EcolsIf i=Scols ThenElsestr=str&Chr(9)&FLex.TextMatrix(J, i)End IfNextstr=str&vbCrLfEnd IfNextClipboard.Clear'清除剪贴板Clipboard.SetText str'将正⽂放在剪贴板上Screen.MousePointer=0 err:Select Case err.NumberCase0Case ElseScreen.MousePointer=0MsgBox err.Description,vbInformation,"复制出错"Exit FunctionEnd SelectEnd Function5.打印MSHFLEXGRIDSub InitPrint()‘初始化打印机Printer.Orientation=2‘横向为2,纵向为1Printer.ScaleMode=6‘以mm为单位Printer.ScaleLeft=30'左边界Printer.ScaleTop=30‘上边界Printer.ScaleHeight=300‘设定⾼度Printer.ScaleWidth=200‘设置宽度End SubSub PrintMSHGrid(FlexGrid As MSHFlexGrid)FlexGrid.Parent.PrintFormPrinter.EndDocEnd SubMSHFLEXGRID的输出Public Sub OutDataToText(FLex As MSHFlexGrid)‘输出到TXT⽂本Dim s As String Dim i As IntegerDim J As IntegerDim k As IntegerDim strTemp As StringDim Fname As StringIf FLex.Rows>2ThenIf ="WebData"Then Fname="myfilename-" WebData.SelNode&".txt" '检查并创建临时⽂件夹Call CheckPathOn Error Resume NextDoEventsDim FileNum As IntegerFileNum=FreeFileOpen App.Path&"\Temp\"&Fname For Output As#FileNumWith FLexk=.RowsFor i=0To k-1strTemp=""For J=0To.Cols-1DoEventsstrTemp=&.TextMatrix(i,J)&","Next JPrint#FileNum,Left(strTemp, Len(strTemp)-1)Next iEnd WithClose#FileNumMsgBox“保存成功!⽂件名为"&Fname&vbCrLf&"保存路径为vbCrLf&App.Path&"\Temp" ElseEnd IfEnd SubSub ExporToExcel(FLex As MSHFlexGrid)‘输出到ExcelDim xlapp As Excel.ApplicationDim xlbook As Excel.WorkbookDim xlsheet As Excel.WorksheetWith FLexIf.Rows>2ThenIf ="WebData"Then Fname="Myfilename-" WebData.SelNode&".xls" Call CheckPathSet xlapp=CreateObject("Excel.Application")'创建Excel对象xlapp.Application.Visible=FalseOn Error Resume NextSet xlbook=xlapp.Workbooks.Add'设定单元格格式With xlbook.Worksheets(1).Name=Fname.Range("A1:M1").Font.Color=vbBlue.Range("A1:M1").Font.Bold=TrueColumns("A:M").EntireColumn.AutoFitEnd With'开始传输数据k=0For i=0To.Rows-1For J=0To.Cols-1xlbook.Worksheets(1).Cells(i+1,=.TextMatrix(i,J)Next JNext ixlbook.Worksheets(1).Columns("A:M").EntireColumn.AutoFitxlbook.SaveAs App.Path&"\Temp\"&Fnamexlbook.Application.QuitSet xlbook=NothingMsgBox“保存成功!⽂件名为"&Fname&vbCrLf&"保存路径为vbCrLf&App.Path&"\Temp"MsgBox"⽆数据,请检查"End IfEnd WithEnd SubSub CheckPath()If Dir(App.Path&"\Temp",vbDirectory)=""ThenMkDir App.Path&"\Temp"End IfEnd SubMSHFlexGrid内放⼊CheckBox对象的代码看懂的话,⾥⾯加按钮没有问题。
vb用数组方式快速导出MSFlexGrid表格数据到Excel表格中

本来从MSFlexGrid或MSHFlexGrid导出数据到Excel中,是一个非常简单的问题,但论坛里还是经常有人问如何导出,有的虽然知道用单元格赋值方式循环导出,但速度太慢,因此写了一个通用的数据导出函数,由于以数组方式一次性赋值,运度速度得到了极大提升,需要的朋友可以参照以下代码,稍作修改,就可以写出用于其它表格控件向Excel导出数据的功能了。
Next
Next
'导出到Excel中
If StartRow < 1 Then StartRow = 1
If StartColumn < 1 Then StartColumn = 1
Set objApp = CreateObject("Excel.Application")
objApp.ScreenUpdating = False '禁止屏幕刷新
End Sub
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
代码如下:
Public Sub ExportToExcel(ByRef objGrid As MSHFlexGrid, ByVal strFileName As String, Optional StartRow As Long = 1, Optional StartColumn As Long = 1)