|
Tipp 0420
|
Daten speichern/lesen (Binär-Datei)
|
|
|
Autor/Einsender: Datum: |
|
R. Müller 22.10.2004 |
|
Entwicklungsumgebung: |
|
Excel 2000 |
|
|
Dieser Tipp zeigt eine, auch für Anfänger, schnell nachvollziehbare Methode, wie
eine Variable vom Typ Variant in einer mit Open ... For Binary ...
geöffneten Datei gespeichert und auch wieder ausgelesen werden kann. Diese Möglichkeit ist
für alle VB-Versionen anwendbar.
|
Eine kaum noch bekannte Besonderheit des Datentyps Variant ist, dass er alle andere
Variablentypen, also auch ein- oder mehrdimensionale (Ausnahme benutzerdefinierte) Datenfelder,
enthalten kann.
|
Mit dieser Methode ist es möglich, schnell den Inhalt ganzer Tabellenblätter zu speichern,
allerdings keine Formatierungen außer dem Datentyp, und wieder einzulesen.
|
|
Tabellenblatt-Daten aus binärer Datei lesen |
|
|
Public Sub ReadDataBinary()
Dim strFileName As String
Dim FN As Integer
Dim wksDest As Worksheet
Dim rngDest As Range
Dim avarArray As Variant
Dim n As Long
strFileName = ThisWorkbook.Path & "\Test.dat"
If Len(Dir(strFileName)) <= 2 Then Exit Sub
FN = FreeFile()
Open strFileName For Binary As #FN
avarArray = Space(LOF(FN))
Get #FN, 1, avarArray
Close #FN
Set wksDest = ThisWorkbook.Worksheets(2)
wksDest.Cells.Clear
Set rngDest = wksDest.Range(wksDest.Cells(1, 1), _
wksDest.Cells(UBound(avarArray, 1), UBound(avarArray, 2)))
rngDest.Value = avarArray
Set rngDest = Nothing
Set wksDest = Nothing
For n = 1 To UBound(avarArray, 1)
avarArray(n, 2) = "XXX " & avarArray(n, 2)
Next
Set wksDest = ThisWorkbook.Worksheets(3)
wksDest.Cells.Clear
Set rngDest = wksDest.Range(wksDest.Cells(1, 1), _
wksDest.Cells(UBound(avarArray, 1), UBound(avarArray, 2)))
rngDest.Value = avarArray
Set rngDest = Nothing
Set wksDest = Nothing
End Sub
|
|
|
Tabellenblatt-Daten in binärer Datei speichern |
|
|
Public Sub SaveDataBinary()
Dim wksSrc As Worksheet
Dim rngSrc As Range
Dim avarArray As Variant
Dim strFileName As String
Dim FN As Integer
strFileName = ThisWorkbook.Path & "\Test.dat"
Set wksSrc = ThisWorkbook.Worksheets(1)
avarArray = wksSrc.UsedRange.Value
Set wksSrc = Nothing
If Len(Dir(strFileName)) > 2 Then
Kill strFileName
End If
FN = FreeFile()
Open strFileName For Binary As #FN
Put #FN, 1, avarArray
Close #FN
End Sub
|
|
|
|
Die einfachste aber auch langsamste Methode Zellen zu bearbeiten besteht darin, auf jede
Zelle einzeln zuzugreifen, d. h., sollte eine Bearbeitung der Daten notwendig sein,
so sollten diese Änderungen im Datenfeld vorgenommen werden, bevor die Daten ins
Tabellenblatt geschrieben werden.
|
|
|
|
Windows-Version |
95 |
|
|
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
Excel-Version |
95 |
|
|
97 |
|
|
2000 |
|
|
2002
(XP) |
|
|
2003 |
|
|
2007 |
|
|
2010 |
|
|
|
|
Download (16 kB)
|
Downloads bisher: [ 1247 ]
|
|
|