|
Tipp 0303
|
MSHFlexGrid-Daten in Excel-Tabelle einfügen
|
|
|
Autor/Einsender: Datum: |
|
Angie 27.05.2006 (Update) |
|
Entwicklungsumgebung: |
|
VB 5 |
|
|
Dieses Beispiel zeigt eine der verschiedenen Möglichkeiten, den Inhalt eines MSHFlexGrid-Steuerelements in einer Excel-Tabelle
einzufügen. Hier werden die Daten zunächst in einem Datenfeld zwischengespeichert, die Größe des Bereichs in Excel entsprechend der Anzahl
der Zeilen und Spalten im Grid angepasst und dann eingefügt. Anschließend werden in der Excel-Tabelle noch ein paar Formatierungen vorgenommen,
hier sind der Fantasie fast (!) keine Grenzen gesetzt.
|
Anmerkung: Die Objektvariable für die neu erstellte Excel-Arbeitsmappe wurde hier mit dem Schlüsselwort WithEvents deklariert und das
BeforeClose-Ereignis des Workbook-Objekts hinzugefügt. Das BeforeClose-Ereignis wurde so ergänzt, dass der Anwender die
Arbeitsmappe nur über die VB-Anwendung schließen kann, also nicht in Excel selbst. Der Code im Download-Beispiel ist ausführlich kommentiert.
|
|
|
Option Explicit
Private WithEvents mevt_Workbook As Excel.Workbook
Private m_objXLApp As Excel.Application
Private Sub cmdGridToXL_Click()
Dim objXLWks As Excel.Worksheet
Dim varData() As Variant
Dim nRows As Long
Dim nCols As Long
Dim r As Long
Dim c As Long
Me.cmdGridToXL.Enabled = False
With MSHFlexGrid1
nRows = .Rows - 1
nCols = .Cols - 1
ReDim varData(nRows, nCols)
For r = 0 To nRows
For c = 0 To nCols
varData(r, c) = .TextMatrix(r, c)
Next c
Next r
End With
Set m_objXLApp = CreateObject("Excel.Application")
Set mevt_Workbook = m_objXLApp.Workbooks.Add(-4167)
Set objXLWks = mevt_Workbook.Worksheets(1)
objXLWks.Name = "MSHFlexGrid-Daten"
nRows = nRows + 1
nCols = nCols + 1
objXLWks.Range("A1").Resize(nRows, nCols).Value = varData
Erase varData
With objXLWks.Range( _
objXLWks.Cells(1, 2), objXLWks.Cells(1, nCols))
.Font.Bold = True
.Interior.ColorIndex = 36
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.EntireRow.RowHeight = 20
End With
With objXLWks.Range( _
objXLWks.Cells(2, 1), objXLWks.Cells(nRows, 1))
.Font.Bold = True
.Interior.ColorIndex = 35
End With
With objXLWks.Range(objXLWks.Cells(1, 1), _
objXLWks.Cells(nRows, nCols)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Set objXLWks = Nothing
m_objXLApp.Visible = True
End Sub
Private Sub mevt_Workbook_BeforeClose(Cancel As Boolean)
Cancel = True
MsgBox "Sorry... die Arbeitsmappe " & mevt_Workbook.Name & _
vbLf & "' kann nur über den Button <Beenden> im " & _
vbLf & "VB-Programm geschlossen werden.", _
vbOKOnly + vbInformation + vbSystemModal, _
Title:=Me.Caption
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, _
UnloadMode As Integer)
On Error Resume Next
m_objXLApp.EnableEvents = False
mevt_Workbook.Close Savechanges:=False
m_objXLApp.EnableEvents = True
Set mevt_Workbook = Nothing
m_objXLApp.Quit
Set m_objXLApp = Nothing
End Sub
|
|
|
|
|
|
Um diesen Tipp ausführen zu können, muss das Microsoft Hierarchical FlexGrid Control als Komponente und die
Microsoft Excel x.0 Object Library in das VB-/VBA-Projekt eingebunden werden.
|
|
Windows-Version |
95 |
|
|
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
VB-Version |
VBA 5 |
|
|
VBA 6 |
|
|
VB 4/16 |
|
|
VB 4/32 |
|
|
VB 5 |
|
|
VB 6 |
|
|
|
|
Download (5,3 kB)
|
Downloads bisher: [ 2438 ]
|
|
|