Create watermark in word with vba from access

Posted on 2008-10-09
Last Modified: 2012-08-13
I have an access database that is pushing a lot of information into a word doc using bookmarks in the word doc.  The last thing i need to do is insert a watermark into the document if a condition exists.  The conditional part is easy, what i am having problems with is just inserting the watermark.  I can record the macro and have that work from within word but i want to run it all from access with no macro in the word doc.  I'm sure its getting lost somewhere in the activedocument. lines but I am just beating my head against a wall at this point. The watermark ideally is angled text that will repeat on all pages. Thanks

with doc.
          ' Populating word doc
end with
Question by:rkremser
LVL 17

Assisted Solution

wobbled earned 50 total points
ID: 22679252
I have almost got this to work - but I get an error on the line:


If anyone else can see what is causing this then please help out
Sub WordDocFromExcel()

' to test this code, paste it into an Excel module add a reference to the Word-library

' create a new folder named C:\Foldername or edit the filnames in the code

Dim wrdApp As Word.Application

Dim wrdDoc As Word.Document

Dim wrdWin As Object

Dim i As Integer

    Set wrdApp = CreateObject("Word.Application")

    wrdApp.Visible = True

    Set wrdDoc = wrdApp.Documents.Add ' create a new document

    Set wrdWin = wrdApp.ActiveWindow

    ' or

    'Set wrdDoc = wrdApp.Documents.Open("C:\Foldername\Filename.doc")

    ' open an existing document

    ' example word operations

    With wrdDoc

        For i = 1 To 100

            .Content.InsertAfter "Here is a example test line #" & i


        Next i



        wrdWin.ActivePane.View.SeekView = wdSeekCurrentPageHeader




        With Selection.ShapeRange

            .TextEffect.Text = "ASAP"

            .TextEffect.FontSize = 1

            .TextEffect.FontName = "Times New Roman"

            .Line.Visible = False

            .Fill.Visible = True


            .Fill.ForeColor.RGB = RGB(192, 192, 192)

            .Fill.Transparency = 0.5

            .Rotation = 315

            .LockAspectRatio = True

            .Height = CentimetersToPoints(6.88)

            .Width = CentimetersToPoints(13.77)

            .WrapFormat.AllowOverlap = True

            .WrapFormat.Side = wdWrapNone

            .WrapFormat.Type = 3

            .RelativeHorizontalPosition = _


            .RelativeVerticalPosition = _


            .Left = wdShapeCenter

            .Top = wdShapeCenter

        End With

            wrdWin.ActivePane.View.SeekView = wdSeekMainDocument


        If Dir("C:\Foldername\MyNewWordDoc.doc") <> "" Then

            Kill "C:\Foldername\MyNewWordDoc.doc"

        End If

        .SaveAs ("C:\Foldername\MyNewWordDoc.doc")

        .Close ' close the document

    End With


    wrdApp.Quit ' close the Word application


    Set wrdDoc = Nothing

    Set wrdApp = Nothing

    Set wrdWin = Nothing

End Sub

Open in new window


Accepted Solution

zipa72 earned 75 total points
ID: 22679555

I've created a sample how to create new Word document from Access, insert picture into header of that document, change properties for watermark, change position of the picture, close the document and dispose of objects (don't forget to do that!)


Sub test()

  Dim ap As New Word.Application

  Dim doc As Word.Document

  ' create new word document

  Set doc = ap.Documents.Add(, , , Visible)

  ' insert picture in document header

  ap.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader

  ap.Selection.InlineShapes.AddPicture FileName:="somepicture.gif", _

      LinkToFile:=False, SaveWithDocument:=True

  ap.Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend

  ' make watermark

  ap.Selection.InlineShapes(1).PictureFormat.Brightness = 0.85

  ap.Selection.InlineShapes(1).PictureFormat.Contrast = 0.15

  ' convert from inlineshape to shape and set position


  ap.Selection.ShapeRange.Top = 150

  ap.Selection.ShapeRange.Left = 150

  ' return from header view

  ap.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

  ' clean up

  doc.SaveAs "test.doc"


  Set doc = Nothing

  Set ap = Nothing

End Sub

Open in new window


Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I'm writing to share my clumsy experience in using this elegant tool so you can avoid every stupid mistake I made. (I leave it to the authorities to decide if this deserves a place in the Knowledge archives.)  Now that I am on the other side of my l…
Introduction This tutorial provides instructions on how to properly format your Word document using the inbuilt tools provided. The benefits of using these tools means your documents are more accessible and easily portable to other applications an…
Using Microsoft Access, learn some simple rules for how to construct tables in a relational database. Split up all multi-value fields into single values: Split up fields that belong to other things into separate tables: Make sure that all record…
This Micro Tutorial well show you how to find and replace special characters in Microsoft Word. This is similar to carriage returns to convert columns of values from Microsoft Excel into comma separated lists.

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now