AutoIt - Array auslesen und den Inhalt der Dateien in Worddatei einfügen
Hallo an alle AutoIt-Spezialisten,
ich erstelle gerade ein Script(genauer eine Funktion ), dass Bilder in eine Worddatei einfügen soll. Die Bilder werden als Screenshots erstellt und liegen somit in einem Verzeichnis auf der Platte. die Anzahl der Bilder kann variieren. Dieses Verzeichnis lese ich per _FileListToArray aus. Jetzt soll das Skript per For-Schleife nacheinander den Inhalt der Datei in die Word-Datei laden. Etwa in der Art:
For $i =0 to Ubound($Array, 1) -1
Nehme Inhalt von $Array[$i] und lade in Word
$i+=1
Next
Könnte mir jemand erklären, bzw. helfen wie ich die Forschleife richtig erstelle und wie ich die Inhalte(Bilder) in Word laden kann. Evtl auch per Clipboard. Vielen lieben Dank im Vorraus...
ich erstelle gerade ein Script(genauer eine Funktion ), dass Bilder in eine Worddatei einfügen soll. Die Bilder werden als Screenshots erstellt und liegen somit in einem Verzeichnis auf der Platte. die Anzahl der Bilder kann variieren. Dieses Verzeichnis lese ich per _FileListToArray aus. Jetzt soll das Skript per For-Schleife nacheinander den Inhalt der Datei in die Word-Datei laden. Etwa in der Art:
For $i =0 to Ubound($Array, 1) -1
Nehme Inhalt von $Array[$i] und lade in Word
$i+=1
Next
Func Pictinsert()
Local $FileList = _FileListToArray("C:\Users\uah7fe\Pictures\Screenpresso", "*", 1) ; hier wird die Dateiliste erstellt
If @error = 1 Then
MsgBox(0, "", "Keine Ordner gefunden.")
Exit
EndIf
If @error = 4 Then
MsgBox(0, "", "Keine Dateien gefunden.")
Exit
EndIf
For $i = 0 to Ubound($FileList, 1) -1 ; hier soll der Inhalt der Datei nun in Word eingefügt werden
$i+=1 ; Zählvariable um eins erhöhen
Next
EndFunc
Könnte mir jemand erklären, bzw. helfen wie ich die Forschleife richtig erstelle und wie ich die Inhalte(Bilder) in Word laden kann. Evtl auch per Clipboard. Vielen lieben Dank im Vorraus...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 351857
Url: https://administrator.de/contentid/351857
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo,
Zwar kein Spezialist aber. Ich denke Dir wird mit Deiner Frage hier :
https://autoit.de/index.php?board/4-hilfe-unterst%C3%BCtzung/
besser geholfen.
Denke fast, dass Dein Problem auch per powershell erledigt werden koennte. Das ist aber nicht mein Ding.
So nebenbei. Warum Word? Und welche Version von Word? Einmalig oder oefter? Was soll mit den Bildern passieren?
BFF
Zwar kein Spezialist aber. Ich denke Dir wird mit Deiner Frage hier :
https://autoit.de/index.php?board/4-hilfe-unterst%C3%BCtzung/
besser geholfen.
Denke fast, dass Dein Problem auch per powershell erledigt werden koennte. Das ist aber nicht mein Ding.
So nebenbei. Warum Word? Und welche Version von Word? Einmalig oder oefter? Was soll mit den Bildern passieren?
BFF
Servus @hipfzwirgel,
dein Versuch mit deiner Schleife würde fehl schlagen da das erste Array Element in der Ergebnisliste von _FileListToArray die Anzahl an gefundenen Dateien enthält. Also musst du $i = 1 als Anfangswert definieren damit du nur über die Dateien itterierst. Außerdem ist dein
Um nun die Bilder eines Verzeichnisses in ein neues Word-Dokument einzufügen, erstellst du vor der Schleife erst einmal das Word-COM-Objekt, legst ein neues Dokument an, und in der Schleife fügst du dann nach VBA-Manier die Bilder in das neue Dokument ein:
Fertig.
Trotzdem würde ich hier auf Dateierweiterungen einschränken (s. Code), denn wenn du mal eine Datei im Ordner hast die kein Bild ist klar das das nicht funktionieren kann.
Grüße Uwe
dein Versuch mit deiner Schleife würde fehl schlagen da das erste Array Element in der Ergebnisliste von _FileListToArray die Anzahl an gefundenen Dateien enthält. Also musst du $i = 1 als Anfangswert definieren damit du nur über die Dateien itterierst. Außerdem ist dein
$i+=1 ; Zählvariable um eins erhöhen
falsch da in einer For-Schleife die Zählervariable $i sowieso nach jedem Durchlauf erhöht wird, das ist ja der Sinn einer For-Schleife .Um nun die Bilder eines Verzeichnisses in ein neues Word-Dokument einzufügen, erstellst du vor der Schleife erst einmal das Word-COM-Objekt, legst ein neues Dokument an, und in der Schleife fügst du dann nach VBA-Manier die Bilder in das neue Dokument ein:
#include <File.au3>
; Dateien in Array laden
$files = _FileListToArray("A:\images","*",1,True)
if @error then
msgbox(64,"Keine Dateien","Es wurden keine Dateien gefunden!")
Exit
EndIf
; Gültige Dateierweiterungen definieren
$validExtensionsPattern = "^(jpg|png|bmp|gif|tiff?)$"
; Word COM-Object erstellen
$objWord = ObjCreate("Word.Application")
; neues Dokument erstellen
$doc = $objWord.Documents.Add()
; Alle Dateien im Array durchlaufen
for $i = 1 to UBound($files) - 1
; Dateipfad
$file = $files[$i]
; Pfadbestandteile zerlegen
Local $sDrive,$sDir,$sFileName,$sExtension
_PathSplit($file,$sDrive,$sDir,$sFileName,$sExtension)
; nur wenn Datei eine gültige Erweiterung aus dem Pattern besitzt das Bild einfügen
if StringRegExp($sExtension,$validExtensionsPattern) then
$objWord.Selection.InlineShapes.AddPicture($file)
$objWord.Selection.InsertParagraphAfter()
$objWord.Selection.MoveDown()
Else
; Wenn ungültige Dateierweiterung benutzt wird, Fehler mitteilen
msgbox(48,"Dateierweiterung ungültig","Die Dateierweiterung der Datei '" & $file & "' ist nicht gültig!",2)
Endif
Next
; Ergebnis anzeigen
$objWord.Visible = True
Trotzdem würde ich hier auf Dateierweiterungen einschränken (s. Code), denn wenn du mal eine Datei im Ordner hast die kein Bild ist klar das das nicht funktionieren kann.
Zitat von @BassFishFox:
Zwar kein Spezialist aber. Ich denke Dir wird mit Deiner Frage hier :
https://autoit.de/index.php?board/4-hilfe-unterst%C3%BCtzung/
besser geholfen.
Wieso so weit schweifen ??Zwar kein Spezialist aber. Ich denke Dir wird mit Deiner Frage hier :
https://autoit.de/index.php?board/4-hilfe-unterst%C3%BCtzung/
besser geholfen.
Denke fast, dass Dein Problem auch per powershell erledigt werden koennte.
Sicher, das ist aber hier nicht die Frage.Das ist aber nicht mein Ding.
Wieso dann antworten wenn einem das Thema nicht geläufig ist?!So nebenbei. Warum Word? Und welche Version von Word?
Ist nicht relevant da die Methoden zum Einfügen der Bilder bei allen Versionen gleich geblieben sind.Einmalig oder oefter? Was soll mit den Bildern passieren?
Alle Bilder des Verzeichnisses, so dem Wortlaut des TOsGrüße Uwe