Posted to microsoft.public.excel.programming
|
|
Macro references
You could set preference to word, then look it up in the object browser.
--
---
HTH
Bob
(change the xxxx to gmail if mailing direct)
"Dave Shaw" wrote in message
...
Bob
Thanks for that.....
I am using the same version as the other users so that isn't the problem
however your method seems to work.
However I'm not brilliant with Visual basic and am struggling a bit. An
extract of my current problem is that I don't know how I should I should
code
certain parts - the wdFormLetters wdtoggle etc. as these result in the
error
message.
hope you can help!
An extract of my script is:
Dim wrdApp As Object
Dim wrdDoc As Object
Set wrdApp = CreateObject("Word.Application")
Dim i As Integer
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Add(Template:=sourcedoc _
, newtemplate:=False, DocumentType:=0)
With wrdDoc
wrdDoc.MailMerge.MainDocumentType = wdFormLetters
wrdDoc.MailMerge.OpenDataSource Name:= _
SourceName _
, ConfirmConversions:=False, ReadOnly:=False,
LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="",
PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:=False, _
Format:=wdOpenFormatAuto, Connection:="DSN=Excel Files;DBQ=" &
ThisWorkbook.FullName & ";DriverId=790;MaxBufferSize=2048;PageTimeout= 5;",
SQLStatement:="SELECT * FROM `Database`", _
SQLStatement1:=""
wrdDoc.MailMerge.EditMainDocument
wrdDoc.MailMerge.ViewMailMergeFieldCodes = wdToggle
wrdDoc.CommandBars("Mail Merge").Visible = False
wrdDoc.Select
With wrdDoc.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
wrdDoc.MailMerge.Application.Documents(1).SaveAs Filename:=savename,
FileFormat:=wdFormatDocument
End With
wrdDoc.Close SaveChanges:=wdDoNotSaveChanges
wrdApp.Quit
"Bob Phillips" wrote:
The problem probably stems from the fact that you have a later version of
Word/Outlook than the users.
Solution 1: do you have a copy of the same version, and can you build the
macros in that version?
Solution 2: have you heard of late binding. Late binding binds to the
object
library at run time, not at compile time, so it will pick up whatever
library that they have. You have to code differently, for instance,
instead
of
Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
you would use
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
it also means that you cannot use application constants, you have to hard
code them. I have written a small paper on a technique, written for
Outlook
but the technique is generic, which you can read at
http://xldynamic.com/source/xld.EarlyLate.html
--
---
HTH
Bob
(change the xxxx to gmail if mailing direct)
"Dave Shaw" wrote in message
...
I'm tearing my hair out here. I have an Excel Template containing
macros
which do things using word and outlook. I have therefore added the
relevant
references.
When a user creates a new file using the template and a macro is run
the
message "can't find project of library" occurs. The references seem to
be
there but the problem occurs on every line.
Can anyone tell me how to rectify this? it is not feasible to make
adjustments to individual's machines.
thanks in advance
|