Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten in binar Datei umwandeln und wieder reinschr

Daten in binar Datei umwandeln und wieder reinschr
27.01.2016 20:17:44
Peter
Hallo Excel Profis.
Vielleicht kann mir jemand helfen. In den zwei Makros steckt ein Wurm.
Das erste (

Sub SpeicherMirs())soll die Daten aus Range("A1:A10,B5,C1:C10")
in eine binar Datei speichern und das zweite (

Sub SchreibEsWiederRein())
in die gleiche Zellen wieder reinschreiben.Es scheint nicht so richtig zu
funktionieren. Weis jemand warum?
Bitte um Antwort
Peter

Sub SpeicherMirs()
Dim rngS As Range
Dim strPathAndFileName As String
Dim vntArray As Variant
Dim lngFN As Long
strPathAndFileName = "C:\Users\peter\Desktop\Microsoft Excel-Arbeitsblatt (neu)"
Set rngS = ActiveWorkbook.Worksheets("Tabelle1").Range("A1:A10,B5,C1:C10")
vntArray = rngS.Value
'File falls schon vorhanden entfernen
If Len(Dir(strPathAndFileName)) > 2 Then
Kill strPathAndFileName
End If
'File schreiben
lngFN = FreeFile
Open strPathAndFileName For Binary As lngFN
Put lngFN, 1, vntArray
Close lngFN
End Sub

------------------------------------------------------------------------------
Sub SchreibEsWiederRein()
Dim rngS As Range
Dim strPathAndFileName As String
Dim vntArray As Variant
Dim lngFN As Long
strPathAndFileName = "C:\Users\peter\Desktop\Microsoft Excel-Arbeitsblatt (neu)"
Set rngS = ActiveWorkbook.Worksheets("Tabelle1").Range("A1:A10,B5,C1:C10")
'File lesen
lngFN = FreeFile
Open strPathAndFileName For Binary As lngFN
vntArray = Space(LOF(lngFN))
Get lngFN, 1, vntArray
Close lngFN
'File ins Sheet schreiben
rngS.Value = vntArray
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
array MUSS rechteckig sein
28.01.2016 21:41:09
Michael
Hi Peter,
ich habe mal ne Tabelle mit ="S"&SPALTE()&"Z"&ZEILE() erzeugt, das Makro
Sub SpeicherMirs()
Dim rngS As Range
Dim strPathAndFileName As String
Dim vntArray As Variant
Dim lngFN As Long
Dim z&, s&
'strPathAndFileName = "C:\Users\peter\Desktop\Microsoft Excel-Arbeitsblatt (neu)"
Set rngS = ActiveWorkbook.Worksheets("Tabelle1").Range("A1:A10,B5,C1:C10")
vntArray = rngS.Value
For z = LBound(vntArray, 1) To UBound(vntArray, 1)
For s = LBound(vntArray, 2) To UBound(vntArray, 2)
Debug.Print "z: " & z & " s: " & s & " wert: " & vntArray(z, s)
Next
Next
End Sub

gestartet, und die Ausgabe sieht so aus:
z: 1 s: 1 wert: S1Z1
z: 2 s: 1 wert: S1Z2
z: 3 s: 1 wert: S1Z3
z: 4 s: 1 wert: S1Z4
z: 5 s: 1 wert: S1Z5
z: 6 s: 1 wert: S1Z6
z: 7 s: 1 wert: S1Z7
z: 8 s: 1 wert: S1Z8
z: 9 s: 1 wert: S1Z9
z: 10 s: 1 wert: S1Z10
D.h., es wird nur A1:A10 ins Array übernommen!
Speicher entweder A1:C10, dann könnte es auf Anhieb klappen, oder definiere eine eigene Speicherstruktur, z.B. so:
Set rngS = ActiveWorkbook.Worksheets("Tabelle1").Range("A1:A10,B5,C1:C10")
vntArray = rngS(1).Resize(rngS.Count)
i = 1
For Each c In rngS
vntArray(i, 1) = c
i = i + 1
Next
For z = LBound(vntArray, 1) To UBound(vntArray, 1)
For s = LBound(vntArray, 2) To UBound(vntArray, 2)
Debug.Print "z: " & z & " s: " & s & " wert: " & vntArray(z, s)
Next
Next

Dabei kommt das heraus:
z: 1 s: 1 wert: S1Z1
z: 2 s: 1 wert: S1Z2
z: 3 s: 1 wert: S1Z3
z: 4 s: 1 wert: S1Z4
z: 5 s: 1 wert: S1Z5
z: 6 s: 1 wert: S1Z6
z: 7 s: 1 wert: S1Z7
z: 8 s: 1 wert: S1Z8
z: 9 s: 1 wert: S1Z9
z: 10 s: 1 wert: S1Z10
z: 11 s: 1 wert: S2Z5
z: 12 s: 1 wert: S3Z1
z: 13 s: 1 wert: S3Z2
z: 14 s: 1 wert: S3Z3
z: 15 s: 1 wert: S3Z4
z: 16 s: 1 wert: S3Z5
z: 17 s: 1 wert: S3Z6
z: 18 s: 1 wert: S3Z7
z: 19 s: 1 wert: S3Z8
z: 20 s: 1 wert: S3Z9
z: 21 s: 1 wert: S3Z10
Worum geht es eigentlich? A1:C10 benötigt sicher nicht mehr als 4096 Bytes, und die pfeift es einem doch sowieso weg, pro Datei auf der Platte - ob man sie benutzt oder nicht.
Schöne Grüße,
Michael

Anzeige
AW: array MUSS rechteckig sein
28.01.2016 22:17:27
Peter
Vielen Dank Michael. Ich dachte, ich bekomme schon keine Antwort. Noch mal Danke schön. Ich habe eine Bitte an dich, würdest mir die zwei Code so anpassen das ich die direkt anwenden könte? Leider bin ich nicht so fit.
Peter

AW: array MUSS rechteckig sein
28.01.2016 23:02:51
Peter
Was ich noch dazu sagen möchte ist, die von mir verwendeten Code funktionieren eigentlich gut. Das Problem ist, wenn ich die wieder einlese werden alle Formeln in der Tabelle gelöscht, und das ist ein ungewünschtes Efeckt, weil es macht die Tabelle unbrauchbar. Wenn Du eine Lösung hättest werde ich dir sehr dankbar.

jetzt bin ich aber verwirrt
28.01.2016 23:26:02
Michael
Hi Peter,
was heißt "eigentlich ganz gut"? Offensichtlich werden doch nur 10 von 21 Werten gespeichert?!
Am besten machst Du mal ne Beispieldatei, wo denn Formeln sind und wo Werte...
Frage: MUSS es ein "binär" gespeichertes Array sein?
Schöne Grüße,
Michael

Anzeige
AW: jetzt bin ich aber verwirrt
29.01.2016 14:49:02
Peter
Hallo Michael.Ich konnte nicht antworten weil gestern war schon zu spät und heute habe Frühschicht gehabt.Ich möchte mich bei Dir, für deine Mühe herzlich bedanken aber inzwischen hat sich die Sache erledigt. Ich hoffe das in der Zukunft wieder auf euer Hilfe zählen kann. Noch mall Danke und bis nächste Mall.
Mfg.Peter

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige