Solved

Documents.Add Does Not Return Document Object

Posted on 2009-05-12
1
748 Views
Last Modified: 2012-05-06
We have a macro that creates a new document from a template and then "does stuff" with the resulting document. This used to work fine.

Today, without any apparent cause, the code throws an error. Stepping through the code, I can see that everything works fine, up until the point where I accept the returned object from Documents.Add into a Document variable and try to use that variable (see code). The document is created perfectly, the frmLetter form displays and is processed properly, and all the code in frmLetter runs without error. The end result is an open Letter document, processed like we expect Letter.dot to do.

It's only after the code returns from the call to Documents.Add that the weirdness starts. Apparently, the Documents.Add call does not return an object here.

Any ideas on what might cause this weird behaviour?
'Macro in standard module:
Public Sub CreateLetter()
   Dim doc As Word.Document
   Set doc = Application.Documents.Add(strWorkgroup & "Letter.dot")
   ' "Do stuff" with the resulting document:
   Call MsgBox(doc.Name) '--> RTE: Object variable or with block variable not Set
                         '    and stepping through the code, I can see that
                         '    the doc variable is indeed Nothing
End Sub
 
'Event in Letter.dot:
Private Sub Document_New()
   Dim f As frmLetter
   Set f = New frmLetter
   With f
      Set .CurrentDocument = ActiveDocument
      .Show
      'After cmdOK_Click, frmLetter processes its CurrentDocument correctly
   End With
   Set f = Nothing
End Sub

Open in new window

0
Comment
Question by:FlorisMK
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 2

Accepted Solution

by:
FlorisMK earned 0 total points
ID: 24364159
Solved:

One of the things that cmdOK_Click does is open, read, and close our central repository template (which contains our house style Styles and AutoText entries). Apparently, opening another document from within the Documents.Add runtime scope breaks the reference to the newly created document.

Working with ActiveDocument instead of using the return object from Add solves the issue. I don't like the solution, because with taskbar buttons and fidgety users you can't always rely on ActiveDocument, but it's the best I can do in this situation.

Edited the code to read:


'Macro in standard module:
Public Sub CreateLetter()
   Dim doc As Word.Document
   Call Application.Documents.Add(strWorkgroup & "Letter.dot")
   ' "Do stuff" with the resulting document:
   Set doc = ActiveDocument
   Call MsgBox(doc.Name) '--> NO RTE, Doc is set
End Sub

Open in new window

0

Featured Post

Enroll in May's Course of the Month

May’s Course of the Month is now available! Experts Exchange’s Premium Members and Team Accounts have access to a complimentary course each month as part of their membership—an extra way to increase training and boost professional development.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
ms office troubleshooting for users 8 51
Help with a Crystal Formula 6 43
Highlighing Footnote numbers in text. 2 44
Simple IF statement in Word 4 53
Introduction Authors who set out to write any sort of lengthy piece for online submission—be it a long question or comment on a technical form, an article, or a substantial blog entry—often find it useful to work up a draft in an editor other t…
If you work with Word a lot, you probably use styles. If you use styles a lot, you've probably balled your fist more often than not when working with the ribbon. In Word 2007/2010, one of the things that I find missing when using styles is a quic…
The viewer will learn how to make their project stand out over others by learning how to change colors and shapes, add spaces, change directions, and add bullets to their charts.
This video walks the viewer through the process of creating Hyperlinks for the web and other documents. Select the "Insert" tab: Click "Hyperlink":  Type "http://" followed by a web address to reference a website or navigate to a document to ref…

739 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