![]() |
|
#1
|
|||
|
|||
|
I have tried to follow the directions for using Outlook's (2010) VBA, provided here http://www.slipstick.com/developer/h...ks-vba-editor/, but am running into problems. This simple macro, the same as Word's, placed in my QAT, is not working. Code:
Sub PasteUnformatted()
'
' PasteUnformatted Macro
'
'
Selection.PasteSpecial Link:=False, DataType:=wdPasteText
End Sub
In Word, I have set [Alt+Ctrl+V] to run the above macro, and I'd like to be able to do that in Outlook messages. I can't find a way to create keyboard shortcuts, except for forum posts on Autohotkey, that appear to involve potential issues and registry editing. Also, if I can get copy and paste formatting (Ctrl+Shift+C and Ctrl+Shift+V) onto the QAT, the Alt+number shortcuts would be fine, as a substitute for these Word shortcuts. Help would be appreciated. |
|
#2
|
|||
|
|||
|
The code in Outlook looks more like this. Untested.
Code:
Option Explicit
Public Sub PasteUnformatted()
Dim oDoc As Object
Dim itm As Object
Dim objSel As Word.Selection
On error resume next
Set itm = Application.ActiveInspector.CurrentItem
on error goto 0
if itm is nothing then
msgbox "Something wrong with current item"
exit sub
end if
If itm.GetInspector.EditorType = olEditorWord Then
Set oDoc = itm.GetInspector.WordEditor
Set objSel = objDoc.Windows(1).Selection
objSel.PasteSpecial Link:=False, DataType:=wdPasteText
End If
End Sub
|
|
#3
|
|||
|
|||
|
Thank you for providing the macro. I tried it, but it returned this line
Code:
Set objSel = objDoc.Windows(1).Selection Any ideas? |
|
#4
|
|||
|
|||
|
I did add Dim objSel As Word.Selection. But this may still not be enough.
This link provides details. http://www.slipstick.com/developer/w...outlook-email/ Code:
Public Sub FormatSelectedText()
Dim objItem As Object
Dim objInsp As Outlook.Inspector
' Add reference to Word library
' in VBA Editor, Tools, References
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objSel As Word.Selection
'On Error Resume Next ' <--- Do not use this unless you have a specific purpose
'Reference the current Outlook item
Set objItem = Application.ActiveInspector.currentItem
If Not objItem Is Nothing Then
If objItem.Class = olMail Then
Set objInsp = objItem.GetInspector
If objInsp.EditorType = olEditorWord Then
Set objDoc = objInsp.WordEditor
Set objWord = objDoc.Application
Set objSel = objWord.Selection
' replace the With block with your code
With objSel
' Formatting code goes here
.Font.Color = wdColorBlue
.Font.Size = 18
.Font.Bold = True
.Font.Italic = True
.Font.Name = "Arial"
End With
End If
End If
End If
Set objItem = Nothing
Set objWord = Nothing
Set objSel = Nothing
Set objInsp = Nothing
End Sub
|
|
#5
|
|||
|
|||
|
Thank you again; I do appreciate your time and talent. I am entirely novice in VBA; I had no idea this would be so involved, since it is so easy in Word.
It appears to me from the new code you have provided, that instead of pasting unformatted to paste copied text to adopt the style of my recipient paragraph, I am applying a specific formatting that is inflexible. Is this a correct reading? If so, and since I can paste unformatted via the Ribbon, as in Word (in Outlook: Format text/Paste/Paste special/Unformatted text), is there not a way to trigger this same command in a macro? |
|
#6
|
||||
|
||||
|
Returning to the original premise which was, I believe, to paste unformatted text into the body of an e-mail message, the code you need for that is as follows. Note that it only works if the cursor is in the body of the message.
Code:
Sub PasteUnfText()
On Error GoTo ErrHandler
If TypeName(ActiveWindow) = "Inspector" Then
If ActiveInspector.IsWordMail And ActiveInspector.EditorType = olEditorWord Then
ActiveInspector.WordEditor.Application.Selection.PasteSpecial DataType:=2 ' wdPasteText
End If
End If
Exit Sub
ErrHandler:
Beep
End Sub
Graham Mayor MS MVP(Word) www.gmayor.com |
|
#7
|
|||
|
|||
|
Bravo! Thank you very much.
|
|
#8
|
|||
|
|||
|
Where you see
Code:
' replace the With block with your code
With objSel
' Formatting code goes here
.Font.Color = wdColorBlue
.Font.Size = 18
.Font.Bold = True
.Font.Italic = True
.Font.Name = "Arial"
End With
Code:
objSel.PasteSpecial Link:=False, DataType:=wdPasteText Code:
Public Sub PasteUnformatted_OutlookVersion()
Dim objItem As Object
Dim objInsp As Outlook.Inspector
' Add reference to Word library
' in VBA Editor, Tools, References
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objSel As Word.Selection
'On Error Resume Next ' <--- Do not use this unless you have a specific purpose
'Reference the current Outlook item
Set objItem = Application.ActiveInspector.CurrentItem
If Not objItem Is Nothing Then
If objItem.Class = olMail Then
Set objInsp = objItem.GetInspector
If objInsp.EditorType = olEditorWord Then
Set objDoc = objInsp.WordEditor
Set objWord = objDoc.Application
Set objSel = objWord.Selection
objSel.PasteSpecial Link:=False, DataType:=wdPasteText
End If
End If
End If
Set objItem = Nothing
Set objWord = Nothing
Set objSel = Nothing
Set objInsp = Nothing
End Sub
|
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| EXCEL macro problem please help! | ryguy551 | Excel Programming | 2 | 05-22-2014 03:58 PM |
| Problem with macro | MS baby | Excel Programming | 4 | 03-31-2014 02:47 PM |
Problem with macro
|
tmill29 | Excel Programming | 1 | 06-08-2013 09:59 AM |
Moving data macro problem
|
MattMurdock | Excel Programming | 1 | 07-20-2012 04:49 AM |
Another simple macro problem
|
Ulodesk | Word VBA | 1 | 06-08-2012 06:24 PM |