The advantage of this methods is that they work pretty fast, compared to send/bring data cell by cell.
Flexgrid to Excel Example:
Excel To Flexgrid Example:VB Code:
Private Sub FlexToExcel() Dim xlObject As Excel.Application Dim xlWB As Excel.Workbook Set xlObject = New Excel.Application 'This Adds a new woorkbook, you could open the workbook from file also Set xlWB = xlObject.Workbooks.Add Clipboard.Clear 'Clear the Clipboard With MSFlexGrid1 'Select Full Contents (You could also select partial content) .Col = 0 'From first column .Row = 0 'From first Row (header) .ColSel = .Cols - 1 'Select all columns .RowSel = .Rows - 1 'Select all rows Clipboard.SetText .Clip 'Send to Clipboard End With With xlObject.ActiveWorkbook.ActiveSheet .Range("A1").Select 'Select Cell A1 (will paste from here, to different cells) .Paste 'Paste clipboard contents End With ' This makes Excel visible xlObject.Visible = True End Sub
This has been tested Using Windows XP-SP2, VB6-SP6, and Office XP (2002).VB Code:
Private Sub ExcelToFlexgrid() Dim xlObject As Excel.Application Dim xlWB As Excel.Workbook Set xlObject = New Excel.Application Set xlWB = xlObject.Workbooks.Open("C:\Book1.xls") 'Open your book here Clipboard.Clear With xlObject.ActiveWorkbook.ActiveSheet .Range("A1:F7").Copy 'Set selection to Copy End With With MSFlexGrid1 .Redraw = False 'Dont draw until the end, so we avoid that flash .Row = 0 'Paste from first cell .Col = 0 .RowSel = .Rows - 1 'Select maximum allowed (your selection shouldnt be greater than this) .ColSel = .Cols - 1 .Clip = Replace(Clipboard.GetText, vbNewLine, vbCr) 'Replace carriage return with the correct one .Col = 1 'Just to remove that blue selection from Flexgrid .Redraw = True 'Now draw End With xlObject.DisplayAlerts = False 'To avoid "Save woorkbook" messagebox 'Close Excel xlWB.Close xlObject.Application.Quit Set xlWB = Nothing Set xlObject = Nothing End Sub
This code might need minor modifications when using a different version of Office.




Reply With Quote