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.ConnectionPrivate rst As ADODB.Recordset
'...
Private Sub Dump_Records_Workbook()
'© 2004 Alla rättigheter XL-Dennis
Dim xlApp As Excel.ApplicationDim 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.ApplicationDim 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