1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. qwert23

Beiträge von qwert23

  • Word Datei speichern

    • qwert23
    • 3. Februar 2013 um 18:57

    Dann ist das so umzusetzen, wenn Du in Deinem Dokument Test.doc arbeitest und es soll dann im zeitlichen Abständen gespeichert werden.
    Du arbeitest nach dem jeweiligen Speichern in dem dann aktuellen Dokument weiter.
    Word ist somit aktiv, _WordDocGetCollection($oWord, 0) beinhaltet das aktuelle Dokument.

    Ist das so korrekt verstanden?

    Spoiler anzeigen
    [autoit]


    #include <Word.au3>

    [/autoit] [autoit][/autoit] [autoit]

    If ProcessExists('WINWORD.EXE') Then
    $oWord = ObjGet('', "Word.Application")
    $fWordExists = True
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $oDoc = _WordDocGetCollection($oWord, 0)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $Datum = @YEAR & @MON & @MDAY & @hour & @min & @sec
    Sleep (60000)
    _WordDocSaveAs ($oDoc,@ScriptDir & "\Test"&$Datum,0)
    WEnd

    [/autoit]

    Sofern kein Word aktiv ist und Dein Skript startet, dann bitte noch in der IF Abfrage ein Else mit Ausstieg einfügen!

  • Word Datei speichern

    • qwert23
    • 2. Februar 2013 um 19:14

    Kommt das so Deinen Vorstellungen nahe?

    Spoiler anzeigen
    [autoit]


    #include <Word.au3>
    $oWordApp = _WordCreate(@scriptDir & "\Test.doc",0,0,0)
    $oDoc = _WordDocGetCollection($oWordApp, 0)
    _WordDocSave ($oDoc)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $Datum = @YEAR & @MON & @MDAY & @hour & @min & @sec
    Sleep (60000)
    _WordDocSaveAs ($oDoc,@ScriptDir & "\Test"&$Datum,0)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    ggf. setze nach Beendigung Deiner Schleife die Anweisung _WordQuit($oWordApp).

    Alternativ bietet Word die Einstellung zum automatischen im Intervall Speichern an.

  • RegularExpression

    • qwert23
    • 30. Januar 2013 um 20:11

    Vielen Dank für die Hinweise.
    Der Fehler liegt in der weiteren Verarbeitung, somit bei mir.

    Herzlichen Dank!!!

  • RegularExpression

    • qwert23
    • 30. Januar 2013 um 19:27

    Hallo,

    ich habe eine kleine Abfrage mit StringRegExp erstellt. Ziel ist es, dass aus einem Text ($a) die Worte dxe_? herausgefiltert werden.
    Nach dxe_ kommen Excelzellen. Also, dxe_a1, dxe_B20 etc. aber auch dxe_AB100.

    Leider liefert die Funktion im Falle von z.Bsp. dxe_a1 und dxa_a11 und dxe_111 nur den Wert zurück, der am längsten ist. Das ist nicht gewollt. Es sollen die Werte
    dxe_a1
    dxe_a11
    dxe_a111
    geliefert werden. Wie muß die Funktion geändert werden?

    [autoit]


    $aResult = StringRegExp($a,"(?i)dxe_[A-Z]+[0-9]+",3)

    [/autoit]
  • Word UDF - _WordDocFindReplace

    • qwert23
    • 30. Januar 2013 um 19:17

    je, das hilft. Danke.
    Aktuell teile ich den String > 255 Zeichen in Teilstrings zu 200 Zeichen auf und hänge ein Kürzel ran.
    Dieses Kürzel dient dann zum weiteren Suchen/ersetzen der weiteren Zeichen. Das letzte Kürzel wird einfach durch "" ersetzt.

    Spoiler anzeigen
    [autoit]


    ; -----------------------------------teilstringsaufteilen
    If StringLen($oFind) >250 Then
    $anzLV = ceiling(StringLen($oFind) / 200) ; nächste ganzzahl
    For $i = 1 to $anzLV
    $teilstrg[$i] = StringLeft($oFind,200) & "x1bn3"&$i+1 ; in teilstrings aufteilen, anhang dient zum lfd such/ersetz in word
    $oFind = StringTrimLeft($oFind,200)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _WordDocFindReplace($oDoc,$aResult[$y],$teilstrg[1])

    [/autoit] [autoit][/autoit] [autoit]

    for $i = 2 to $anzLV
    _WordDocFindReplace($oDoc,"x1bn3"&$i,$teilstrg[$i])
    Next
    _WordDocFindReplace($oDoc,"x1bn3"&$anzLv+1,"") ; letzten merkerwert entfernen
    Else
    _WordDocFindReplace($oDoc,$aResult[$y],$oFind)
    EndIf
    ; -------------------------------ende teilstrings

    [/autoit]
  • Word UDF - _WordDocFindReplace

    • qwert23
    • 30. Januar 2013 um 18:00

    Word 2010 setze ich ein.
    Die Längenbeschränkung ist auch in 2003 vorhanden.
    Meldung aus der Word.au3:
    C:\AutoIt3\Include\word.au3 (749) : ==> Error in expression.:
    $return = .Execute($s_FindText, $f_MatchCase, $f_MatchWholeWord, $f_MatchWildcards, $f_MatchSoundsLike, $f_MatchAllWordForms, $f_Forward, $i_Wrap, $f_Format, $s_ReplaceWith, $i_Replace)
    $return = .Execute($s_FindText, $f_MatchCase, $f_MatchWholeWord, $f_MatchWildcards, $f_MatchSoundsLike, $f_MatchAllWordForms, $f_Forward, $i_Wrap, $f_Format, $s_ReplaceWith, $i_Replace)^ ERROR

  • Word UDF - _WordDocFindReplace

    • qwert23
    • 30. Januar 2013 um 17:15

    Hallo,

    mit der Funktion _WordDocFindReplace, aus dem Word-UDF, ist der ReplaceString auf max. 255 Zeichen beschränkt.
    Ist es möglich, diese Beschränkung aufzuheben? Wie?

    Ziel ist es, den Ersetzstring (Replacestring) in der Länge unbeschränkt zu verwenden.
    Beispiel:

    [autoit]


    $oFind = _WordDocFindReplace($oDoc,"dx_Produkt",$crm_produkt)

    [/autoit]


    Im Worddokument ($oDoc) steht der Suchstring "dx_Produkt" und soll durch die vorher gefüllte Variable "$crm_produkt" ersetzt werden. Die Produktbeschreibung ist regelmäßig >255 Zeichen lang.

  • For-Schleifen, Excel und Outlook

    • qwert23
    • 30. Januar 2013 um 13:18

    Sorry - verstehe ich nicht - liest sich wie ein Spamprogramm...

  • For-Schleifen, Excel und Outlook

    • qwert23
    • 30. Januar 2013 um 09:14

    Zum Verständnis: Du möchtest bis zu 500 E-Mailadressen im Betreff versenden?

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.8.1 2012.12.28)

    • qwert23
    • 28. Januar 2013 um 13:07

    Funktion Int
    Der Parameter 2 gibt einen 64bit Integer zurück. Geschrieben steht 32bit.

    Parameter
    expression Als Integer darzustellender Ausdruck.
    flag [optional] legt das Verhalten fest.
    Dieser Parameter kann einer der folgenden Werte sein:
    Default = das Ergebnis ist ein Integer mit automatischer Größe. Siehe Bemerkungen.
    1 = das Ergebnis ist ein 32bit Integer.
    2 = das Ergebnis ist ein 32bit Integer.

  • Excel Formatierung auslesen

    • qwert23
    • 27. Januar 2013 um 21:40

    Also so für die Zelle A8:

    [autoit]

    $sGetFormat = $oExcel.ActiveSheet.Range("A8").NumberFormat

    [/autoit]

    Vielen Dank, water.

  • Excel Formatierung auslesen

    • qwert23
    • 27. Januar 2013 um 21:17

    Hallo,

    ich lese einzelne Zellen in einer Exceldatei mit Excel.au3.
    Nun bin ich auf der Suche nach einer Möglichkeit die Formatierung der Zelle auszulesen. Es geht promär um Zahlenformate. Kurz gesagt, die gegenteilige _ExcelNumberFormat Funktion.

    Hier der Auszug aus der Hilfe:

    [autoit]


    Local $sFormat = "#.##0,00 €" ; Formatiert die Zellen als String _ExcelNumberFormat, um sie als €-Währung anzuzeigen
    _ExcelNumberFormat($oExcel, $sFormat, 1, 1, 5, 5) ; Start in Zeile 1, Spalte 1, Ende in Zeile 5, Spalte 5

    [/autoit]



    Ungefähr so stelle ich mir das vor für die Zelle A1: _GetExcelNumberFormat($oExcel,A1)

    Vielen Dank für die Unterstützung.

  • Mail erstellen

    • qwert23
    • 27. Januar 2013 um 20:58

    Danke water. Unsere Antworten haben sich überschnitten...

  • Mail erstellen

    • qwert23
    • 27. Januar 2013 um 20:56

    Sorry - Fehler beim Kopieren. So ist es korrekt:

    [autoit]

    $oOutlook = _OL_Open()

    [/autoit]

    Zu $olMailItem und $emsend
    Schaue bitte mal in die Hilfedatei _OL_ItemCreate.htm. Im Beispiel 4 und 5 siehst Du, dass $olMailItem der allgemeinen Anweisung _OL_ItemCreate anzeigt, dass eine E-Mail erzeugt werden soll. Andere Anweisungen sind für Kontakte, Termine etc. in der Hilfedatei dokumentiert.

    $emsend ist einfach eine eigene Variable, die den Pfad und Dateinamen der .oft Datei beinhaltet. Beispiel 5 zeigt Dir das exakt auf.
    Beispiel: Du möchtest die E-Mail mit Abstimmungsbutton versenden. Ein Weg dahin ist, dass Du eine E-Mail in Deinem Outlook öffnest, die Abstimmungsbutton anwählst und dann diese "leere" E-Mail als .oft (Outlookformular) speicherst. Pfad und Dateinamen weißtDu dann z.Bsp. der Variablen $emsend zu. Es kann auch jede andere sein. Alternativ setze hier "" ein, wenn Du kein Formular verwendest. Deshalb ist Deine Annahme dazu korrekt.

    $vOL_Result.GetInspector ist eine COM Anweisung. Anweisungen und Inhalt findest Du in der MSDN von Microsoft, wie hier http://msdn.microsoft.com/en-us/library/…office.12).aspx
    Das kannst Du verstehen, musst das aber nicht... Dazu haben sich ja bereits andere ausreichend Gedanken gemacht. So wie water, denn ohne water hätten wir diese tolle UDF nicht. water: Danke!!!

    _OL_ItemRecipientAdd ist auch in der Hilfedatei beschrieben und funktioniert vom Grundsatz her genau so.
    Für die beiden E-Mailadressen würde ich diese aus vereinfachungsgründen in die _OL_ItemCreate Anweisung mit angeben (TO=...;...). Adressen werden wie in Outlook mit ; getrennt. Verbessern kannst Du das später immer noch.

    Dann melde doch bitte mal zurück, wie Du nun weiter vorangekommen bist.

  • Mail erstellen

    • qwert23
    • 27. Januar 2013 um 19:04

    Hallo water,
    die Prüfung bezieht sich ausschließlich auf Adressen im Adressbuch / Kontakten, stimmts?
    Bei externen Adressen wäre doch selbiges Ergebnis erreicht, nicht wahr?

  • Mail erstellen

    • qwert23
    • 27. Januar 2013 um 18:23

    Hallo entsel,
    was und wem antwortest Du?
    Mit Verlaub, Polemik bringt das Forum und Dich nicht weiter.
    Welche Fragen hast Du nach den Antworten?

  • Mail erstellen

    • qwert23
    • 27. Januar 2013 um 17:41

    hier mal ein Schema zur Mailerzeugung iVm. OutlookEx.au3.
    Einzelne Werte sind namentlich benannt.
    Zum Hinzufügen weiterer Empfänger kannst Du auch direkt im _OL_ItemCreate vornehmen.

    Spoiler anzeigen
    [autoit]


    ; --------- include
    #include <OutlookEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; --------- Outlook aufrufen COM
    $oOutlook = _OL_Open()

    [/autoit] [autoit][/autoit] [autoit]

    ;---------- EMail erzeugen und im Entwurfordner speichern inkl. Signatur lt. Outlookeinstellungen + $emsend_oft ist ein Outlookformular, ansonsten "" einsetzen
    $vOL_Result = _OL_ItemCreate($oOutlook, $olMailItem, "", $emsend_oft, "Subject=Hier steht der Betreff", "To=empfaenger@xy.de", "CC=empfaengercc@xy.de")
    If @error Then
    MsgBox(16,"fehler",@error&@crlf&@extended )
    EndIf
    $sbody = "Body<br><b>fett</b> normal. Hier also Deinen E-Mailtext bestimmen im HTML Format"
    $vOL_Result.BodyFormat = $olFormatHTML
    $vOL_Result.GetInspector
    $sBody = $vOL_Result.HTMLBody
    $vOL_Result.HTMLBody = $eline & $sBody

    [/autoit] [autoit][/autoit] [autoit]

    ;---------- Attachments hinzufügen (hier die Datei Text.txt)
    _OL_ItemAttachmentAdd($oOutlook, $vOL_Result, Default, @scriptDir&"\test.txt")

    [/autoit] [autoit][/autoit] [autoit]

    ; -------- Outlookverbindung beenden
    _OL_Close($oOutlook)

    [/autoit]
  • Incident Erfassungs GUI - Input via Outlook als E-Mail versenden

    • qwert23
    • 26. Januar 2013 um 22:45

    Dazu mußt Du die Reihenfolge im _OL_WrapperSendMail beachten....
    Der 7. Parameter steuert die Anhänge, deshalb sieht Deine Anweisung so aus...

    [autoit]


    _OL_Wrapper_SendMail($oOutlook, $sEmail,"","", GuiCtrlRead($Input_Betreff), GuiCtrlRead($Label_Date) & GUICtrlRead($Date) & @CRLF & @CRLF & GuiCtrlRead($Label_Typ) & GuiCtrlRead($Combo_Typ) & @CRLF & @CRLF & GuiCtrlRead($Label_IncidentAntragsteller) & GuiCtrlRead($Input_IncidentAntragsteller) & @CRLF & @CRLF & GuiCtrlRead($Label_Niederlassung) & GuiCtrlRead($Combo_Niederlassung) & @CRLF & @CRLF & GuiCtrlRead($Label_Abteilung) & GuiCtrlRead($Input_Abteilung) & @CRLF & @CRLF & GuiCtrlRead($Label_Telefonnummer) & GuiCtrlRead($Input_Telefonnummer) & @CRLF & @CRLF & GuiCtrlRead($Label_IncidentPrio) & GuiCtrlRead($Combo_IncidentPrio) & @CRLF & @CRLF & GuiCtrlRead($Label_Klassifizierung) & GuiCtrlRead($Combo_Klassifizierung) & @CRLF & @CRLF & GuiCtrlRead($Label_Ausloeser) & GuiCtrlRead($Combo_Ausloeser) & @CRLF & @CRLF & GuiCtrlRead($Label_DeviceBez) & GuiCtrlRead($Input_DeviceBez) & GuiCtrlRead($Input_Attachment) & @CRLF & @CRLF & @CRLF & GUICtrlRead($Label_Fehlerbeschreibung) & @CRLF & GuiCtrlRead($Edit_Fehlerbeschreibung), GuiCtrlRead($Input_Attachment))

    [/autoit]
  • Incident Erfassungs GUI - Input via Outlook als E-Mail versenden

    • qwert23
    • 23. Januar 2013 um 18:31

    Die Beispiele von water sind sehr verständlich im Wiki und im UDF!

    Ich habe das kurz aus Deinen Vorgaben und dem UDf zusammengestellt - als Beispiel:
    Das Beispiel erzeugt 2 E-Mails. Lt. Deiner Vorstellung wäre die 2. Variante die einfachere.
    Die einzelnen Inhalte sind von Dir nur noch in die richtige Reihenfolge zu bringen.

    Spoiler anzeigen
    [autoit]


    #include <outlookex.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Incident Erfassung", 214, 252, 254, 124)
    $Input1 = GUICtrlCreateInput("it-support@xxx.com", 8, 8, 121, 21)
    $Input2 = GUICtrlCreateInput("Incident Kurzbeschreibung", 8, 40, 121, 21)
    $Edit1 = GUICtrlCreateEdit("", 8, 72, 185, 89)
    GUICtrlSetData(-1, "Fehlerbeschreibung")
    $Button1 = GUICtrlCreateButton("Senden", 8, 184, 75, 25)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    ; ------------ Outlook COM

    [/autoit] [autoit][/autoit] [autoit]

    Global $oOutlook = _OL_Open()
    If @error <> 0 Then Exit MsgBox(16, "Fehler", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended)

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------- Speichert E-Mail im Entwurfordner
    _OL_ItemCreate($oOutlook, $olMailItem,"" ,"", "Subject="&GuiCtrlRead($Input2), "BodyFormat=" & $olFormatHTML, "HTMLBody=Fehlerbeschreibung"&@crlf&GuiCtrlRead($Edit1), "To=" & GuiCtrlRead($Input1))
    If @error Then
    MsgBox(16,"Fehler",@error&@crlf&@extended )
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------- direktes senden wir Wrapper...

    [/autoit] [autoit][/autoit] [autoit]

    _OL_Wrapper_SendMail($oOutlook, GUICtrlRead($input1),"","",GuiCtrlRead($Input2), GuiCtrlRead($Edit1),$olFormatHTML, $olImportanceHigh)

    [/autoit] [autoit][/autoit] [autoit]

    ; so belegst Du die Felder. In diesem Beispiel ist der Bodytext im HTML-Format angegeben
    ;_OL_Wrapper_SendMail($oOutlook, Empfänger, cc, bcc, Betreff, "Body<br><b>fett</b> normal.", Attachments, $olFormatHTML, $olImportanceHigh)

    [/autoit] [autoit][/autoit] [autoit]

    ; ------------ für die einzelnen Werte siehe die ausführliche Beispielbeschreibung im UDF

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(64, "OutlookEX UDF", "Mail successfully sent to user '" & GuiCtrlRead($Input1) & "'!")

    [/autoit] [autoit][/autoit] [autoit]

    _OL_Close($oOutlook)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]
  • Incident Erfassungs GUI - Input via Outlook als E-Mail versenden

    • qwert23
    • 23. Januar 2013 um 13:18

    dafür empfehle ich Dir das OutlookEX UDF.
    siehe hier: http://www.autoitscript.com/forum/topic/126305-outlookex-udf/

    Dort findest Du den download, Beispiele etc.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™