Hai all,
habe da mal wieder eine Frage an die Profis,
(wobei ich schon sehe, dass es sich ggf. eigentlich eher um ein VBA Problem/Thread handelt. Aber ich sicherlich nicht der Einzige sein sollte, der dieses Problem hat)
Sollte ich trotz intensiver Suche einen entsprechenden Thread übersehen haben, Asche auf mein Haupt
![]()
Also folgende Challenge habe ich:
Innerhalb eines Autoit Scriptes werden Dateinamen (xyz.txt, 123.txt ...) on demand ermittelt und in Variablen geschrieben.
Danach 'passiert' mit den Dateien einiges, bis diese letztendlich den endgültigen Status erreicht haben und abgespeichert werden (alles noch autoit).
Im nächsten Schritt werden/müssen die Dateien mit Excel geöffnet und mittels eines VBA Scriptes weiterverarbeitet ....
Soweit funktioniert dies auch bis auf die Tatsache, dass es mir nicht gelingt die bereits im AutoIT bekannten Dateinamen aus den entsprechenden Variablen bzw. die Variable selbst an das VBA Script zu übergeben, um dort den Dateinamen bekannt zumachen (zum Öffnen dieser Datei). Zur Zeit verwende ich noch den 'absoluten' Namen
(was aufgrund der wechselnden Dateinamen nicht praktikabel ist)
IST: Workbooks.OpenText Filename:="H:\123.txt" ------> SOLL: Workbooks.OpenText Filename:=$filenametxt
(wobei (AutoIT Variable) $filenametxt = "H:\123.txt")
hier ein Auszug aus den beiden Scripts
1.) AutoIT Script
$filenametxt = StringReplace($extract, ".zip",".txt") ;Variable die den Dateinamen im AutoIT Script zugewiesen hat ((z.Bsp. 123.txt)
.....
$sFilePath = "h:\Test.xls" ; Excel Datei mit dem weiterverarbeitenden Excel Makro
$oExcel = ObjCreate("Excel.Application") ; Excel öffnen
With $oExcel
.Visible = $fVisible
.WorkBooks.Open($sFilePath)
.ActiveWorkbook.Sheets(1).Select ()
$x = .Run("Makro1") ; MacroName
EndWith
2. VBA Script
Workbooks.OpenText Filename:="H:\123.txt", Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
Array(Array(0, 1), Array(41, 1), Array(89, 1), Array(99, 1), Array(108, 1), Array(185, 1)) _
, TrailingMinusNumbers:=True
.....
Application.CutCopyMode = False
Windows("Test.xls").Activate
ActiveWorkbook.Close False
Application.ScreenUpdating = True
Für jede Anregung wäre ich dankbar ....
Danke schon einmal im voraus ...
Chris