View Single Post
  #10   Report Post  
Posted to microsoft.public.excel.programming
Newbie Newbie is offline
external usenet poster
 
Posts: 13
Default Dynamic References to Word?

RBS,
I tried your macro but on the first line, c =
ActiveWorkbook.VBProject.References.Count
it bumps on the "Error # '1004' : the programming access to the Visual Basic
project is not reliable"
What is my problem?
Thanks again!



"RB Smissaert" a écrit dans le message de
...
The way to get those GUID's is like this:
First set the reference manually in the VBE under Tools, References.
Then run code like this:


Sub GetLibraryGUID()

Dim c As Byte
Dim myCheck As Long
Dim P As Boolean
Dim rng As Range
Dim i As Byte

c = ActiveWorkbook.VBProject.References.Count

On Error Resume Next
Dim Message, Title, Default, T As Single
Message = "NUMBER ?" & Chr(13) & "________"
Title = " GET REFERENCES GUID ( 1 TO " & c & " )"
Default = c
T = InputBox(Message, Title, Default, 3500, 3500)

If Not T Mod 1 = 0 Then
Exit Sub
End If

If T < 1 Or T c Then
Exit Sub
End If

MsgBox "REFERENCE ( " & T & " ) NAME : " & _
ActiveWorkbook.VBProject.References(T).Name & vbCrLf & vbCrLf &

_
"MAJOR : " & _
ActiveWorkbook.VBProject.References.Item(T).Major & _
vbCrLf & vbCrLf & "MINOR : " & _
ActiveWorkbook.VBProject.References.Item(T).Minor & _
vbCrLf & vbCrLf & _
"GUID ( " & T & " ) : " & _
ActiveWorkbook.VBProject.References.Item(T).GUID, , _
" REFERENCES GUID : ITEM " & T

myCheck = MsgBox(" PUT INFORMATION IN SHEET ?", _
vbYesNo, " GetLibraryGUID")

If myCheck = vbNo Then
Exit Sub
End If

If ActiveSheet.ProtectContents = True Then
P = True
ActiveSheet.Unprotect
Else
P = False
End If

Range(Cells(ActiveCell.Row, ActiveCell.Column), _
Cells(ActiveCell.Row + 3, ActiveCell.Column + 1)).Select

For Each rng In Selection.Cells
If Not IsEmpty(rng) Then
i = i + 1
End If
Next

If i 0 Then
myCheck = MsgBox(" OVERWRITE DATA IN THIS RANGE ?", _
vbYesNo, " GetLibraryGUID")
If myCheck = vbNo Then
Exit Sub
End If
End If

On Error Resume Next
ActiveCell.Value = "NAME :"
ActiveCell.Offset(1, 0).Value = "MAJOR :"
ActiveCell.Offset(2, 0).Value = "MINOR :"
ActiveCell.Offset(3, 0).Value = "GUID :"
ActiveCell.Offset(0, 1).Value = _
ActiveWorkbook.VBProject.References(T).Name
ActiveCell.Offset(1, 1).Value = _
ActiveWorkbook.VBProject.References.Item(T).Major
ActiveCell.Offset(2, 1).Value = _
ActiveWorkbook.VBProject.References.Item(T).Minor
ActiveCell.Offset(3, 1).Value = _
ActiveWorkbook.VBProject.References.Item(T).GUID

If P = True Then
ActiveSheet.Protect
End If

End Sub

That will give you all the information you need.
Keep in mind that you can do Major:=0, Minor:=0 to avoid a problem where

you
specified a higher version than the one on the user's machine.


RBS


"Newbie" wrote in message
...
Thanks a lot RBS !
Very useful!
PS : Where can I found all the GUID such as
"{00020905-0000-0000-C000-000000000046} ???
Thanks again



"RB Smissaert" a écrit dans le message

de
...
Yes, should work with all versions of Word as it does Major:=0,

Minor:=0.


To remove do this:

Sub RemoveWordReference()

RemoveReference "Word"

End Sub

Sub RemoveReference(strReference As String)

On Error GoTo ERROROUT

Dim R As Object

For Each R In ThisWorkbook.VBProject.References
If R.Name = strReference Then
ThisWorkbook.VBProject.References.Remove R
Exit Sub
End If
Next

ERROROUT:
On Error GoTo 0

End Sub

As it does Dim R As Object, rather than R as Reference you don't need a
reference to
Microsoft Visual Basic for Applications Extensibility.


RBS


"Newbie" wrote in message
...
Thanks a lot RB Smissaert !

1° - Does this procedure work if Word 2000 is installed as well with

Word
2003 installed?
2° - I need to remove the reference because another VBA procedure
(which
doesn't uses Word) hangs if the reference is still there!
Thanks again !

Newbie

"RB Smissaert" a écrit dans le

message
de
...
Sub ActivateWordLibrary()

Dim R

On Error Resume Next

'no need to carry on if the Word Object Library is already there
'---------------------------------------------------------------
For Each R In ThisWorkbook.VBProject.References
If R.GUID = "{00020905-0000-0000-C000-000000000046}" Then
Exit Sub
End If
Next

ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{00020905-0000-0000-C000-000000000046}", _
Major:=0, Minor:=0

On Error GoTo 0

End Sub

You can remove the reference after, but not really neccessary.

RBS


"Newbie" wrote in message
...
Hello
As the Late Binding seems very slow, I would like to create a

reference
on
Word 2000 or Word 2003 (Several PCs are running Office 2000, some
others
are
running Office 2003.
How can i create a Reference for Microsoft Word 9.0 or for

Microsoft
Word
11.0 (2000 and 2003)?
How to remove this Reference after the VBA procedure has done its

work?
Thanks