Nein, so passt es!
Sieht nach 255 Stellen aus.
Nein, so passt es!
Sieht nach 255 Stellen aus.
ZitatDa scheint's wirklich eine Begrenzung zu geben. Muss mal forschen, woran das liegt.
Das wäre sehr schön...![]()
Sonst eine super UDF, die mir schon sehr viel geholfen hat. ![]()
Mit anschließend "StringSplit" ist alles da.
Danke!
Hatte ich schon probiert.
Global $aItem = _OL_ItemGet($aResult[1][1])
$aResult fehlte.![]()
Nur die Informationen vom "Body" den ich ja auslesen möchte, werden abgeschnitten und nicht vollständig in das Array geschrieben.
Es dauert im Verhältnis ziemlich lange, bis das Array mit den Daten erscheint.
water, oder gibt es noch einen anderen weg? ![]()
water, vielen Dank!
Das klappt schon mal.
Nur wo füge ich die "EntryID" bei _OL_ItemFind ein, um meine Daten zu erhalten?![]()
Update:
So müsste es funktionieren.
Global $aItems = _OL_ItemFind($oOutlook, $aFolder[1], $olMail, "", "EntryID",$aResult[1][1], "EntryID,CreationTime,Sender,SenderEmailAddress,SenderName,SenderEmailType,Body")
Moin,
water, ich versuche mit "_OL_ItemFind" nur aus einer selektierten Mail den Inhalt in ein Array zu schreiben.
Im unteren Beispiel "[UnRead]=True" sind es aber die ungelesenen, was auch gut funktioniert.
Wie ist es möglich mit nur jeweils einer selektierten Mail ?
Global $oOutlook = _OL_Open()
Global $aFolder = _OL_FolderAccess($oOutlook, "", $olFolderInbox)
Global $aItems = _OL_ItemFind($oOutlook, $aFolder[1], $olMail, "[UnRead]=True", "", "", "EntryID,CreationTime,Sender,SenderEmailAddress,SenderName,SenderEmailType,Body")
Ja, vielen Dank! ![]()
Oder so.....
BugFix , danke, auch deine UDF ist sehr interessant und eröffnet viele Möglichkeiten.
#include <GUIConstantsEx.au3>
#include <Array.au3>
Global $hchildSek[10]
Global $cache
Global $cache1
$Form1 = GUICreate("Form1", 301, 454, 192, 124)
$TreeView1 = GUICtrlCreateTreeView(8, 216, 281, 169)
$var = IniReadSectionNames(@ScriptDir & "\test.ini")
If @error Then
MsgBox(4096, "", "Kein INI File")
Else
For $i = 1 To $var[0]
$hchildSek[$i] = GUICtrlCreateTreeViewItem($var[$i], $TreeView1)
Dim $cache[0]
Dim $cache1[0]
$var2 = IniReadSection(@ScriptDir & "\test.ini", $var[$i])
If Not @error Then
For $j = 1 To $var2[0][0]
$search = _ArraySearch($cache, $var2[$j][0])
If $search <> -1 Then
GUICtrlCreateTreeViewItem($var2[$j][1], $cache1[$search])
Else
Local $2Ebene = GUICtrlCreateTreeViewItem($var2[$j][0], $hchildSek[$i])
GUICtrlCreateTreeViewItem($var2[$j][1], $2Ebene)
_ArrayAdd($cache, $var2[$j][0])
_ArrayAdd($cache1,$2Ebene)
EndIf
Next
EndIf
Next
EndIf
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Alles anzeigen
@timee000, sorry es liegt an meiner Autoit Version 3.3.10.2.
ArrayAdd erlaubt nur eindimensionales Array.
Da das Projekt wofür ich es benötige sehr groß ist, kann ich es nicht auf die die aktuelle Autoit Version umstellen.
Schaue dir doch mal "_ArrayAdd" an, wo es bei dir steht.![]()
Nein, genau richtig!
Kannst du den von dir eingestellten Code nochmal überprüfen?
Danke timee000, aber es funktioniert so nicht, der Lösungsweg ist eine gute Idee.![]()
#include <GUIConstantsEx.au3>
#include <Array.au3>
Global $hchildSek[10]
$Form1 = GUICreate("Form1", 301, 454, 192, 124)
$TreeView1 = GUICtrlCreateTreeView(8, 216, 281, 169)
$var = IniReadSectionNames(@ScriptDir & "\test.ini")
If @error Then
MsgBox(4096, "", "Kein INI File")
Else
For $i = 1 To $var[0]
$hchildSek[$i] = GUICtrlCreateTreeViewItem($var[$i], $TreeView1)
$var2 = IniReadSection(@ScriptDir & "\test.ini", $var[$i])
If Not @error Then
For $j = 1 To $var2[0][0]
Local $2Ebene = GUICtrlCreateTreeViewItem($var2[$j][0], $hchildSek[$i])
GUICtrlCreateTreeViewItem($var2[$j][1], $2Ebene)
Next
EndIf
Next
EndIf
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Alles anzeigen
Moin,
ich erzeuge aus einer INI-Datei ein TreeView und habe folgendes Problem.
In der INI gibt es 2 mal den den key "Test5" mit einen Ordner.
Beide Ordner sollen aber imTreeView unter "Test5" liegen und nicht jeweils unter "Test5"
Könnt ihr mir helfen?
Gruß
Erstmal vielen Dank für die Anregungen!
ZitatWas machst Du genau mit dieser UDF ? Anhänge aus Mails ausziehen? Zu archivierungszwecken? Das thema intersiert mich ziemlich....
Ja!
1. entweder nur Anhänge
2. Mail (*.msg) mit Anhängen separat
3. Mail (*.msg)
Lässt sich wunderbar mit _OL_ItemSave lösen. ![]()
water, Danke!
Ich kenne ihren Namen und ihre Größe ja nicht.
Es kann ja auch ein *.jpg etc. als Anhang wichtig sein, was als Bild gespeichert werden soll. Wie soll ich das vorher filtern?
Moin,
water, ich lese per DragDrop die Anhänge mit deiner UDF, _OL_ItemAttachmentGet oder _OL_ItemAttachmentAdd, _OL_ItemSave auf einer GUI aus, und speicher die Anhänge.
Das klappt auch prima!
Einige Mails haben aber in der Signatur Bilder eingefügt. Diese werden als Anhang erkannt, die ich aber als Datei ja nicht möchte.
Gibt es eine Möglichkeit die Bilder der Signatur auszusparen.
Gruß
Da der Code 20000 Zeilen hat, kann ich dir nur den kurzen Auszug posten. Sorry ![]()
Func sendemail($sAdresse, $sBetreff, $sNachrText, $sAnhang)
If ProcessExists("outlook.exe") = 0 Then
ShellExecute("outlook.exe") ; Wenn Outlook nicht gestartet, öffne Outlook
EndIf
Local $Betreff = GUICtrlRead($iSendmail_TXT)
Global $oOutlook = _OL_Open()
_OL_MailSignatureSet("entsel-2", "") ; in Outlook vorhandene Signatur
$oItem = _OL_ItemCreate($oOutlook, $olMailItem, "", "", "Subject=" & $Betreff)
Local $aRecipients ;empfänger_1
Local $MailCC = GUICtrlRead($iST_Email_2) ;empfänger
If $sAdresse <> "" Then
$aRecipients = StringSplit($sAdresse, ";", 2)
If $MailCC = "" Then
_OL_ItemRecipientAdd($oOutlook, $oItem, Default, $olTo, $aRecipients)
Else
_OL_ItemRecipientAdd($oOutlook, $oItem, Default, $olTo, $aRecipients)
_OL_ItemRecipientAdd($oOutlook, $oItem, Default, $olCC, $MailCC)
EndIf
EndIf
Local $aAttachments ;anhang
If $sAnhang <> "" Then
$aAttachments = StringSplit($sAnhang, ";", 2)
;~ _Arraydisplay($aAttachments)
_OL_ItemAttachmentAdd($oOutlook, $oItem, Default, $aAttachments)
If @error = 3 Then
MsgBox(0 + 262144 + 64, "Fehler", "Eine Datei ist zum Versenden zu groß")
Return
EndIf
If @error = 4 Then
MsgBox(0 + 262144 + 64, "Fehler", "Eine Datei ist nicht vorhanden")
Return
EndIf
EndIf
;Check wenn Mail versendet wird
Global $oOApp = ObjCreate("Outlook.Application")
Global $oItems = $oOApp.GetNamespace("MAPI").GetDefaultFolder($olFolderSentMail).Items
Local $Event = ObjEvent($oItems, "oItems_")
$oItem.BodyFormat = $olFormatHTML
$oItem.GetInspector
$sBody = $oItem.HTMLBody
$oItem.HTMLBody = $sNachrText & $sBody
_OL_MailSignatureSet("entsel-1", "entsel-1") ; zurückstellen auf Standard-Signatur
Global $SendMailFile = $SaveAsMail & $Betreff & ".msg"
If FileExists($SendMailFile) Then
If 7 = MsgBox(4 + 262144 + 32, "Mail überschreiben", "Die Datei " & $Betreff & ".msg ist schon vorhanden." & @CRLF & @CRLF & "Soll sie überschrieben werden") Then ;nicht vorhanden
MsgBox(0 + 262144 + 64, "Mail", "Bitte versuchen sie es erneut mit anderen Betreff")
ExitLoop
Else
FileDelete($SendMailFile)
Sleep(100)
_OL_ItemSave($oOutlook, $oItem, Default, $SendMailFile, $olMSGUnicode)
Sleep(100)
$oItem.Display
ExitLoop
EndIf
Else
_OL_ItemSave($oOutlook, $oItem, Default, $SendMailFile, $olMSGUnicode)
Sleep(100)
$oItem.Display
EndIf
endFunc
Moin,
water, ich versuche mit "_OL_ItemAttachmentAdd($oOutlook, $oItem, Default, $aAttachments)" in eine bereits vorhandene geöffnette Mail mit Anhang weitere Dateien zu addieren.
Klappt aber leider nicht! ![]()
Die Mail wird schon vorher mit deiner UDF geöffnet und Adresse, Betreff, Nachricht sowie Anhang einfügt.
Ist es überthaupt möglich, oder gibt es einen anderen Weg?![]()
Gruß
#include "InputFilter.au3"
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 437, 192, 124)
$Input1 = GUICtrlCreateInput("", 96, 80, 209, 21)
GUICtrlInputSetFilter(-1, "InputFilter")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func InputFilter($sChr, $sStr)
If StringRegExp($sStr,"^.") Then Return $INPUTFILTER_ALLOW
If StringInStr(@CRLF, $sChr) Then Return $INPUTFILTER_SILENTDENY
Return $INPUTFILTER_DENY
EndFunc ;==>InputFilter
Moin,
könnt ihr mir helfen?![]()
ich versuche in einer Inputbox einen Punkt zu filtern. Also eine Punkteingabe ist nicht zulässig
Gruß
ZitatCode einfach mitneuer Version kompilieren
Das habe ich natürlich schon probiert, aber wie gesagt, aufgrund der vielen Excel Funktionen funktioniert es nicht.
Habe schon einige Funktionen umgebaut. Ist aber meiner Meinung nach mit ExcelRead Range usw. für mich alles umfangreicher und nicht gerade besser geworden.
Ich finde die alten Funktionen für mich übersichtlicher.
Mag sein, dass man sich nur ein bisschen umstellen muss.