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
 
Anmerkung
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.
Weitere Links zum Thema
Daten in Zellen schreiben
Daten speichern/lesen (Text-Datei)
Datenfeld (Variant) in Binär-Datei speichern

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: [ 1140 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 29. Mai 2011