Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 294
  • Last Modified:

issue where when the font is different at the point of insertion, it types out in that font and size

I had previously tested it just in a new task and it worked fine.

However, when I have gone to some existing tasks, where inadvertently ( not deliberately! ) the standard font is different, then when I run the macro, to insert the day and time, it inserts the day and time, but in the font that is at that point in the task and then changes it to Arial, 12 etc . . .

Is it possible to alter the code, to allow for this?
0
troy_g
Asked:
troy_g
  • 3
  • 2
1 Solution
 
Chris BottomleyCommented:
The bit below does not change the general body text ... is that what you want?

Chris
Sub InsertAndFormatText()
    Const wdColorBlue = 16711680
    Dim olkTask As Outlook.TaskItem, _
        objDoc As Object, _
        objSel As Object, _
        strTime As String, _
        intStart As Integer, _
        intLen As Integer
    Set olkTask = Outlook.Application.ActiveInspector.CurrentItem
    Set objDoc = olkTask.GetInspector.WordEditor
    strTime = Format(Now, "ddd dd/m/yy h:mm AM/PM - ")
    intLen = Len(strTime)
    Set objSel = objDoc.Windows(1).Selection
    intStart = objSel.Start
    objSel.InsertAfter strTime
    objDoc.Windows(1).Document.Range(intStart, intStart + intLen).Select
    Set objSel = objDoc.Windows(1).Selection
    With objSel
        .Font.Bold = True
        .Font.Color = wdColorBlue
    End With
    objDoc.Windows(1).Document.Range(intStart + intLen - 1, intStart + intLen + 1).Select
'    Set objSel = objDoc.Windows(1).Selection
'    With objSel
'        .Font.Name = "Arial"
'        .Font.Size = 12
'        .Font.Bold = False
'        .Font.Color = wdColorAutomatic
'    End With
    Set olkTask = Nothing
    Set objDoc = Nothing
    Set objSel = Nothing
End Sub 
Open in New Window Select All 

Open in new window

0
 
troy_gAuthor Commented:
Hi Chris - thanks so much for your response, this doesn't do exactly as i need.

If you go into an empty task in Outlook and change the font and size for the line you are on as an example and then run this Macro, it will type out the Date & Time in that font and size, whereas i am just needing a standard format like Arial, Point Size 12, Bold  & Blue text.  Then, after the '-' ( ie. at the end of the date / time stamp ) i just need need it to take off the Bold and Blue part and just have typing show up as Arial & Size 12 Font.

Hope this makes sense ? Thanks so much for assisting and please let me know if you need any further info . . .
0
 
Chris BottomleyCommented:
If I understand correctly then More like this?

Chris
Sub InsertAndFormatText()
    Const wdColorBlue = 16711680
    Dim olkTask As Outlook.TaskItem, _
        objDoc As Object, _
        objSel As Object, _
        strTime As String, _
        intStart As Integer, _
        intLen As Integer
    Set olkTask = Outlook.Application.ActiveInspector.CurrentItem
    Set objDoc = olkTask.GetInspector.WordEditor
    strTime = Format(Now, "ddd dd/m/yy h:mm AM/PM - ")
    intLen = Len(strTime)
    Set objSel = objDoc.Windows(1).Selection
    intStart = objSel.Start
    objSel.InsertAfter strTime
    Set objSel = objDoc.Windows(1).document.range
    With objSel
        .Font.Name = "Arial"
        .Font.Size = 12
        .Font.Bold = False
        .Font.Color = wdColorAutomatic
    End With
    objDoc.Windows(1).Document.Range(intStart, intStart + intLen).Select
    Set objSel = objDoc.Windows(1).Selection
    With objSel
        .Font.Bold = True
        .Font.Color = wdColorBlue
    End With
    objDoc.Windows(1).Document.Range(intStart + intLen - 1, intStart + intLen + 1).Select
    Set olkTask = Nothing
    Set objDoc = Nothing
    Set objSel = Nothing
End Sub 

Open in new window

0
 
Chris BottomleyCommented:
Looking at the previous one you want a hard return after the time post, so the following makes that correction

Chris
Sub InsertAndFormatText()
    Const wdColorBlue = 16711680
    Dim olkTask As Outlook.TaskItem, _
        objDoc As Object, _
        objSel As Object, _
        strTime As String, _
        intStart As Integer, _
        intLen As Integer
    Set olkTask = Outlook.Application.ActiveInspector.CurrentItem
    Set objDoc = olkTask.GetInspector.WordEditor
    strTime = Format(Now, "ddd dd/m/yy h:mm AM/PM - ")
    intLen = Len(strTime)
    Set objSel = objDoc.Windows(1).Selection
    intStart = objSel.Start
    objSel.InsertAfter strTime & vbCrLf
    Set objSel = objDoc.Windows(1).Document.Range
    With objSel
        .Font.Name = "Arial"
        .Font.Size = 12
        .Font.Bold = False
        .Font.Color = wdColorAutomatic
    End With
    objDoc.Windows(1).Document.Range(intStart, intStart + intLen).Select
    Set objSel = objDoc.Windows(1).Selection
    With objSel
        .Font.Bold = True
        .Font.Color = wdColorBlue
    End With
    objDoc.Windows(1).Document.Range(intStart + intLen - 1, intStart + intLen + 1).Select
    Set olkTask = Nothing
    Set objDoc = Nothing
    Set objSel = Nothing
End Sub

Open in new window

0
 
troy_gAuthor Commented:
thanks heaps Chris, that is fantastic, and works, appreciate it !
0

Featured Post

Get your Conversational Ransomware Defense e‑book

This e-book gives you an insight into the ransomware threat and reviews the fundamentals of top-notch ransomware preparedness and recovery. To help you protect yourself and your organization. The initial infection may be inevitable, so the best protection is to be fully prepared.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now