Exportera FlexGrid-data till Excel


I detta exempel visas två tekniker för att skriva data från en FlexGrid-control till ett arbetsblad i Excel.

Det första exemplet kräver att vi anger en referens till Microsoft ActiveX Data Objects x.x Library. Dessutom använder vi oss av det recordset som tilldelade FlexGrid-controlen data varför ingen data från controlen skrivs till arbetsbladet.


Exportera all data från en FlexGrid-control till ett arbetsblad.
 

Option Explicit
Private
cnt As ADODB.Connection

Private rst As ADODB.Recordset

 

'...

 

Private Sub Dump_Records_Workbook()

 '© 2004 Alla rättigheter XL-Dennis
 
 
Dim xlApp As Excel.Application

  Dim xlCalc As Excel.XlCalculation

  Dim xlWBook As Excel.Workbook

  Dim xlWSheet As Excel.Worksheet

  Dim xlrnField As Range, xlrnTarget As Excel.Range  

 

  'Instantiera Excels COM-objekt.

  Set xlApp = New Excel.Application

  Set xlWBook = xlApp.Workbooks.Add

  Set xlWSheet = xlWBook.ActiveSheet

 

 'Turn off the calculation-engine in Excel and store its status.

 With xlApp

  xlCalc = .Calculation

  .Calculation = xlCalculationManual

 End With

 

 

 'Lägger till kolumnnamn och formaterar första raden.

  With xlWSheet

    With .Range("A1:B1")

      .Value = VBA.Array("Dept", "Amount")

      .Font.Bold = True

      .HorizontalAlignment = xlCenter

    End With

    Set xlrnTarget = .Range("A2")

  End With

 

  '"Dumpar data från recordset till arbetsbladet.

  xlrnTarget.CopyFromRecordset rst 

 

  'Sparar arbetsboken.

   xlWBook.SaveAs App.Path & "\Report " & Date & ".xls"

 

  'Visar den skapade arbetsboken.

  With xlApp

  'Reset the status of Excel's calculation-engine.

    .Calculation = xlCalc

    .Visible = True

    .UserControl = True

  End With

 

  'Frigör objekten från minnet.

  Set xlrnField = Nothing

  Set xlrnTarget = Nothing

  Set xlWSheet = Nothing

  Set xlWBook = Nothing

  Set xlCalc = Nothing

  Set xlApp = Nothing

  Set rst = Nothing

 

End Sub

 

 

Exportera valda poster i en FlexGrid-control till en tabell i ett arbetsblad
 

Option Explicit
 

Private Sub Write_Data_FlexGrid_Range()

'© 2004 Alla rättigheter XL-Dennis


 
'I exemplet är egenskapen SelectionMode satt till FlexSelectionByRow
  'för MSHFlextGrid-controlen.


 
Dim xlApp As Excel.Application

  Dim xlCalc As Excel.XlCalculation

  Dim xlWBook As Excel.Workbook

  Dim xlWSheet As Excel.Worksheet

  Dim xlrnField As Range, xlrnLast As Excel.Range

  Dim inRowSel As Integer, inRow As Integer, inNumberOfRows As Integer

  Dim i As Integer, j As Integer

  Const stFile As String = "c:\FlexGridData.xls"

 

  'Erhålla de valda raderna.

  With Me.MSHFlexGrid1

    inRowSel = .RowSel

    inRow = .Row 'Startrad

  End With

 

  'Erhålla antal valda rader.

  inNumberOfRows = inRowSel - inRow + 1

 

 

  'Instantiera och öppna Excels COM-objekt.

  Set xlApp = New Excel.Application

  Set xlWBook = xlApp.Workbooks.Open(stFile)

  Set xlWSheet = xlWBook.Worksheets("Sheet1")

 

  'Stänga av Excels kalkylmotor.

  With xlApp

   xlCalc = .Calculation

   .Calculation = xlCalculationManual

  End With

 

 'Lokalisera den sist ifyllda raden i kolumn A.

  With xlWSheet

    Set xlrnLast = .Range("A65536").End(xlUp)

  End With

 

  'Skriva de valda raderna till tabellen i arbetsbladet.

  For i = 1 To inNumberOfRows

    For j = 0 To 1 'Här är två kolumner involverade.

      With Me.MSHFlexGrid1

        xlrnLast.Offset(i, j).Value = .TextMatrix((inRow - 1) + i, j)

      End With

    Next j

  Next i

 

  xlWBook.Save

 

  'Återställa statusen för kalkylmotorn och visar arbetsboken

  With xlApp

    .Calculation = xlCalc

    .Visible = True

    .UserControl = True

  End With

 

  'Frigöra objekten från minnet.

  Set xlrnField = Nothing

  Set xlrnLast = Nothing

  Set xlWSheet = Nothing

  Set xlWBook = Nothing

  Set xlCalc = Nothing

  Set xlApp = Nothing

  Set rst = Nothing

End Sub