Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
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

Import/Export Daten

Import/Export Daten
15.11.2021 14:39:49
Peer
Hallo zusammen.
Ich steh wieder mal vor einem Problem.
Ich habe in meinem (großem) Projekt eine Möglichkeit schaffen wollen, die alle Daten in einer UF in eine extern Datei speichern soll und bei Bedarf wieder zurückschreibt.
Dabei habe ich im Web eine Lösung gefunden, die ich auf meine Bedürfnissen anpassen wollte. In der UF sind Steuerelemente jeglicher Art.
Mit meinen Anfänger-VBA-Wissen konnte ich bis jetzt keine Lösung finden.
Der Export scheint zu funktionieren, also keine Fehlermeldung und die externe txt-Datei hat die Daten auch.
Aber beim Import bekomme ich die Fehlermeldung Laufzeitfehler 1004 - NumberFormat ...Range-Objektes ... und der Debugger bleibt bei

If strFile  CStr(False) Then
ff = FreeFile
Open strFile For Input As #ff
Do While Not EOF(ff)
Line Input #ff, strTmp
With Range(Split(strTmp, ";")(0))
.Formula = Split(strTmp, ";")(1)
 .NumberFormat = Split(strTmp, ";")(2)
End With
Loop
Close #ff
End If
hängen.
Ich kann den Fehler nicht erkennen.
Vielleicht kann mir jemand dazu helfen?
Die Bespiel-Datei ist zu groß, um sie hochzuladen. Und wenn ich sie reduziere, funktionieren andere Teile nicht mehr.
Deshalb schicke ich den Code und die exportierte Datei.
Export

Option Explicit
' Modul-Typ: Allgemeines Modul
' von Josef Ehrensberger
Sub exportParameter()
Dim vntFile As Variant
Dim rng As Range, rngC As Range
Dim ff As Integer
On Error Resume Next
Application.ScreenUpdating = False
Sheets("Parameter").Unprotect
Set rngC = Sheets("Parameter").UsedRange.SpecialCells(xlCellTypeConstants)
'oder
'Set rngC = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
'oder
'Set rngC = Range("A1:A5,C5:C10,H3:I17")
On Error GoTo 0
If Not rngC Is Nothing Then
vntFile = Application.GetSaveAsFilename("Parameter.txt", "Text Files (*.txt), *.txt")
If vntFile  False Then
ff = FreeFile
Open vntFile For Output As #ff
For Each rng In rngC.Cells
Print #ff, rng.Address(0, 0) & ";" & rng.Formula & ";" & rng.NumberFormat
Next
Close #ff
End If
End If
Set rng = Nothing
Set rngC = Nothing
Application.ScreenUpdating = True
Sheets("Parameter").Protect
End Sub
Import

Sub importParameter()
Dim strFile As String, strTmp As String
Dim ff As Integer
strFile = Application.GetOpenFilename("Text Dateien (*.txt),*.txt")
Sheets("Parameter").Unprotect
If strFile  CStr(False) Then
ff = FreeFile
Open strFile For Input As #ff
Do While Not EOF(ff)
Line Input #ff, strTmp
With Range(Split(strTmp, ";")(0))
.Formula = Split(strTmp, ";")(1)
.NumberFormat = Split(strTmp, ";")(2)
End With
Loop
Close #ff
End If
Sheets("Parameter").Protect
Unload frm_Parameter
frm_Parameter.Show
End Sub
Vielen Dank im Voraus
https://www.herber.de/bbs/user/149151.txt
Peer

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Import/Export Daten
15.11.2021 14:59:20
Rudi
Hallo,
kann ich nicht nachvollziehen.
Läuft mit deinem Beispiel in einem frischen Blatt.
Gruß
Rudi
AW: Import/Export Daten
15.11.2021 16:30:21
Peer
Vielen Dank, Rudi, für deine schnelle Antwort.
Ich bin auch ratlos, aber vielleicht gibt es jemanden, der selbes Problem hat(te) und eine Lösung gefunden hat.
Mit besten Gruß
Peer
AW: Import/Export Daten
15.11.2021 17:59:52
ralf_b
vielleicht liegts einfach daran das du ein Numberformat hast ,welches schon ein Semikolon beinhaltet. Das könnte beim Split dann zu Verwirrung führen.
Versuch mal ein anderes Trennzeichen. z.b. "|"
AW: Import/Export Daten
15.11.2021 19:17:44
Peer
Hallo ralf_b.
Gute Idee.
Da habe ich nicht daran gedacht.
Ich habe darauf alles mal kontrolliert, aber kein Wert hat ein ";".
Trotzdem bin ich deinem Rat gefolgt und habe ";" durch "|" ersetzt, aber kein Erfolg.
Wenn ich .NumberFormat auskommentiere, meckert der Debugger über .Formula
Ich habe nun mal mein Projekt auf das mögliche Minimum reduziert und ein paar Blätter entfernt, von denen ich glaubt, diese brauche ich dafür nicht.
Beim Export klappt alles, aber beim Import schreibt das Modul die Daten zwar in die UF zurück, aber nicht in das ursprüngliche Blatt. Und deshalb denke ich, das beim ursprünglichen Blatt das Problem liegt.
Wie kann ich den Import Sub dahingehend schreiben, dass die Daten wieder in das ursprüngliche Blatt zurückgeschrieben wird, nicht wie jetzt, scheinbar in das letzte Sheet von hinten. Dort schreibt er die Daten nämlich rein. Sogar ohne Fehlermeldung. Hier ist der Schutz der Arbeitsmappe eingestellt. Das ist auch der Grund der Fehlermeldung. Entferne ich den Schutz und lasse das Import Sub laufen, schreibt alles korrekt in die UF, aber halt in das falsche Sheet.
Also wie kann ich verhindern, das die Daten ins falsche Sheet zurückgeschrieben werden?
LG
Peer
Anzeige
AW: Import/Export Daten
15.11.2021 19:30:24
peterk
Hallo
Gibt mal den vollen Namen ein

With Sheets("Parameter").Range(Split(strTmp, ";")(0))
.Formula = Split(strTmp, ";")(1)
.NumberFormat = Split(strTmp, ";")(2)
End With
Peter
AW: Import/Export Daten
15.11.2021 19:46:15
Peer
Hallo Peter.
Habe ich, aber Fehlermeldung bleibt.
Ich versuche gerade, mein Projekt soweit zu reduzieren, das man es hochladen kann und trotzdem noch etwas nachvollziehbar ist.
LG
Peer
AW: Import/Export Daten
15.11.2021 20:00:34
Peer
Nun habe ich die Beispieldatei so weiter gerupft, damit sie hochgeladen werden kann.
Besagtes UF ist im Ribbon unter "Parameter" klickbar.
https://www.herber.de/bbs/user/149159.xlsm
LG
Peer
Anzeige
AW: Import/Export Daten
15.11.2021 21:14:36
peterk
Hallo
Das Sheet Parameter hat ein Change Event in dem das Blatt wieder geschützt wird. Nachdem Du den ersten Wert in C1 schreibst wird das Blatt wieder geschützt und nichts geht mehr.
Daher in der Sub ImportParameter

Application.EnableEvents = False
Sheets("Parameter").Unprotect
If strFile  CStr(False) Then
Application.EnableEvents = True
Sheets("Parameter").Protect
Unload frm_Parameter
end sub
Peter
AW: Import/Export Daten
15.11.2021 22:24:39
Peer
Guten Abend, Peter.
Das war es. Danke für deinen Tipp.
Aber wie kann ich sonst in dieser Zelle das aktuelle Datum bei Veränderung der Inhalte des Blattes speichern?
Gruß
Peer
Anzeige
AW: Import/Export Daten
16.11.2021 08:03:40
peterk
Hallo
Du schreibst das Datum ja nur wenn sich in P2 etwas ändert. Dies passiert aber nur beim Import (wenn Du in Deiner UserForm auf OK drückst, wird P2 nicht geändert und somit auch das Datum nicht, aber Du hast das selbe Problem wie beim Import. Du schreibst C15 und das Batt ist wieder geschützt). Mein Ansatz: Verwirf das Change Event und schreib das Datum ebenfalls über Makro wo Du es benötigst.
Peter
AW: Import/Export Daten
16.11.2021 11:27:27
Peer
Hallo Peter.
Gestern habe ich nach meiner letzten gestellten Frage im Bett gelegen und darüber nachgedacht, wie banal meine Frage doch ist.
Trotzdem danke ich dafür, daß du doch darauf geantwortet hast.
Natürlich könnte man es auch in das Sub des Imports schreiben.
Nochmal besten Dank für deine Hilfe.
Peer
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige