Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1216to1220
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

Dateipfad mittels ini übergeben

Dateipfad mittels ini übergeben
Marc
Hallo,
ich habe ein Makro aufgezeichnet, in dem ich eine Datei öffne. Da diese Datei aber immer an verschiedenen Orten liegen wird, kann ich den festen Pfad nicht stehen lassen, sondern muss mit einer Variablen arbeiten, spontan fällt mir da eine ini Datei ein. Bisher hat der Makrorecorder folgendes aufgezeichnet:
Workbooks.OpenText Filename:= _
"C:\Documents and Settings\Marc\Desktop\Test\Test.txt" _
, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
Comma:=False, Space:=False, 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), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
, 2), Array(16, 1), Array(17, 2), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array( _
28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), _
Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array(40, 1), Array( _
41, 2), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array(46, 1), Array(47, 1), _
Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52, 1), Array(53, 1), Array( _
54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1), Array(59, 1), Array(60, 1), _
Array(61, 1), Array(62, 1), Array(63, 1), Array(64, 1), Array(65, 1), Array(66, 1), Array( _
67, 1), Array(68, 1), Array(69, 1), Array(70, 1), Array(71, 1), Array(72, 1), Array(73, 1), _
Array(74, 1), Array(75, 1), Array(76, 1), Array(77, 1), Array(78, 1), Array(79, 1), Array( _
80, 1), Array(81, 1), Array(82, 1), Array(83, 1), Array(84, 1), Array(85, 1), Array(86, 1), _
Array(87, 1)), DecimalSeparator:=".", ThousandsSeparator:=",", _
TrailingMinusNumbers:=True
Wie gesagt, das C:\Documents and Settings\Marc\Desktop\Test\Test.txt wird variabel sein und müsste irgendwie konfiguriert werden. Ich habe schon versucht folgendes zu machen, klappt aber nicht:
Workbooks.OpenText ThisWorkbook.Worksheets("Config").Cells("B1").Value_
, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
Comma:=False, Space:=False, 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), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
, 2), Array(16, 1), Array(17, 2), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array( _
28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), _
Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array(40, 1), Array( _
41, 2), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array(46, 1), Array(47, 1), _
Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52, 1), Array(53, 1), Array( _
54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1), Array(59, 1), Array(60, 1), _
Array(61, 1), Array(62, 1), Array(63, 1), Array(64, 1), Array(65, 1), Array(66, 1), Array( _
67, 1), Array(68, 1), Array(69, 1), Array(70, 1), Array(71, 1), Array(72, 1), Array(73, 1), _
Array(74, 1), Array(75, 1), Array(76, 1), Array(77, 1), Array(78, 1), Array(79, 1), Array( _
80, 1), Array(81, 1), Array(82, 1), Array(83, 1), Array(84, 1), Array(85, 1), Array(86, 1), _
Array(87, 1)), DecimalSeparator:=".", ThousandsSeparator:=",", _
TrailingMinusNumbers:=True
Das wäre natürlich nicht über eine ini (was mir eigentlich noch lieber wäre) aber war eben ein Versuch...
Danke für Eure Hilfe.
Marc
AW: Dateipfad mittels ini übergeben
21.06.2011 12:36:15
Rudi
Hallo,
wo ist denn die Ersparnis darin, die Ini zu ändern, anstatt B1?
, klappt aber nicht:
Was steht denn in B1? Muss ja auch der komplette Pfad sein.
Eine Möglichkeit wäre auch noch, die Datei per Dialog auszuwählen.
Übrigens: alle Array(XX, 1) kannst du löschen. Dann wird das übersichtlicher.
Gruß
Rudi
AW: Dateipfad mittels ini übergeben
21.06.2011 12:48:15
Marc
Hallo Rudi,
da das Makro gesceduled aufgerufen wird, muss das irgendwo fest hinterlegt sein. Ich denke halt, dass in einer ini niemand so schnell rumpfuscht, wie in einer Excel datei.
In der Zelle B1 steht C:\Documents and Settings\Marc\Desktop\Test\Test.txt
Danke und Gruß
Marc
Anzeige
AW: Dateipfad mittels ini übergeben
21.06.2011 13:12:10
Marc
Die Arrays habe ich nun rausgeschmissen, danke für den Tipp!
AW: Dateipfad mittels ini übergeben
21.06.2011 13:52:02
Daniel
Hi
naja, ne Ini-Datei musst du auch erst wieder aufwendig auslesen und die kann genauso geändert oder schlimmer aus versehen gelöscht werden.
Wenn du den Pfad in einer Zelle ablegst, dann kannst du ihn dort über den Blattschutz mit Passwort vor Änderungen schützen.
Außderdm kannst du, wenn der Dateiname geändert werden soll, dies z.B. über ein Kleines Makro mit der GetOpenFileName-Methode unterstützen, so daß Fehleingaben ausgeschlossen sind.
Gruß, Daniel
AW: Dateipfad mittels ini übergeben
21.06.2011 14:18:41
Marc
Hi,
ok, gut, überredet :)
Wie wäre denn dann die korrekte Syntax für den Befehl, wenn der Pfad im Tabellenblatt "Config" in der Zelle B1 steht?
Danke und Gruß
Marc
Anzeige
AW: Dateipfad mittels ini übergeben
21.06.2011 14:25:25
Daniel
Vorausgesetzt, dein erste Code hat funktioniert:
Workbooks.OpenText Filename:=ThisWorkbook.Sheet("Config").Range("B1").Value,  Origin:=xlMSDOS,...
Gruß, Daniel
AW: Dateipfad mittels ini übergeben
21.06.2011 14:42:27
Marc
Hallo,
das hat nun mit der Textdatei super geklappt, nun dachte ich, ich könnte das einfach auf ne "normale" xlsm Datei übertragen mit:
Workbooks.Open Worksheets("Config").Range("B2") _
, Origin:=xlWindows
Aber das klappt nicht. Im Tabellenblatt Config in B2 steht C:\Documents and Settings\Marc\Desktop\Test\Test.02.xlsm
Nun bricht er aber ab und will debuggen, wie gesagt, mit der Textdatei klappt das hervorragend.
Danke nochmal...
Lieben Gruß
Marc
Anzeige
AW: Dateipfad mittels ini übergeben
21.06.2011 14:46:26
Rudi
Hallo,
nur
Workbooks.Open Worksheets("Config").Range("B2")
Gruß
Rudi
AW: Dateipfad mittels ini übergeben
21.06.2011 14:58:02
Marc
Hallo Rudi,
ich bekomme dann die Fehlermeldung :
Index außerhalb des gültigen Bereichs
Danke für Eure Geduld...
Marc
AW: Dateipfad mittels ini übergeben
21.06.2011 15:02:52
Rudi
Hallo,
ok, dann ist das andere WB aktiv.
Workbooks.Open ThisWorkbook.Worksheets("Config").Range("B2")
Gruß
Rudi
Perfekt!! Problem ist gelöst! Vielen Dank!
21.06.2011 15:13:04
Marc
Danke!!
AW: Perfekt!! Problem ist gelöst! Vielen Dank!
21.06.2011 16:14:54
Daniel
Hi
das mit dem THISWORKBOOK hattest du ja schon in deinem ersten eigenen Beitrag drin, und ich hatte meine Lösung auch so beschrieben.
Wie bist du denn nur auf die Idee gekommen, das wegzulassen?
Gruß, Daniel
Wie bist du denn...: durch mich owT
21.06.2011 16:18:05
Rudi
AW: Wie bist du denn...: durch mich owT
21.06.2011 17:04:09
Daniel
Hi

hat er vorher schon gemacht, als er eigenständig versucht hat, Workbooks.OpenText in Workbooks.Open umzuwandeln.
Gruß, Daniel
Anzeige
AW: Dateipfad mittels ini übergeben
21.06.2011 14:53:21
Daniel
Hi
du must schon die Unterschiede zwischen Workbooks.Open und Workbooks.OpenText beachten.
im Zweifesfall hilft die Hilfe.
Gruß, Daniel
AW: Dateipfad mittels ini übergeben
21.06.2011 14:27:01
Rudi
Hallo,
Workbooks.OpenText Worksheets("Config").Range("B1") , _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, .....
Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige