Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Outlook / Programming VBA / June 2008

Tip: Looking for answers? Try searching our database.

Possible to Disable Object Model Guard?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
ryguy7272 - 12 May 2008 17:37 GMT
I read the information here:
http://www.outlookcode.com/article.aspx?id=52

It is very interesting.  Maybe I missed something, but I still can't seem to
disable the Outlook Object Model Guard.  I am sending multiple emails from
Excel.  code is below:
Sub Send_Files()
'Working in 2000-2007
   Dim OutApp As Object
   Dim OutMail As Object
   Dim sh As Worksheet
   Dim cell As Range, FileCell As Range, rng As Range


   

   With Application
       .EnableEvents = False
       .ScreenUpdating = False
   End With



   Set sh = Sheets("Send Emails")


   Set OutApp = CreateObject("Outlook.Application")
   OutApp.Session.Logon
   
   Set objMessage = CreateObject("CDO.Message")


   For Each cell In sh.Columns("B").Cells.SpecialCells(xlCellTypeConstants)



       'Enter the file names in the C:Z column in each row
       Set rng = sh.Cells(cell.Row, 1).Range("C1:Z1")



       If cell.Value Like "?*@?*.?*" And _
          Application.WorksheetFunction.CountA(rng) > 0 Then
           Set OutMail = OutApp.CreateItem(0)



           With OutMail
               objMailItem.To = cell.Value
               '.To = cell.Value
               .Subject = "Sales Reps. Data"
               .Body = "Hi " & cell.Offset(0, -1).Value

               For Each FileCell In rng.SpecialCells(xlCellTypeConstants)
                   If Trim(FileCell) <> "" Then
                       If Dir(FileCell.Value) <> "" Then
                           .Attachments.Add FileCell.Value
                       End If
                   End If
               Next FileCell

               .Send  'Or use Display
           End With



           Set OutMail = Nothing
       End If
   Next cell



   Set OutApp = Nothing

   With Application
       .EnableEvents = True
       .ScreenUpdating = True
   End With
End Sub

Is there any way to disable that Model Guard with code?

Thanks,
Ryan---

Signature

RyGuy

Sue Mosher [MVP-Outlook] - 12 May 2008 18:27 GMT
If you read that page, you'd know that the object model guard can't be disabled except by an Exchange administrator.

Your code creates a CDO.Message object but never sends it. That's an approach you can take, instead of using Outlook objects and getting prompts.

Signature

Sue Mosher, Outlook MVP
  Author of Microsoft Outlook 2007 Programming:
    Jumpstart for Power Users and Administrators
   http://www.outlookcode.com/article.aspx?id=54

>I read the information here:
> http://www.outlookcode.com/article.aspx?id=52
[quoted text clipped - 65 lines]
> Thanks,
> Ryan---
ryguy7272 - 12 May 2008 19:39 GMT
Thanks for the follow up Sue.  I guess I still don't understand what makes
this work or not work.  Not, I am using this code:

           With OutMail
               objMessage.To = cell.Value
               objMessage.Subject = "Sales Reps. Data"
               objMessage.Body = "Sales Reps. Data"
               
               .To = cell.Value
               .Subject = "Sales Reps. Data"
               .Body = "Hi " & cell.Offset(0, -1).Value

               For Each FileCell In rng.SpecialCells(xlCellTypeConstants)
                   If Trim(FileCell) <> "" Then
                       If Dir(FileCell.Value) <> "" Then
                           .Attachments.Add FileCell.Value
                       End If
                   End If
               Next FileCell
               
                objMessage.Send
           End With

When code runs I get this:
Object doesn't support this property or method.

What am I doing wrong.  If there is something specific that I need to know,
please tell me.  I don't know much about Outlook at all.

Regards,
Ryan---

Signature

RyGuy

> If you read that page, you'd know that the object model guard can't be disabled except by an Exchange administrator.
>
[quoted text clipped - 69 lines]
> > Thanks,
> > Ryan---
Sue Mosher [MVP-Outlook] - 12 May 2008 20:16 GMT
Which statement is raising the error? Why are you coding both the Outlook.MailItem, which you know will raise security prompts, and the CDO.Message, which won't?

Signature

Sue Mosher, Outlook MVP
  Author of Microsoft Outlook 2007 Programming:
    Jumpstart for Power Users and Administrators
   http://www.outlookcode.com/article.aspx?id=54

> Thanks for the follow up Sue.  I guess I still don't understand what makes
> this work or not work.  Not, I am using this code:
[quoted text clipped - 31 lines]
>>
>> Your code creates a CDO.Message object but never sends it. That's an approach you can take, instead of using Outlook objects and getting prompts.

>> >I read the information here:
>> > http://www.outlookcode.com/article.aspx?id=52
[quoted text clipped - 65 lines]
>> > Thanks,
>> > Ryan---
ryguy7272 - 12 May 2008 21:16 GMT
I did some editing; still get errors.
Error occurs here:
Set .Configuration = cdoConfig

Entire macro:
Sub Send_Files()

   Dim OutApp As Object
   Dim OutMail As Object
   Dim sh As Worksheet
   Dim cell As Range, FileCell As Range, rng As Range


   

   With Application
       .EnableEvents = False
       .ScreenUpdating = False
   End With



   Set sh = Sheets("Send Emails")

   Set myMail = CreateObject("CDO.Message")
   Set objMessage = CreateObject("CDO.Message")

   For Each cell In sh.Columns("B").Cells.SpecialCells(xlCellTypeConstants)


       Set rng = sh.Cells(cell.Row, 1).Range("C1:Z1")


       If cell.Value Like "?*@?*.?*" And _
           Application.WorksheetFunction.CountA(rng) > 0 Then

           With cdoMessage
               Set .Configuration = cdoConfig
               '.From = ""
               .To = cell.Value
               .Subject = "Sample CDO Message"
               .TextBody = "Hi " & cell.Offset(0, -1).Value

               For Each FileCell In rng.SpecialCells(xlCellTypeConstants)
                   If Trim(FileCell) <> "" Then
                       If Dir(FileCell.Value) <> "" Then
                           .Attachments.Add FileCell.Value
                       End If
                   End If
               Next FileCell

               .Send
           End With

           Set objMessage = Nothing
           Set myMail = Nothing

       End If
       
   Next cell

   With Application
       .EnableEvents = True
       .ScreenUpdating = True
   End With
End Sub

I've hit a wall again.  I've seen your name all over the Outlook-Programming
DGs.  and I'll bet anything you know what to do from here Sue.  I want to
learn this, so please tell me what to do to resolve the problem, or please
refer me to a resource on the web that explains what to do.

Regards,
Ryan---

Signature

RyGuy

> Which statement is raising the error? Why are you coding both the Outlook.MailItem, which you know will raise security prompts, and the CDO.Message, which won't?
>
[quoted text clipped - 103 lines]
> >> > Thanks,
> >> > Ryan---
Sue Mosher [MVP-Outlook] - 12 May 2008 21:23 GMT
I don't do CDO for Windows programming. The page at http://www.paulsadowski.com/WSH/cdo.htm is an excellent reference and shows how you need to provide configuration information about the SMTP server to be used for sending the message.

Signature

Sue Mosher, Outlook MVP
  Author of Microsoft Outlook 2007 Programming:
    Jumpstart for Power Users and Administrators
   http://www.outlookcode.com/article.aspx?id=54

>I did some editing; still get errors.
> Error occurs here:
[quoted text clipped - 67 lines]
>
>> Which statement is raising the error? Why are you coding both the Outlook.MailItem, which you know will raise security prompts, and the CDO.Message, which won't?

>> > Thanks for the follow up Sue.  I guess I still don't understand what makes
>> > this work or not work.  Not, I am using this code:
[quoted text clipped - 101 lines]
>> >> > Thanks,
>> >> > Ryan---
ryguy7272 - 13 May 2008 03:47 GMT
Good site Sue, unfortunately I still get an error...

Error says:
'The SendUsing configuration value is invalid'

This is the line that causes the error:
objMessage.Send

The Object Model Guard pops up again if I change the line to this:
.Send

Below is my full code:
Sub Send_Files()
'Working in 2000-2007
   Dim OutApp As Object
   Dim OutMail As Object
   Dim sh As Worksheet
   Dim cell As Range, FileCell As Range, rng As Range

   With Application
       .EnableEvents = False
       .ScreenUpdating = False
   End With


   Set sh = Sheets("Send Emails")


   Set OutApp = CreateObject("Outlook.Application")
   OutApp.Session.Logon
   
   Set objMessage = CreateObject("CDO.Message")
   'Set objMessage = CreateObject("CDO.Message")

   For Each cell In sh.Columns("B").Cells.SpecialCells(xlCellTypeConstants)



       'Enter the file names in the C:Z column in each row
       Set rng = sh.Cells(cell.Row, 1).Range("C1:Z1")



       If cell.Value Like "?*@?*.?*" And _
          Application.WorksheetFunction.CountA(rng) > 0 Then
           Set OutMail = OutApp.CreateItem(0)



           With OutMail
           objMessage.Subject = "Example CDO Message"
           objMessage.From = "ryguy7272@hotmail.com"
           objMessage.To = cell.Value
           objMessage.TextBody = "This is some sample message text."
           
               
               .To = cell.Value
               .Subject = "Sales Reps. Data"
               .Body = "Hi " & cell.Offset(0, -1).Value

               For Each FileCell In rng.SpecialCells(xlCellTypeConstants)
                   If Trim(FileCell) <> "" Then
                       If Dir(FileCell.Value) <> "" Then
                           .Attachments.Add FileCell.Value
                       End If
                   End If
               Next FileCell
               
             
           objMessage.Send

           End With

           Set OutMail = Nothing
       End If
   Next cell



   Set OutApp = Nothing
   Set objCDOMail = Nothing

   With Application
       .EnableEvents = True
       .ScreenUpdating = True
   End With
End Sub

I am receptive to ideas...

Thanks to all who looked.
Ryan--

Signature

RyGuy

> I don't do CDO for Windows programming. The page at http://www.paulsadowski.com/WSH/cdo.htm is an excellent reference and shows how you need to provide configuration information about the SMTP server to be used for sending the message.
>
[quoted text clipped - 175 lines]
> >> >> > Thanks,
> >> >> > Ryan---
Sue Mosher [MVP-Outlook] - 13 May 2008 14:11 GMT
Go back to the article I suggested and look at the details for working with the Message.Configuration object and setting its field values.

Signature

Sue Mosher, Outlook MVP
  Author of Microsoft Outlook 2007 Programming:
    Jumpstart for Power Users and Administrators
   http://www.outlookcode.com/article.aspx?id=54

> Good site Sue, unfortunately I still get an error...
>
[quoted text clipped - 258 lines]
>> >> >> > Thanks,
>> >> >> > Ryan---
Paul R. Sadowski - 13 May 2008 19:08 GMT
Get rid of all that Outlook stuff. You are using CDO. CDO is independant of
Outlook.

Use ONLY CDO. Your warnings are popping up because you are trying to get
Outlook to send mail. Use only CDO. No Outlook.

> Good site Sue, unfortunately I still get an error...
>
[quoted text clipped - 273 lines]
>> >> >> > Thanks,
>> >> >> > Ryan---
ryguy7272 - 14 May 2008 14:43 GMT
Welcome to the party Paul.  I believe there is a way to send multiple emails,
via Outlook, without those warnings popping up every 5 second, but I have
never actually done it.  I tried your method, and eliminated all of the
Outlook references, and as far as I can tell now, I rely only on CDO to do
the job, but now I get an error message saying 'The 'Sendusing' configuration
is invalid.'.  

Code breaks here:
myMail.Send

Entire macro here:
Sub Send_Files()

   Dim OutMail As Object
   Dim sh As Worksheet
   Dim cell As Range, FileCell As Range, rng As Range

   Set myMail = CreateObject("CDO.Message")
   myMail.Subject = "Sending email with CDO"
   
   With Application
       .EnableEvents = False
       .ScreenUpdating = False
   End With


   Set sh = Sheets("Send Emails")
   
   Set objMessage = CreateObject("CDO.Message")


   For Each cell In sh.Columns("B").Cells.SpecialCells(xlCellTypeConstants)

       Set rng = sh.Cells(cell.Row, 1).Range("C1:Z1")



       If cell.Value Like "?*@?*.?*" And _
          Application.WorksheetFunction.CountA(rng) > 0 Then


           With OutMail
               myMail.To = cell.Value
               myMail.Subject = "Sales Reps. Data"
               myMail.TextBody = "Hi " & cell.Offset(0, -1).Value

               For Each FileCell In rng.SpecialCells(xlCellTypeConstants)
                   If Trim(FileCell) <> "" Then
                       If Dir(FileCell.Value) <> "" Then
                           myMail.AddAttachment FileCell.Value
                       End If
                   End If
               Next FileCell

               myMail.Send
           End With

           Set OutMail = Nothing
       End If
   Next cell


   Set myMail = Nothing

   With Application
       .EnableEvents = True
       .ScreenUpdating = True
   End With
End Sub

If anyone can tweak the code and get this thing to work I'd appreciate it.
My CDO ideas came from here:
http://www.w3schools.com/asp/asp_send_email.asp

Regards,
Ryan---

Signature

RyGuy

> Get rid of all that Outlook stuff. You are using CDO. CDO is independant of
> Outlook.
[quoted text clipped - 227 lines]
> >> >> >> >        .ScreenUpdating = False
> >> >> >> >    End With
Paul R. Sadowski - 14 May 2008 14:58 GMT
Remove this line. It serves no purpose:
Set objMessage = CreateObject("CDO.Message")

As for the error message. Do you have the SMTP service running on your
machine? If not you'll have to use a remote server probably with
authentciation. See http://www.paulsadowski.com/WSH/cdo.htm for examples on
how to do that.

As far as I know the only way to stop the security warnings is to self-host
your own security certificate. But then I'm not an Outlook or Office guy so
I could be wrong.

> Welcome to the party Paul.  I believe there is a way to send multiple
> emails,
[quoted text clipped - 309 lines]
>> >> >> >> >        .ScreenUpdating = False
>> >> >> >> >    End With
Sue Mosher [MVP-Outlook] - 14 May 2008 14:59 GMT
Ryan, Paul knows what he's talking about and has documented what you need to know in the article I suggested to you earlier at http://www.paulsadowski.com/WSH/cdo.htm. The problem with your code is that you're still not setting the Message.Configuration details that make it possible for CDO to know what SMTP server address to send through.

You also ought to take out the With OutMail and End With statements, as they're confusing and add nothing to the code.
Signature

Sue Mosher, Outlook MVP
  Author of Microsoft Outlook 2007 Programming:
    Jumpstart for Power Users and Administrators
   http://www.outlookcode.com/article.aspx?id=54

> Welcome to the party Paul.  I believe there is a way to send multiple emails,
> via Outlook, without those warnings popping up every 5 second, but I have
[quoted text clipped - 298 lines]
>> >> >> >> >        .ScreenUpdating = False
>> >> >> >> >    End With
ryguy7272 - 15 May 2008 16:46 GMT
I’ve tried all sorts of things, but I still don't know how to set the
Message.Configuration details for CDO.  Also, I don’t know if I am running
SMPT or not.  I know almost nothing about programming Outlook.  I just wanted
to help a few people in my office with some tasks around here.  I've got it
working for the most part, but I just wanted to try to eliminate those
popups.  I am sort of busy with other projects now, so I'll have to come back
to this sometime in the future.  Thanks so much, Sue and Paul, for the
valiant effort.  I wish I could have gotten it to work, but it doesn't seem
like it is going to happen anytime soon.  I’ll take another crack at it
another time.

Regards,
Ryan---

Signature

RyGuy

> Ryan, Paul knows what he's talking about and has documented what you need to know in the article I suggested to you earlier at http://www.paulsadowski.com/WSH/cdo.htm. The problem with your code is that you're still not setting the Message.Configuration details that make it possible for CDO to know what SMTP server address to send through.
>
[quoted text clipped - 224 lines]
> >> >> >    End With
> >> >> > End Sub
ryguy7272 - 15 May 2008 17:43 GMT
Ok, I couldn't just leave it alone; I like to finish whatever I start.  

I found this code:
Dim myOlApp As Outlook.Application
Dim mpfInbox As Outlook.MAPIFolder
Dim obj As Outlook.MailItem
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection

Set myOlApp = CreateObject("Outlook.Application")
Set mpfInbox = myOlApp.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)

If mpfInbox.Items(1).Class = olMail Then
  Set obj = mpfInbox.Items.Item(1)
MsgBox obj.SenderEmailAddress
End If

This causes a prompt that asks if a user would like to 'Allow Access for x
Minutes'.  I thought, ok, good, I’d like to allow access for 1 minute, that's
all it will take to send my emails.  I thought the Outlook security prompts
would be disabled for 1 minute, but no, another popup comes up and I have to
'Allow' all the email to be sent just like before, by clicking the 'Yes'
button each time.  The code does give me my SMTP server address, right.  I
think that’s what it is called.
obj.SenderEmailAddress

Also, to get Excel to cooperate with Outlook, I had to add this line back in:
Set objMessage = CreateObject("CDO.Message")

Well, I guess I made a little progress, but it still doesn’t do what I
envisioned it doing.
Any more suggestions, recommendations, etc.?  Sorry for being so thick with
all this stuff.

Ryan---

Signature

RyGuy

> I’ve tried all sorts of things, but I still don't know how to set the
> Message.Configuration details for CDO.  Also, I don’t know if I am running
[quoted text clipped - 218 lines]
> > >> >> >                    If Trim(FileCell) <> "" Then
> > >> >> >                        If Dir(FileCell.Value) <> "" Then
Sue Mosher [MVP-Outlook] - 16 May 2008 18:04 GMT
As described in the article you were referred to at http://www.outlookcode.com/article.aspx?ID=52, there are two types of prompts -- a time-limited prompt for access to address-limited information and a prompt for sending messages that appears for each message.

The sender's email address has nothing to do with the SMTP server that you would use to deliver an outgoing message. See my response to your other post.

Signature

Sue Mosher, Outlook MVP
  Author of Microsoft Outlook 2007 Programming:
    Jumpstart for Power Users and Administrators
   http://www.outlookcode.com/article.aspx?id=54

> Ok, I couldn't just leave it alone; I like to finish whatever I start.  
>
[quoted text clipped - 29 lines]
> Any more suggestions, recommendations, etc.?  Sorry for being so thick with
> all this stuff.
ryguy7272 - 02 Jun 2008 14:56 GMT
After querying some great resources, both in my office and on the web, I've
come to the conclusion that this can't be done practically with our Outlook
mail system.  The IT guys would have to give certain types of permission,
which they won't do, even if they did have time to do it.  I could use other
technologies, but I really wanted to send the emails through Outlook, so I
could find certain files in my 'Sent Items' if I needed to.  This is
certainly not possible with some of the other technology options at my firm,
because those other email tools literally bypass Outlook altogether.  

Anyway, this was a great resource:
http://www.rondebruin.nl/cdo.htm

I learned a lot by reading the information here.  I hope others can too...

Regards,
Ryan---

Signature

RyGuy

> As described in the article you were referred to at http://www.outlookcode.com/article.aspx?ID=52, there are two types of prompts -- a time-limited prompt for access to address-limited information and a prompt for sending messages that appears for each message.
>
[quoted text clipped - 33 lines]
> > Any more suggestions, recommendations, etc.?  Sorry for being so thick with
> > all this stuff.
Sue Mosher [MVP-Outlook] - 02 Jun 2008 15:02 GMT
I also like Paul's article on CDO for Windows at http://www.paulsadowski.com/WSH/cdo.htm a lot and recommend it to people looking to use CDO to send messages without security prompts.

Signature

Sue Mosher, Outlook MVP
  Author of Microsoft Outlook 2007 Programming:
    Jumpstart for Power Users and Administrators
   http://www.outlookcode.com/article.aspx?id=54

> After querying some great resources, both in my office and on the web, I've
> come to the conclusion that this can't be done practically with our Outlook
[quoted text clipped - 16 lines]
>>
>> The sender's email address has nothing to do with the SMTP server that you would use to deliver an outgoing message. See my response to your other post.

>> > Ok, I couldn't just leave it alone; I like to finish whatever I start.  
>> >
[quoted text clipped - 29 lines]
>> > Any more suggestions, recommendations, etc.?  Sorry for being so thick with
>> > all this stuff.
Sue Mosher [MVP-Outlook] - 16 May 2008 18:02 GMT
Look in your mail account settings. If you're using POP3 or IMAP4 for mail accounts, you will also see outbound SMTP settings. If you are using Exchange, you will need to discuss things with your Exchange administrator.

Signature

Sue Mosher, Outlook MVP
  Author of Microsoft Outlook 2007 Programming:
    Jumpstart for Power Users and Administrators
   http://www.outlookcode.com/article.aspx?id=54

> I’ve tried all sorts of things, but I still don't know how to set the
> Message.Configuration details for CDO.  Also, I don’t know if I am running
[quoted text clipped - 239 lines]
>> >> >> >    End With
>> >> >> > End Sub
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.