Anzeige
Archiv - Navigation
200to204
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
200to204
200to204
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hilfe zu einem Makro erforderlich!

Hilfe zu einem Makro erforderlich!
09.01.2003 14:25:51
Oliver S.
Hallöchen an alle!

Ich bin mit meinen bescheidenen Excelkenntnissen mal wieder am Ende. Ich habe ein Makro, das mir eine Datei mit der Endung .ALG öffnet und die Daten, die diese Datei enthält, in eine andere Exceltabelle hineinkopiert. Da habe ich schon mein erstes Problem. Am Ende des Makros soll die Datei, aus der die Daten stammen (.ALG) geschlossen werden. Nun kommt beim Beenden die Meldung, das eine große Menge Daten in der Zwischenablage vorhanden sind und damit auch die Abfrage ob diese dort verbleiben sollen oder gelöscht werden sollen. Wie kann man in das Makro einarbeiten, dass diese Abfrage immer mit NEIN bestätigt wird?

Das war die eine Frage. Die zweite Frage ist, kann man beim Starten des Makros eine Box öffnen lassen, in der man den Dateinamen von der .ALG Datei eingeben kann, von der die Daten eingelesen werden sollen, allerdings ohne die Dateiendung .ALG?

Ein Beispiel:
In dem Verzeichnis liegen Dateien deren Namen immer ein Datum wiederspiegeln. So z.B. 03010800.ALG, 03010700.ALG, 03010600.ALG. Möchte ich jetzt die Daten von der Datei 03010800.ALG auslesen und in meine Tabelle kopieren, wäre es schön, wenn eine Eingabebox öffnen würde, in der ich nur 030108, also nur das Datum (JJ/MM/TT) ohne die beiden Nullen und ohne .ALG, da diese Bezeichnung bei allen weiteren Dateien gleich ist, eingeben bräuchte und der Inhalt dieser Datei würde dann kopiert.

Ich habe mal mein bereits bestehendes Makro hier mit reingeschrieben.

Sub Textdatei_laden()
Workbooks.OpenText Filename:="R:\Hystorisches Alarmarchiv\03010800.ALG", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1))
Range("A1:K150").Select
Selection.Copy
ActiveWindow.WindowState = xlMinimized
Range("A2").Select
ActiveSheet.Paste
Range("A2").Select
Windows("03010800.ALG").Activate
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlNormal
ActiveWindow.Close
End Sub

Ich hoffe, dass mich jemend von Euch kleinen Helferlein unterstützen kann. Für die Mühe schon mal im voraus besten Dank,
Oliver

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Hilfe zu einem Makro erforderlich!
09.01.2003 14:47:02
Hajo_Zi
Hallo Oliver

zu1
Application.CutCopyMode = False 'Zwischenspeicher löschen


zu 2
warum nicht einfach eine Inputbox Du möchtest den Namen ja eingeben und nicht auswählen.


zu weiteren Punkten keine Aussage, der Dateityp Alg ist mir unbekannt.

Gruß hajo

Re: Hilfe zu einem Makro erforderlich!
09.01.2003 15:24:02
Oliver S.
Danke Dir Hajo für Deine Antwort.
Auch mit einer Inputbox wäre mir gedient. Hauptsache man kann das Datum, was ja auch gleich Dateiname ist, eingeben und die richtige Datei wird dann mittels Textkonvertierungsassistent geladen. Diesen Textkonvertierungsassistent arbeite ich mit meinem Makro ja schon ab.
Vielleicht hast Du ja eine Lösung mit einer Inputbox für mich.

MfG
Oliver

Anzeige
Re: Hilfe zu einem Makro erforderlich!
09.01.2003 15:27:42
Hajo_Zi
Hallo Oliver

schaue doch mal in die Hilfe oder hier im Forum in die Recherche.

Gruß hajo

Re: Hilfe zu einem Makro erforderlich!
09.01.2003 17:19:03
Oliver S.
Hallo nochmal,

habe schon mal angefangen in der Recherche zu suchen, so wie von Hajo angeregt. Bin bis jetzt aber leider noch nicht fündig geworden.
Habe da aber noch mal eine Frage zu meinem Problem. Besteht Die Möglichkeit, in mein Makro folgende Funktion einzufügen:

Makro öffnet das Fenster ÖFFNEN mit einem fest definierten Pfad, so das die Dateien, die eingelesen werden können sofort zur Auswahl anstehen.
Nach der Auswahl der Datei soll das Makro weiterabgearbeitet werden, so wie ich es in meinem Anfangsposting geschrieben habe, wobei die Zeile "Workbooks.OpenText Filename:="R:\Hystorisches Alarmarchiv\03010800.ALG", _" dann entfällt.

Geht so etwas? Ich hoffe, jemand kann mir darauf eine Antwort geben.

Bis dahin werde ich mal weiter die Recherche nach dem Vorschlag von Hajo, das über eine Inputbox zu lösen, durchsuchen,
Oliver

Anzeige
Re: Hilfe zu einem Makro erforderlich!
09.01.2003 17:22:17
Hajo_Zi
Hallo oliver

in Deinem letzten Beitrag wolltest Du den Dateinamen eingeben, jetzt wilst Du auswählen. Das sind zwei verschiedene Sachen.

dat = Application.GetOpenFilename("Textdateien (*.txt), *.txt")
' Auf die Variable dat wird der Dateinamen geschrieben


Gruß Hajo

Re: Hilfe zu einem Makro erforderlich!
09.01.2003 17:26:38
Oliver S.
Da hast Du wohl Recht Hajo, aber die zweite Idee ist mir beim Suchen in der Recherche gekommen, daher meine Frage. Das Ergebnis ist aber das selbe, da ich Einfluß auf die Datei habe, die ich einlesen will.

Werde Deinen Tip mal testen und mich dann wieder melden,
Oliver

Re: Hilfe zu einem Makro erforderlich!
09.01.2003 17:50:56
Oliver S.
Also, langsam kommen wir der Sache schon näher. Das Öffnen des Fensters funktioniert, das Einlesen der ausgewählten Datei ebenfalls. Aber das Schließen der Datei, aus der die Daten eingelesen werden sollen, klappt nicht.

Hier noch mal das Makro wie es jetzt aussieht:

Sub Textdatei_laden()
dat = Application.GetOpenFilename("Alle Dateien (*.*), *.*")
Workbooks.OpenText Filename:=dat, _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1))
Range("A1:K150").Select
Selection.Copy
ActiveWindow.WindowState = xlMinimized
Range("A2").Select
ActiveSheet.Paste
Range("A2").Select
Windows("03010800.ALG").Activate
Application.CutCopyMode = False
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlNormal
ActiveWindow.Close
End Sub


Der Fehler liegt in der Zeile Windows("03010800.ALG").Activate. Dort muß was anderes stehen als 03010800.ALG, aber was?
Und dann doch noch eine Frage zum Öffnen des Fensters. Kann man in die Anweisung "dat = Application.GetOpenFilename("Alle Dateien (*.*), *.*")" irgendwie einen Eintrag ergänzen, das immer der selbe Pfad in dem Fenster geöffnet wird? Also in meinem Fall R:\Hystorisches Alarmarchiv\.

Ich hoffe, das es das letzte mal für dieses Problem war, das ich Dich stören muß Hajo.

Danke schon mal,
Oliver


Anzeige
Re: Hilfe zu einem Makro noch offen
09.01.2003 17:54:19
Hajo_Zi
Hallo Oliver

ich mache jetzt Feiereabend.

Gruß Hajo

Re: Hilfe zu einem Makro noch offen
09.01.2003 17:56:20
Oliver S.
Schade für mich aber sicherlich schön für Dich Hajo.

Dennoch einen ruhigen und schönen wohlverdienten Feierabend,
Oliver

Re: Hilfe zu einem Makro noch offen
09.01.2003 20:07:46
Oliver S.
So, da bin ich wieder.

Das Problem, beim Schließen der Datei, aus der die Daten eingelesen werden sollen, habe ich hinbekomen.
Allerdings bin ich noch kein Stück weitergekommen bei dem Problem mit der Anweisung "dat = Application.GetOpenFilename("Alle Dateien (*.*), *.*")". Hier sollte irgendwie noch ein Eintrag ergänzt werden, der immer den selben Pfad im Öffnen-Fenster öffnet.

Vielleicht hat ja noch jemand einen Tip für mich, wie ich das bewerkstellige?

Bis denne,
Oliver

Anzeige
Re: Hilfe zu einem Makro erforderlich!
09.01.2003 20:41:08
Heinz A. Wankmüller
Hallo OLiver,

hier zwei Varianten, einmal mit Direktauswahl und dann mit Inputbox. Die Arbeitsmappe, in die du deine Textpassagen kopierst, habe ich hier mal mit "Meine Sammlung.xls" und die Tabelle mit "Sammlung" bezeichnet, die musst du natürlich anpassen:

Sub Textdatei_laden()
    Dim dat$, Verz$, ws As Worksheet
    Verz = "R:\Hystorisches Alarmarchiv\"
    ChDrive Left(Verz, 1)
    ChDir Verz
    Set ws = Workbooks("MeineSammlung.xls").Worksheets("Sammlung")
    dat = Application.GetOpenFilename("Textdateien (*.alg), *.alg")
    Workbooks.OpenText Filename:=dat, _
    Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=TrueTab:=True, Semicolon:=False, _
    Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
    Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
    Array(9, 1), Array(10, 1))
    Range("A1:K150").Copy ws.Range("A2")
    ActiveWindow.Close (False)
End Sub


Sub Textdatei_laden2()
    Dim dat$, Verz$, ws As Worksheet
    Verz = "R:\Hystorisches Alarmarchiv\"
    Set ws = Workbooks("MeineSammlung.xls").Worksheets("Sammlung")
    ChDrive Left(Verz, 1)
    ChDir Verz
    dat = InputBox("Bitte geben Sie den Dateinamen ein!", "Dateinamen eingeben")
    dat = dat & "00.alg"
    Workbooks.OpenText Filename:=dat, _
    Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=TrueTab:=True, Semicolon:=False, _
    Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
    Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
    Array(9, 1), Array(10, 1))
    Range("A1:K150").Copy ws.Range("A2")
    ActiveWindow.Close (False)
End Sub
     Code eingefügt mit Syntaxhighlighter 1.14

Gruß
Heinz

P.S.: Bist du dir sicher, dass man Hystorisch mit Y schreibt? ;-)

Anzeige
Re: Hilfe zu einem Makro noch offen
10.01.2003 07:58:08
Hajo_Zi
Hallo Oliver

Dim strVerzeichnis$
strVerzeichnis = "E:\eigene Dateien"
' Überprüfen ob Verzeichnis vorhanden
If Dir(strVerzeichnis, vbDirectory) <> "" Then ChDir strVerzeichnis Else Exit Sub
dat = Application.GetOpenFilename("Textdateien (*.txt), *.txt")
' Auf die Variable dat wird der Dateinamen geschrieben


Gruß Hajo

Re: Hilfe zu einem Makro erforderlich!
10.01.2003 08:32:33
Oliver S.
Hallo Heinz,
danke für Deine Lösungsvorschläge. Habe diese leider erst heute morgen entdeckt und gleich ausprobiert. Sowohl Vorschlag 1 als auch Vorschlag 2 sind super und genauso, wie ich es mir vorgestellt habe. Allerdings mit einer kleinen Einschränkung. Wie muß das Makro abgeändert werden, dass wenn die Taste "Abruch" gedrückt wird, das Makro beendet wird? Im Moment kommt beim Bedienen der Taste eine Laufzeitfehlermeldung, weil die Bedingungen, damit das Makro weiterabgearbeitet wird, nicht erfüllt sind.

Vielleicht hast Du ja dafür auch noch einen Lösungsvorschlag?

Danke noch mal,
Oliver

PS: Du hast mit recht, Historisch wird nicht mit y sondern mit i geschrieben. Werde das gleich ändern. ...schäääm

Anzeige
Re: Hilfe zu einem Makro noch offen
10.01.2003 08:46:08
Oliver S.
Moin Hajo,

danke Dir, das Du für mein Problem einen Lösungsweg gefunden hast.
Im Moment teste ich gerade mit den Varianten von Heinz, der gestern abend auch noch zwei Lösungsvorschlage für mich hatte.

Gruß,
Oliver

Re: Hilfe zu einem Makro erforderlich!
11.01.2003 07:30:02
Heinz A. Wankmüller
Hallo Oliver,
die Abbruch-Taste brauchst du nur bei der Version, nach der InputBox, also:
Sub Textdatei_laden2()
    Dim dat$, Verz$, ws As Worksheet
    Verz = "R:\Historisches Alarmarchiv\"
    Set ws = Workbooks("MeineSammlung.xls").Worksheets("Sammlung")
    ChDrive Left(Verz, 1)
    ChDir Verz
    dat = InputBox("Bitte geben Sie den Dateinamen ein!" & Chr(13) & _
        "Ohne die beiden Nullen und ohne Dateiendung!", "Dateinamen eingeben")
    If dat = Empty Then Exit Sub
    dat = dat & "00.alg"
    Workbooks.OpenText Filename:=dat, _
    Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=TrueTab:=True, Semicolon:=False, _
    Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
    Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
    Array(9, 1), Array(10, 1))
    Range("A1:K150").Copy ws.Range("A2")
    ActiveWindow.Close (False)
End Sub
     Code eingefügt mit Syntaxhighlighter 1.14


Gruß
Heinz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige