water Posted May 9, 2012 Author Share Posted May 9, 2012 Looks like a problem with Outlook itself:"Outlook Error 800401f3: Invalid Class StringThese errors can indicate that scripting support is disabled or damaged in your Outlook installation. If Outlook was installed without scripting support, the following steps will fix the problem:"Link how to solve the problem.Does this make any sense? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
mdcastle Posted May 9, 2012 Share Posted May 9, 2012 (edited) A repair of Outlook 2010 did the trick, although I now get the security message prompting to allow the .exe access to Outlook (but I can live with that). Thanks for all your help. Edited May 9, 2012 by mdcastle Link to comment Share on other sites More sharing options...
water Posted May 9, 2012 Author Share Posted May 9, 2012 You know that you can pass a parameter to _OL_Open to start a program to automatically click away security warnings? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
mdcastle Posted May 9, 2012 Share Posted May 9, 2012 You know that you can pass a parameter to _OL_Open to start a program to automatically click away security warnings?I do now I'll give it a go. Link to comment Share on other sites More sharing options...
water Posted May 9, 2012 Author Share Posted May 9, 2012 (edited) The UDF comes with a _OL_Warnings.au3 which has to be compiled and then needs to be called from _OL_Open. _OL_Warnings looks for windows with title "Microsoft Office Outlook" (< Outlook 2007) or "Microsoft Outlook" (>= Outlook 2007) and a text of "A program is trying to". If it is found it clicks the messages away. Edited May 9, 2012 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
mdcastle Posted May 21, 2012 Share Posted May 21, 2012 (edited) Hi water When using _OL_ItemSend, is $oForward1.Display required for the email to be sent? (see example below). ;Create a copy of the item to forward $oForward1 = _OL_ItemForward($oOutlook, $aItems1[$j][0], Default, "") If @error <> 0 Then Exit MsgBox(16, "Item forward", "Error creating an item copy to forward. @error = " & @error & ", @extended = " & @extended) ;Add recipient _OL_ItemRecipientAdd($oOutlook, $oForward1, Default, $olTo, $Doc) If @error <> 0 Then Exit MsgBox(16, "Recipient add", "Error adding a recipient to the mail item. @error = " & @error & ", @extended = " & @extended) ;Send _OL_ItemSend($oOutlook, $oForward1) If @error <> 0 Then Exit MsgBox(16, "Item send", "Error sending the mail item. @error = " & @error & ", @extended = " & @extended) $oForward1.Display Edited May 21, 2012 by mdcastle Link to comment Share on other sites More sharing options...
water Posted May 21, 2012 Author Share Posted May 21, 2012 No. It's just to display the resulting item. You can savely delete this line. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
mdcastle Posted May 21, 2012 Share Posted May 21, 2012 great - thanks. Link to comment Share on other sites More sharing options...
jimnbene Posted May 21, 2012 Share Posted May 21, 2012 This is my first post but I have had good success using AutoIT for a number of tasks that I do and I appreciate having it available. I decided to look at the OutLookEX UDF and was able to have success at using things like ItemFind, however I have run into an issue. One of the things I do is send a copy of the email that comes into my inbox and send it to folders in my PST folders. I then will have copies of my received email as in the OutLook mailbox on the server, the mail is archived after 14 days and I like to have a copy for later reference. I tried just using rules in OutLook to mark the copies in my PST folders as "read" status as I know those are copies and I don't care to see they are "Unread", but using the rules, it marks both copies on the server and in my PST folders as read, so that won't work for me.I decided to use AutoIT / OutLookEX UDF to mark those items in the PST folders are "READ". I was able to do this on single level folders. However when I have folders with subfolders, on the ItemFind, I get an array error. This is what the error says: Line 5102 (File "C:\Program Files\AutoIt3\Include\OutlookEx.au3"):If UBound($avArrayTarget) > 1 Then $avArrayTarget[0][1]=UBound($ArrayTarget,2)If UBound($avArrayTarget) > 1 Then ^ ERRORError: Array variable has incorrect numer of subscripts or subscript dimension range exceeded.Addition information: If I use the script on a folder with no subfolder it works fine. For example my ItemFind line looks like this:$aItems = _OL_ItemFind($oOutlook, "Jim AlexanderTester", $olMail, "[unRead]=True", "", "", "EntryID","", 1) [where Tester has no subfolders] No errorIf I have a subfolder such as SubTester2 below a folder called Tester2 and the ItemFind looks like this:$aItems = _OL_ItemFind($oOutlook, "Jim AlexanderTester2", $olMail, "[unRead]=True", "", "", "EntryID","", 1) [with the subfolder not specified] then the error occurs.If I have the same situation of Subfolder named SubTester2 below Tester2 and the ItemFind looks like this:$aItems = _OL_ItemFind($oOutlook, "Jim AlexanderTester2SubTester2 "[unRead]=True", "", "", "EntryID","", 1) There is no error, but it only retrieves from SubTester2It does not seem to matter if there are Unread items in any combination, if there is a Subfolder then it gets the error.I have looked in the OutlookEx.au3 and found that it is in the section of _OL_ArrayConcatenate which concatenates 2D arrays. I thought that ItemFind would only retrun 2D arrays?Any help would be appreciated.Jim Alexander Link to comment Share on other sites More sharing options...
water Posted May 21, 2012 Author Share Posted May 21, 2012 I assume you are using the latest version: 0.7.1.1? Are there any unread items in the subfolders? Will have to test tomorrow. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
jimnbene Posted May 21, 2012 Share Posted May 21, 2012 (edited) Water, Thanks for the response. Yes UDF version is 0.7.1.1 - I went back into UltraEdit to check in the OutlookEX source for sure. It doesn't seem to matter if there are unread items in the subfolder or not. I have tried the various combinations of unread in top folder only, unread in subfolder only, unread in both and the same error occurs. Jim Alexander I Should add .. I am using Outlook 2003 interacting with a MS Exchange server. Edited May 21, 2012 by jimnbene Link to comment Share on other sites More sharing options...
jimnbene Posted May 22, 2012 Share Posted May 22, 2012 Water,I did a bit of inspecting and I think that I solved it .. or at least it is working for me. This is the code in the _OL_ArrayConcatenate internal function: If BitAND($iOL_Flags, 2) <> 2 Then $avArrayTarget[0][0] = $iNewSize - 1 If UBound($avArrayTarget) > 1 Then $avArrayTarget[0][1] = UBound($avArrayTarget, 2) EndIfI change the value in read to zero. I can't answer to why that works, but it is working fine for me now. I even added another level below, so there are two levels of subfolders and it works just fine. I am sure you will look at the code and say, of course, and will realize the reason that works. If I would spend more time working on it and get my mind working on arrays again, I could figure out why, but it has been too many years since I had to work with arrays (maybe 20 years!).Thanks for the great UDF, I appreciate your work and hope this helps out in some small way.Jim AlexanderSacramento, CA Link to comment Share on other sites More sharing options...
water Posted May 22, 2012 Author Share Posted May 22, 2012 Thanks for digging into the issue. It looks like the function works with 2D-arrays but has a problem when the second dimension only has one element. I will do more testing and hope to come up with a solution quite soon. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
water Posted May 22, 2012 Author Share Posted May 22, 2012 Great, you found a bug! Please change lineIf UBound($avArrayTarget) > 1 Then $avArrayTarget[0][1] = UBound($avArrayTarget, 2)toIf UBound($avArrayTarget, 0) > 1 Then $avArrayTarget[0][1] = UBound($avArrayTarget, 2)and the problem should be solved. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
jimnbene Posted May 22, 2012 Share Posted May 22, 2012 Water, I did change the line in OutlookEX as you suggested, adding the ',0' and changing the [0][0] back to [0][1], however it failed with the same error as before. I left the ',0' in the UBound($avArrayTarget,0) but change the [0][1] back to [0][0] and it works again. I looked for how to post my code here, but I don't see the proper method, so I am going to make another post with just the code I am running to mark all items in my PST folder to be read. Perhaps that will shed some light on this. Jim Alexander Link to comment Share on other sites More sharing options...
jimnbene Posted May 22, 2012 Share Posted May 22, 2012 Here is the code to my "Outlook_mark_as_read.au3" file:#include <Array.au3>#include <OutlookEx.au3>$sTitle = "Outlook Test Script"$oOutlook = _OL_Open(True, "C:Program FilesAutoIt3_OL_Warnings.exe", 0, 0, "")If @error Then Exit MsgBox(16, $sTitle, "Error returned by _OL_Open: " & @error & ", @extended: " & @extended)Global $aItems = _OL_ItemFind($oOutlook, "Jim Alexander", $olMail, "[unRead]=True", "", "", "EntryID","", 1) ; No unread mail itemsIf $aItems [0][0] < 1 Then ExitEndifLocal $rows = UBound($aItems) - 1 For $i = 1 to $rows _OL_ItemModify($oOutlook, $aItems[$i][0], Default, "UnRead=False")NextIf @error Then Exit MsgBox(16, $sTitle, "Error returned by _OL_ItemFind: " & @error & ", @extended: " & @extended)_OL_Close($oOutlook)Exit Link to comment Share on other sites More sharing options...
water Posted May 22, 2012 Author Share Posted May 22, 2012 (edited) Strange!Could you please insert this lineConsoleWrite(ubound($aArray,0) & "-" & ubound($aArray,1) & "-" & ubound($aArray,2) & @LF)before lineIf UBound($avArrayTarget, 0) > 1 Then $avArrayTarget[0][1] = UBound($avArrayTarget, 2)in function _OL_ArrayConcatenate?The result will be written to the console. Edited May 22, 2012 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
water Posted May 22, 2012 Author Share Posted May 22, 2012 Your script doesn't look bad. I would just change$oOutlook = _OL_Open(True, "C:\Program Files\AutoIt3\_OL_Warnings.exe", 0, 0, "")to$oOutlook = _OL_Open(True, "C:\Program Files\AutoIt3\_OL_Warnings.exe")because setting the two wait intervals to 0 will put heavy load on your CPU. Forget what I've written in my last post. The line should read: If UBound($avArrayTarget, 2) > 1 Then $avArrayTarget[0][1] = UBound($avArrayTarget, 2) My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
mdcastle Posted May 23, 2012 Share Posted May 23, 2012 water I've got a question about _OL_ItemSave and incrementing an integer to enable saving of attachments with the same name - I'm not sure how to do it. My current line of code is _OL_ItemSave($oOutlook, $aResult[$i][0], Default, $SavePath & "", $olHTML, 2) Where do I add in the underscore and the integer as per the help file? Optional: Flags to set different processing options. Can be a combination of the following: 1: Save the item (default) 2: Save attachments. Will be saved into the same directory as the item itself. Name is Filename of the item, underscore plus name of attachment plus (optional) unterscore plus integer so multiple att. with the same name can be saved Link to comment Share on other sites More sharing options...
water Posted May 23, 2012 Author Share Posted May 23, 2012 It's done by the function itself. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
Recommended Posts