Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
532to536
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
532to536
532to536
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

OPEN - GET - PUT - CLOSE, ich blick's nicht!

OPEN - GET - PUT - CLOSE, ich blick's nicht!
14.12.2004 20:53:31
Edwin
Hallo,
ich brauche mal wieder Nachhilfeunterricht!!!!
Ich habe mir die Herber-CD und auch die VBA-Hilfe angeschaut, aber ich werde nicht schlau. Somit mal wieder eine Frage für die Grundstufe.
Ich habe zwei Dateien.
"Formular.xls" und "Daten.xls"
In "Formular.xls" sollen Daten aus "Daten.xls" eingelesen werden.
Damit nach den Datensätzen gesucht werden kann, habe ich Primärschlüssel vergeben.
Der Primärschlüssel steht in Spalte1 in "Daten.xls".
Wenn der Primärschlüssel in "Daten.xls" gefunden wurde, soll z.B. Spalte2 und Spalte3 in "Formular.xls" gelesen werden.
Wenn Ihr mir das mal mit OPEN - GET - CLOSE nähers erklären könnt, dann komme ich bei PUT vielleicht selber drauf.
Vielen Dank für Eure Geduld und Eure Hilfe.
Gruß
Edwin
AW: OPEN - GET - PUT - CLOSE, ich blick's nicht!
Volker
Hallo Edwin,
sorry, aber die Frage ist den meisten wohl zu allgemein gestellt.
Kannst Du mal erklären, was Du wann von wo nach wo kopieren willst?
Gruß
Volker
AW: OPEN - GET - PUT - CLOSE, ich blick's nicht!
15.12.2004 09:37:23
Edwin
Hallo Volker,
wenn ich wie in der Hilfe beschrieben meinen Code eingebe, dann stelle ich mir folgende Fragen:
OPEN "Daten" FOR RANDOM AS #1
Woher soll die Anweisung-Open wissen, in welchem Verzeichnis sich die Datei "Daten" befindet und um welche Dateiart (.xls) es sich handelt?
Get [#]Dateinummer, [Satznummer], Variablennummer
Dateinummer ist mir klar, die habe ich ja bei OPEN vergeben. Satznummer, die werde ich vermutlich erst mal anhand von meinem Primärschlüssel suchen müssen. Variablennummer, klar irgendwo muss die Information ja gespeichert werden.
Aber woher will GET wissen, welchen Teil des Datensatzes ich auslesen möchte?
Konkretes Beispiel:
"Daten.xls" enthält die Umsätze meiner Mitarbeiter. Der Primärschlüssel zu einem Datensatz sei z.B. 14. Ich möchte jetzt von 14 den Umsatz auslesen. In 14 steht ja auch noch der Name des Mitarbeiters usw., woher weiß GET, dass ich nur den Umsatz will?
Ich habe da wohl ein kleines Logikproblem? Ich hoffe, dass Ihr mir das nachseht, dass ich mal wieder voll auf dem Schlauch stehe.
Gruß
Edwin
Anzeige
AW: OPEN - GET - PUT - CLOSE, ich blick's nicht!
Volker
Sorry,
hab heut morgen nicht mitgekriegt, daß du geantwortet hast.
Ich blick immer noch nicht, was Du vorhast.
Mein Vorschlag für dich als Anfänger:
Öffne die eine Datei und zeichne mit dem Makrorekorder mal auf, wie Du die andere öffnest.
Vielleicht siehst Du dann schon etwas klaren.
Gruß
Volker
AW: OPEN - GET - PUT - CLOSE, ich blick's nicht!
15.12.2004 17:23:11
Edwin
Hallo Volker,
vielen Dank für Deine Geduld. Ich habe jetzt einen Code gefunden (siehe unten), der geht schon in die Richtung was ich vor habe. Den Rest bekomme ich bestimmt noch hin.
Aber beim dem Code kommt dann allerdings immer eine Aufforderung zum Konvertieren. Irgendwo muss der Code in .txt speichern.
Wo muss ich den Code abändern, damit die Daten richtig in .xls geschrieben werden.
Vielen Dank,
und ich finds ganz super, dass Anfänger in diesem Forum auch eine Antwort bekommen.
Gruß
Edwin

Sub ReadFromTxtFile()
'Writes cell contents to .txt file
Const strSTARTCELL = "A1"                 'first cell to write data
Const strDATAFILE = "C:\Daten\EXCEL\Test-Daten.xls"    'path and file name of .txt-File
Dim strActValue As String                 'each line of text file
Dim intFileNo As Integer                  'file no for "open" command
Dim lngLineNo As Integer                  'line number starting with 0
lngLineNo = 0                             'init
intFileNo = FreeFile(0)                   'get free file no
Open strDATAFILE For Input Access Read As intFileNo 'open .txt file
Do While Not EOF(intFileNo)
Line Input #intFileNo, strActValue      'read each line of .txt file
Range(strSTARTCELL).Offset(lngLineNo) = strActValue 'write value to cell
lngLineNo = lngLineNo + 1               'increment table row
Loop
Close intFileNo                           'close .txt file
End Sub


Sub WriteToTxtFile()
'Reads .txt file and writes each line to a cell
Const strSTARTCELL = "A1:A10"             'range in table with data
Const strDATAFILE = "C:\Daten\EXCEL\Test-Daten.xls"    'path and file name of .txt-File
Dim varActValue As Variant                'each cell content
Dim intFileNo As Integer                  'file no for "open" command
intFileNo = FreeFile(0)                   'get free file no
Open strDATAFILE For Output Access Write As intFileNo 'open .txt file
For Each varActValue In Range(strSTARTCELL)
Print #intFileNo, CStr(varActValue)        'write each cell content to file as a line
Next
Close intFileNo                           'close .txt file
End Sub

Anzeige
AW: OPEN - GET - PUT - CLOSE, ich blick's nicht!
Volker
Hallo Edwin,
vergiss die Hilfe, du schaust an der falschen Stelle. Was Du da gefunden hast, ist irgendwas mit zeilenweisem Zugriff, das kann man m.E. gar nicht auf ein Excel-Mappe anwenden.
Was du möchtest bzw. tun mußt ist, aus Datei1 heraus Datei2 zu öffnen, um dann auf bestimmte Zellen zugreifen.
Warum zeichnest Du den Vorgang denn nicht mal mit dem Makrorekorder auf?
Das Öffnen sieht im VBA-Editor dann etwa so aus:

Sub Makro3()
Workbooks.Open Filename:="D:\_AAA\Tabellen\Makrosammlung\Mappe2.xls"
End Sub

Was Du weiter vorhast, hast Du immer noch nicht verraten.
Aber wenn Du zwischen den Mappen was hin und her kopieren willst,
geh mal hin und zeichne mal ein paar Aktionen mit den Rekorder auf:
-beide Mappen wechselweise aktivieren
-Zellen/Zeilen/Spalten markieren, kopieren, einfügen (auch in der anderen Mappe)
Vielleicht siehst Du dann schon, was Du anpassen mußt und welche Befehle Du brauchst.
Ganz wichtig ist, dass Du mit F8 die Befehle eine Makros einzeln abarbeiten kannst.
Dann sieht man genau, welcher Befehl was macht.
Aber keine Sorge ;-) :Ich laß die Frage offen und bleib am Ball.
Gruß
Volker
Anzeige
AW: OPEN - GET - PUT - CLOSE, ich blick's nicht!
15.12.2004 23:15:42
Edwin
Hallo Volker,
ich hatte Deinen Tip mit der Aufzeichnung schon ausprobiert. Das wäre auch OK, wenn nur ich mit der Anwendung arbeiten würde.
Aber ich gebe die Anwendung an Kollegen weiter und hier habe ich halt schon ganz tolle Sachen erlebt. Einer hatte mal Formeln rausgelöscht und ich kann dann nach dem Fehler suchen.
Deshalb will ich in der neuen Anwendung soweit wie möglich alles mit Passwort schützen. Von daher gefällt mir der Code von vorhin ganz gut, weil die Daten-Datei gar nicht in Erscheinung kommt. Die einzige Macke an dem Code ist halt, dass der Textkonvertierungs-Assistent irgendwelche Trennzeichen erkannt hat.
Kopier mal den obigen Code und lass ihn laufen. Wenn Du das Problem mit der Textkonvertierung beheben kannst, dann ist mir schon geholfen.
Nochmal auf Deine Frage, was ich eigentlich will: Ich will eine Eingabe-Maske (egal Dialog oder über Zellen im Sheet) in die der Anwender nur zulässige Daten eingeben kann, die dann in der Daten-Datei gespeichert werden.
Über eine Antwort würde ich mich wieder sehr freuen.
Gruß
Edwin
Anzeige
AW: OPEN - GET - PUT - CLOSE, ich blick's nicht!
Edwin
Sapperlott, hab den Haken vergessen, dass die Frage noch offen ist.
AW: OPEN - GET - PUT - CLOSE, ich blick's nicht!
Volker
Hallo Edwin,
gehst Du eigentlich nie schlafen? ;-)
Bevor ich irgendwelchen Code teste, will ich mal sehen, ob ich Dich richtig verstanden habe.
Die Kollegen sollen in eine Excel-Mappe Daten eingeben können, aber nur solche Daten, die in einer anderen Datei hinterlegt sind.
Und Du willst verhindern, dass gewisse Zellen mit irgendwelchen Berechnungen von Unkundigen vermurxt werden.
Wenn das richtig ist hab ich ein paar Fragen:
Ist das file mit "gültigen" Werten überhaupt ein Excel-file oder eine txt-Datei?
Sind die gültigen Daten fest oder veränderlich.
Wär doch gelacht, wenn wir das vor Weihnachten nicht noch auf die Reihe kriegen.
Gruß
Volker
Anzeige
AW: OPEN - GET - PUT - CLOSE, ich blick's nicht!
16.12.2004 15:18:12
Edwin
Hallo Volker,
natürlich geh ich irgendwann schlafen, aber
wenn die Frau aus dem Haus ist, dann tanzen die Mäuse - ne das war anders
wenn die Katze aus dem Haus ist, dann wird geexcelt - ne das war ganz anders
wenn ...
Halleluya, Volker
bitte bitte nicht nochmal erklären lassen.
Ich will nur Daten in einer Maske eingeben(alles wird in Excel gemacht), die dann in der Daten-Datei (auch Excel) gespeichert werden. Denk einfach an eine stinkpoblige Adressverwaltung. Wie die Maske aussieht, welche Gültigkeiten geprüft werden, welche Daten eingegeben werden, ist im Moment völlig zweitrangig. Es soll im Moment nur LESEN und SCHREIBEN funktionieren.
Muss ich den Code anstatt mit WRITE und READ doch mit PUT und GET schreiben. Fällt dann das Konvertierungsproblem weg?
Ich habe schon versucht den Code entsprechend abzuändern, aber da bin ich halt wieder zusehr Laie, so dass das nicht durchläuft.
Gruß
Edwin
Anzeige
AW: OPEN - GET - PUT - CLOSE, ich blick's nicht!
Volker
Hallo Edwin,
sorry, aber Du bist dem typischen Anfängerirrtum aufgesessen, dass man hier nur ein paar vage Andeutungen zu posten braucht, und schon bekommt man eine mundgerechte Lösung für ein mehr oder weniger komplexes Problem.
Ich bin kein Profi und die meisten anderen hier auch nicht. Bei vielen Fragen muß man erstmal selber knobeln, bevor man eine Antwort geben kann.
Insbesondere haben wahrscheinlich die wenigsten die komplette VBA-Syntax parat.
Das heißt, man schmeißt selber den Makrorekorder an und strickt das Ergebnis entsprechend um. Mit ein bisschen Erfahrung geht das oft.
Auf die Gefahr hin, mich zu wiederholen: Der Code, den Du in der Hilfe gefunden hast,
öffnet ein txt-file zum zeilenweisen Auslesen.
Das ganze Gedöns mit Freefile und random access und end of line kann man meines Wissens nicht auf eine Excel anwenden.
Und wenn Du eine Excel öffnest, gibt es eigentlich auch nichts zu konvertieren.
Also Nochmal: Workbooks.Open Filename:="D:\_AAA\willi.xls"
Mit dieser einfachen Zeile öffnest Du aus einem Makro heraus eine bestimmte Excel-Datei.
Und aus dieser Datei heraus kannst Du nach herzenslust Daten kopieren.
Vielleicht hab ich auch einfach nur ein Brett vor dem Kopf, und schnall nicht, was Du vorhast.
Sollte das so sein, dann könntest Du ja deine Frage vorsichtig neu stellen.
Vorsichtig, weil einige hier peinlich darauf achten, das eine Frage nicht mehrfach gestellt wird. Aber hier sieht es so aus, dass wir beide nicht zuzsammen kommen und andere die Frage aufgrund der vielen Beiträge wohl als abgehakt betrachten.
Ich bin auf jeden Fall neugierig, wie es weitergeht.
Gruß
Volker
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige