Phone Message - Custom

C

Corey H.

This vbscript is great for returning a set value.
But what if you needed to display font in a text area of the form that
always changes per call, and paste it within the message body.

Sub Item_Send()
strBody = Item.Body
If Item.UserProperties("Telephoned") = True Then
strBody = strBody & vbCrLf & "Telephoned"
End If
If Item.UserProperties("PleaseCall") = True Then
strBody = strBody & vbCrLf & "Please Call"
End If
If Item.UserProperties("Confidential") = True Then
strBody = strBody & vbCrLf & "Confidential"
End If
If Item.UserProperties("WantstoSeeYou") = True Then
strBody = strBody & vbCrLf & "Wants to See You"
End If
If Item.UserProperties("CameToSeeYou") = True Then
strBody = strBody & vbCrLf & "Came To See You"
End If
If Item.UserProperties("ReturnedYourCall") = True Then
strBody = strBody & vbCrLf & "Returned Your Call"
End If
If Item.UserProperties("WillCallAgain") = True Then
strBody = strBody & vbCrLf & "Will Call Again"
End If
If Item.UserProperties("Rush") = True Then
strBody = strBody & vbCrLf & "RUSH!"
End If

Item.Body = strBody

End Sub
 
S

Sue Mosher [MVP-Outlook]

Then you'd set HTMLBody, not Body and your strBody would need to include all the HTML formatting you want to show.

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
S

Sue Mosher [MVP-Outlook]

strBody = "<p>Telephoned</p>" etc.

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
C

Corey H.

And this is for the text boxes?
In the To: field, the entry changes.
Same for the Company: field, and the Phone: field.
So the user of the form actually types the information into this text box
field.
I just want to take the final value of those fields and enter it into the
message body.

So is the vbscript still strBody = "<p>Telephoned</p>"?
 
S

Sue Mosher [MVP-Outlook]

No, that's just the snippet you don't seem to already have. <p></p> is the HTML element that creates a new paragraph. If you want a proper HTML message, you'd use that tag along with any desired formatting tags to build the final string, using the same technique you already know for getting Outlook property values. To get the right <font> tags, create text similar to what you want to show in an HTML editor and then take a look at the HTML source.

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
C

Corey H.

I'm not exactly sure why we're using html coding for this.
If you use the field chooser to drop the TO: field onto your form, it drops
the box for selecting addresses from your global if you're on exchange. And
drops the information you select from the global into the attached text box.
I need that attached text box information to be entered into the message box.

The other vbscripting for the checkboxes gets the information from an If >
then function. If "True", paste into the message area.
Where this would be "take this final value and paste it into the message
area".
I hope that makes sense.
 
S

Sue Mosher [MVP-Outlook]

I need that attached text box information to be entered into the message box.

If it's a message form, that information is in the Recipients collection. If it's a Post form, which has no Recipients collection, you'd need to use CDO 1.21 or, to avoid security prompts, Redemption to get to the recipients. Each recipient has a name and address.

You never said what kind of form this is, by the way.

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
C

Corey H.

Sue,
This is a "custom phone message form" as in the subject line.
When you start talking about CDO, Recipient collections, post form, etc,
it's all greek to me.
I'd take screen shots and send them to you so you could see what I'm dealing
with. But, I'm unable to paste into a text field on these responses.
If you go to the default "while you were out" form from Microsoft, and you
want to take the information from the fillable text fields and enter them
into the message body, how would you do it?
Corey
 
S

Sue Mosher [MVP-Outlook]

When you start talking about CDO, Recipient collections, post form, etc,
it's all greek to me.

Then you're probably going to need to learn more about basic Outlook programming. It's difficult for us to know what you don't know or what you need to know until you ask a specific question.
This is a "custom phone message form" as in the subject line.

As I said, in a message form, the details about the recipients in the "To" box are in the Item.Recipients collection. The Item.To property will give you only a display name or address -- whatever you see in the UI. What information do you want to extract and put in the message body? For example, this code snippet builds a string of the addresses for all recipients:

For Each recip in Item.Recipients
strAddr = strAddr & ";" & recip.Address
Next
strAddr = Mid(strAddr, 2)
If you go to the default "while you were out" form from Microsoft, and you
want to take the information from the fillable text fields and enter them
into the message body, how would you do it?

I would examine the controls to see what field each one is bound to and then write code to build a string from the values in those fields (or in unbound controls if that's what the form uses), just as you did in the code you originally posted.

If I wanted some fancy formatted HTML, I'd write functions that would allow me to input plain text and return formatted text. Only you, of course, know what kind of formatting you have in mind. There are many basic HTML tutorials on the Internet if you don't know anything about HTML formatting.

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
C

Corey H.

No disrespect, but I am asking a specific question

Hopefully my explanation here can make my question more understandable.

TO: ________________________________________

COMPANY : __________________________________

PHONE: _____________________________________

MESSAGE____________________________________
X X
X X
X X
X X
X X
X___________________________________________ X

Lets say that the above is the form. Where the underlines are there is a
text box in which you fill in the information. So say I wanted to collect
the information that was entered into the text box next to Phone, and the
text box next to Company. then have it submitted into the text box upon
hitting send, what would the vbscript need to look like? These are bound
text boxes.
 
S

Sue Mosher [MVP-Outlook]

The VBScript would look very much like what you posted in your original code, with the addition of the data from the extra fields that you have below (which we don't know the names of).

We've already covered a lot of ground on basic property syntax, HTML coding, extracting recipient names from the Recipients collection, etc. and your original code showed that you're on the right track. Is there some specific stumbling block that is preventing you from tying up the loose ends?
--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers


No disrespect, but I am asking a specific question

Hopefully my explanation here can make my question more understandable.

TO: ________________________________________

COMPANY : __________________________________

PHONE: _____________________________________

MESSAGE____________________________________
X X
X X
X X
X X
X X
X___________________________________________ X

Lets say that the above is the form. Where the underlines are there is a
text box in which you fill in the information. So say I wanted to collect
the information that was entered into the text box next to Phone, and the
text box next to Company. then have it submitted into the text box upon
hitting send, what would the vbscript need to look like? These are bound
text boxes.
 
C

Corey H.

Yes and here is the stumbling block.
After the TO: field, anyone can insert the name from Outlook or Exchange. I
don't know the coding because the text information entered varies from phone
call to phone call. So how can you enter that into your vbscript?

Wouldn't the coding be:
strBody1 = strbody1 & Item.UserProperties("Caller") &
Item.UserProperties("Companytext") & Item.UserProperties("Phonetext")
 
S

Sue Mosher [MVP-Outlook]

strBody1 = strbody1 & Item.UserProperties("Caller") &
Item.UserProperties("Companytext") & Item.UserProperties("Phonetext")

Yes, if Caller, Companytext, and Phonetext are the names of custom fields and you also have a statement to set the message body to the string you're building:

Item.Body = strBody1
After the TO: field, anyone can insert the name from Outlook or Exchange.

Maybe this is a dumb question, but why do you need the recipient information in the body of the message? It's going to be on the message anyway.

If there is a reason, then use the code I provided earlier:

For Each recip in Item.Recipients
strAddr = strAddr & ";" & recip.Address
Next
strAddr = Mid(strAddr, 2)

Or use recip.Name if you want the names. Or both if you want both.
--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
C

Corey H.

Well, the TO: field was just an example.
I'm just going to be using the Caller, Companytext and Phonetext. This is
in order for the Blackberries to see it. The only thing the BB see's on any
phone message form is the message box field.
Corey
 
S

Sue Mosher [MVP-Outlook]

You already know how to access the data from custom properties, given that you had in your original code statements like:

If Item.UserProperties("Rush") = True Then

and

strBody1 = strbody1 & Item.UserProperties("Caller") & Item.UserProperties("Companytext") & Item.UserProperties("Phonetext")

More questions?
--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
C

Corey H.

Being that the object variable is not set, does that mean that I have to set
each area because there is nothing inserted into the text box (i.e. "Caller",
"Phonetext") as a null value.

So I'm thinking it'd be
Set item.userproperties("Caller") = null
Set item.userproperties("Caller") = null
Set item.userproperties("Caller") = null
strBody1 = strbody1 & Item.UserProperties("Caller") &
Item.UserProperties("Companytext") & Item.UserProperties("Phonetext")
Item.Body=strBody1
 
S

Sue Mosher [MVP-Outlook]

You lost me. How does "object variable is not set" figure into this?

FYI, this is invalid syntax:

Set item.userproperties("Caller") = null

What are you trying to do with that statement?
--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
C

Corey H.

I don't know.
I feel like my head is going to explode. Maybe I'm making this way more
difficult than it is.

I figured that you can have thousands of variables for the text boxes.
Where when you set a checkbox, you have "checked = True", "unchecked = False"
This is where the if/then script comes in.

So you wouldn't be able to make an if / then for the text box, so you have
to tell it to take whatever values are in the text box and transfer it to the
message box.
I thought that's where the "set" would come in.
 
S

Sue Mosher [MVP-Outlook]

I feel like my head is going to explode. Maybe I'm making this way more
difficult than it is.

Yes, I agree that's probably the case. Some key ideas just don't seem to be sinking in. When they do, you'll probably feel a great sense of relief.
I figured that you can have thousands of variables for the text boxes.

Not likely for two reasons. First, a form that complex would blow up in your face.

But more importantly, you said you are using text boxes bound to Outlook properties. That means you have zero need to have any variables for any text boxes at all. You don't see any code related to text boxes below, do you? Stop thinking about text boxes, and start thinking about Outlook properties.
Where when you set a checkbox, you have "checked = True", "unchecked = False"

Not quite. You have it right in your earlier code:

If Item.UserProperties("WillCallAgain") = True Then

Item.UserProperties("WillCallAgain") returns the value of the custom property named "WillCallAgain." In the case of a Yes/No (Boolean) property, that value can be True or False, no other value. Checked and unchecked are just the way it usually looks in the user interface. True and False are the values that Outlook can actually return for such properties.
This is where the if/then script comes in.

In your original code, you made a good decision to use If ... Then statements to provide a text representation of that value, appropriate for each Yes/No property.

But what about text properties? If Caller is a text property, does Item.UserProperties("Caller") return True or False?

No, it returns the value of the text property, in other words, the text that the user typed into the text box that is bound to the Caller property. That's why I keep saying that you already know everything you need to know, as evidenced by the fact that you already put this together:

strBody1 = strbody1 & Item.UserProperties("Caller") & Item.UserProperties("Companytext") & Item.UserProperties("Phonetext")
So you wouldn't be able to make an if / then for the text box, so you have
to tell it to take whatever values are in the text box and transfer it to the
message box.

You ***don't need*** and if /then for the text box. See above. You already know what the text is.

More questions? You realize, don't you, that you never said where the "object variable is not set" comes up.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top