Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.word.docmanagement
|
|||
|
|||
How do I Select an Object with VBA?
I am trying to learn how to Select an object in a Word doc via VBA.
Let me give you an example. First - I know that I can insert this particular object as an Icon linked to the file, but if someone can tell me why this conversion code doesn't work, I'm hoping I'll learn something about selecting objects via VBA. In other words, this question isn't about the best way to convert an object, it's about how to select an object. OK, so I have a new document open. I start the recorder and then perform these steps: 1 - Go to my desktop 2 - Right click a PDF document and select Copy 3 - Go back into the document and use Edit...Paste 4 - Right-click the object and use the PDF Convert option to create a PDF Icon 5 - Stop the recorder This produces the following code: Sub ConvertToIcon() Application.WindowState = wdWindowStateNormal Selection.Paste ActiveDocument.Shapes("Object 2").Select If Selection.Type wdSelectionShape Then Selection.InlineShapes(1).ConvertToShape.Select End If Selection.ShapeRange(1).OLEFormat.ConvertTo ClassType:= _ "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44- A90000000001}\PDFFile_8.ico" _ , IconIndex:=0, IconLabel:="Acrobat Document" End Sub Now here's the problem: If I copy another PDF and then run this code, I get an error related to the object not being found, or it tries to convert the same object over again, etc. Depending on what I've done before I run the code, the error will change. It's obvious that it is not selecting the most recently pasted object because "Object 2" is hard coded. How do I get the code to select the last object that was pasted without actually knowing what number that object is? Thanks. |
#2
Posted to microsoft.public.word.docmanagement
|
|||
|
|||
How do I Select an Object with VBA?
DD,
In this case you would probably just select the shape in the document and then run: Sub Test() Dim oILShape As InlineShape Set oILShape = Selection.InlineShapes(1) oILShape.OLEFormat.ConvertTo ClassType:= _ "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44-A90000000001}\PDFFile.ico", IconIndex:=0, IconLabel:="Acrobat Document" End Sub The recorded often adds a lot of superfilous fluff. E.g., there is no need to covert an InLineShape to a Shape before converting again. Easier yet would probably be to simply use EditPaste Special and paste as an icon. "DerbyDad03" wrote: I am trying to learn how to Select an object in a Word doc via VBA. Let me give you an example. First - I know that I can insert this particular object as an Icon linked to the file, but if someone can tell me why this conversion code doesn't work, I'm hoping I'll learn something about selecting objects via VBA. In other words, this question isn't about the best way to convert an object, it's about how to select an object. OK, so I have a new document open. I start the recorder and then perform these steps: 1 - Go to my desktop 2 - Right click a PDF document and select Copy 3 - Go back into the document and use Edit...Paste 4 - Right-click the object and use the PDF Convert option to create a PDF Icon 5 - Stop the recorder This produces the following code: Sub ConvertToIcon() Application.WindowState = wdWindowStateNormal Selection.Paste ActiveDocument.Shapes("Object 2").Select If Selection.Type wdSelectionShape Then Selection.InlineShapes(1).ConvertToShape.Select End If Selection.ShapeRange(1).OLEFormat.ConvertTo ClassType:= _ "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44- A90000000001}\PDFFile_8.ico" _ , IconIndex:=0, IconLabel:="Acrobat Document" End Sub Now here's the problem: If I copy another PDF and then run this code, I get an error related to the object not being found, or it tries to convert the same object over again, etc. Depending on what I've done before I run the code, the error will change. It's obvious that it is not selecting the most recently pasted object because "Object 2" is hard coded. How do I get the code to select the last object that was pasted without actually knowing what number that object is? Thanks. |
#3
Posted to microsoft.public.word.docmanagement
|
|||
|
|||
How do I Select an Object with VBA?
Define a range eg as your code
Dim orng As Range Set orng = Selection.Range 'define a range at the insertion point orng.Paste 'paste into that range orng.Select 'select the range 'now you can operate on the selection If Selection.Type wdSelectionShape Then Selection.InlineShapes(1).ConvertToShape.Select End If Selection.ShapeRange(1).OLEFormat.ConvertTo ClassType:= _ "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44-A90000000001}\PDFFile_8.ico" _ , IconIndex:=0, IconLabel:="Acrobat Document" or if the default paste mode is in-line Dim orng As Range Set orng = Selection.Range 'define a range at the insertion point With orng .Paste 'paste into that range 'and work with the range rather than the selection .InlineShapes(1).OLEFormat.ConvertTo ClassType:= _ "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44-A90000000001}\PDFFile_8.ico" _ , IconIndex:=0, IconLabel:="Acrobat Document" .InlineShapes(1).ConvertToShape 'Are you sure? End With -- Graham Mayor - Word MVP My web site www.gmayor.com Word MVP web site http://word.mvps.org -- Graham Mayor - Word MVP My web site www.gmayor.com Word MVP web site http://word.mvps.org DerbyDad03 wrote: I am trying to learn how to Select an object in a Word doc via VBA. Let me give you an example. First - I know that I can insert this particular object as an Icon linked to the file, but if someone can tell me why this conversion code doesn't work, I'm hoping I'll learn something about selecting objects via VBA. In other words, this question isn't about the best way to convert an object, it's about how to select an object. OK, so I have a new document open. I start the recorder and then perform these steps: 1 - Go to my desktop 2 - Right click a PDF document and select Copy 3 - Go back into the document and use Edit...Paste 4 - Right-click the object and use the PDF Convert option to create a PDF Icon 5 - Stop the recorder This produces the following code: Sub ConvertToIcon() Application.WindowState = wdWindowStateNormal Selection.Paste ActiveDocument.Shapes("Object 2").Select If Selection.Type wdSelectionShape Then Selection.InlineShapes(1).ConvertToShape.Select End If Selection.ShapeRange(1).OLEFormat.ConvertTo ClassType:= _ "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44- A90000000001}\PDFFile_8.ico" _ , IconIndex:=0, IconLabel:="Acrobat Document" End Sub Now here's the problem: If I copy another PDF and then run this code, I get an error related to the object not being found, or it tries to convert the same object over again, etc. Depending on what I've done before I run the code, the error will change. It's obvious that it is not selecting the most recently pasted object because "Object 2" is hard coded. How do I get the code to select the last object that was pasted without actually knowing what number that object is? Thanks. |
#4
Posted to microsoft.public.word.docmanagement
|
|||
|
|||
How do I Select an Object with VBA?
Graham,
Thanks for the rsponse, but I may be missing something. I pasted both sets of code into the VBA editor, as is, and got the same error message at the lines containing InlineShapes(1) Run-time error '5941' The requested member of the collection does not exist. Is there something I should be editing? I was also wondering if there is way to access the object while it is still on the clipboard. That way there would be no way VBA would be confused about what object I am trying to work on. On Mar 1, 3:00*am, "Graham Mayor" wrote: Define a range eg as your code Dim orng As Range Set orng = Selection.Range 'define a range at the insertion point orng.Paste 'paste into that range orng.Select 'select the range 'now you can operate on the selection If Selection.Type wdSelectionShape Then * * Selection.InlineShapes(1).ConvertToShape.Select End If Selection.ShapeRange(1).OLEFormat.ConvertTo ClassType:= _ * * "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ * * "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44-A90000000001}\PDFFile_8.ico" _ * * , IconIndex:=0, IconLabel:="Acrobat Document" or if the default paste mode is in-line Dim orng As Range Set orng = Selection.Range 'define a range at the insertion point With orng * * .Paste 'paste into that range * * 'and work with the range rather than the selection * * .InlineShapes(1).OLEFormat.ConvertTo ClassType:= _ * * "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ * * "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44-A90000000001}\PDFFile_8.ico" _ * * , IconIndex:=0, IconLabel:="Acrobat Document" * * .InlineShapes(1).ConvertToShape 'Are you sure? End With -- Graham Mayor - *Word MVP My web sitewww.gmayor.com Word MVP web sitehttp://word.mvps.org -- Graham Mayor - *Word MVP My web sitewww.gmayor.com Word MVP web sitehttp://word.mvps.org DerbyDad03 wrote: I am trying to learn how to Select an object in a Word doc via VBA. Let me give you an example. First - I know that I can insert this particular object as an Icon linked to the file, but if someone can tell me why this conversion code doesn't work, I'm hoping I'll learn something about selecting objects via VBA. In other words, this question isn't about the best way to convert an object, it's about how to select an object. OK, so I have a new document open. I start the recorder and then perform these steps: 1 - Go to my desktop 2 - Right click a PDF document and select Copy 3 - Go back into the document and use Edit...Paste 4 - Right-click the object and use the PDF Convert option to create a PDF Icon 5 - Stop the recorder This produces the following code: Sub ConvertToIcon() * *Application.WindowState = wdWindowStateNormal * *Selection.Paste * *ActiveDocument.Shapes("Object 2").Select * *If Selection.Type wdSelectionShape Then * * * *Selection.InlineShapes(1).ConvertToShape.Select * *End If * *Selection.ShapeRange(1).OLEFormat.ConvertTo ClassType:= _ * * * *"AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ * * * *"C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44- A90000000001}\PDFFile_8.ico" _ * * * *, IconIndex:=0, IconLabel:="Acrobat Document" End Sub Now here's the problem: *If I copy another PDF and then run this code, I get an error related to the object not being found, or it tries to convert the same object over again, etc. Depending on what I've done before I run the code, the error will change. It's obvious that it is not selecting the most recently pasted object because "Object 2" is hard coded. How do I get the code to select the last object that was pasted without actually knowing what number that object is? Thanks. |
#5
Posted to microsoft.public.word.docmanagement
|
|||
|
|||
How do I Select an Object with VBA?
I will try again since you have apparently not seen my reply on 28 Feb
that is showing up in the Office Online Discussion groups but not here. In this case you would probably just select the shape in the document and then run: Sub Test() Dim oILShape As InlineShape Set oILShape = Selection.InlineShapes(1) oILShape.OLEFormat.ConvertTo ClassType:= _ "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44- A90000000001}\PDFFile.ico", IconIndex:=0, IconLabel:="Acrobat Document" End Sub The recorded often adds a lot of superfilous fluff. E.g., there is no need to covert an InLineShape to a Shape before converting to a icon. Easier yet would probably be to simply use EditPaste Special and paste as an icon. On Feb 28, 1:41*pm, DerbyDad03 wrote: I am trying to learn how to Select an object in a Word doc via VBA. Let me give you an example. First - I know that I can insert this particular object as an Icon linked to the file, but if someone can tell me why this conversion code doesn't work, I'm hoping I'll learn something about selecting objects via VBA. In other words, this question isn't about the best way to convert an object, it's about how to select an object. OK, so I have a new document open. I start the recorder and then perform these steps: 1 - Go to my desktop 2 - Right click a PDF document and select Copy 3 - Go back into the document and use Edit...Paste 4 - Right-click the object and use the PDF Convert option to create a PDF Icon 5 - Stop the recorder This produces the following code: Sub ConvertToIcon() * * Application.WindowState = wdWindowStateNormal * * Selection.Paste * * ActiveDocument.Shapes("Object 2").Select * * If Selection.Type wdSelectionShape Then * * * * Selection.InlineShapes(1).ConvertToShape.Select * * End If * * Selection.ShapeRange(1).OLEFormat.ConvertTo ClassType:= _ * * * * "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ * * * * "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44- A90000000001}\PDFFile_8.ico" _ * * * * , IconIndex:=0, IconLabel:="Acrobat Document" End Sub Now here's the problem: *If I copy another PDF and then run this code, I get an error related to the object not being found, or it tries to convert the same object over again, etc. Depending on what I've done before I run the code, the error will change. It's obvious that it is not selecting the most recently pasted object because "Object 2" is hard coded. How do I get the code to select the last object that was pasted without actually knowing what number that object is? Thanks. |
#6
Posted to microsoft.public.word.docmanagement
|
|||
|
|||
How do I Select an Object with VBA?
Thank you for the response.
Actually, just recording the Paste-Special operation works and is repeatable. The only thing missing is that the IconLabel simply says Adobe Acrobat Document. Is there any way to set the IconLabel to the original file name? On Mar 1, 1:58*pm, Greg Maxey wrote: I will try again since you have apparently not seen my reply on 28 Feb that is showing up in the Office Online Discussion groups but not here. In this case you would probably just select the shape in the document and then run: Sub Test() Dim oILShape As InlineShape Set oILShape = Selection.InlineShapes(1) oILShape.OLEFormat.ConvertTo ClassType:= _ "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44- A90000000001}\PDFFile.ico", IconIndex:=0, IconLabel:="Acrobat Document" End Sub The recorded often adds a lot of superfilous fluff. E.g., there is no need to covert an InLineShape to a Shape before converting to a icon. Easier yet would probably be to simply use EditPaste Special and paste as an icon. On Feb 28, 1:41*pm, DerbyDad03 wrote: I am trying to learn how to Select an object in a Word doc via VBA. Let me give you an example. First - I know that I can insert this particular object as an Icon linked to the file, but if someone can tell me why this conversion code doesn't work, I'm hoping I'll learn something about selecting objects via VBA. In other words, this question isn't about the best way to convert an object, it's about how to select an object. OK, so I have a new document open. I start the recorder and then perform these steps: 1 - Go to my desktop 2 - Right click a PDF document and select Copy 3 - Go back into the document and use Edit...Paste 4 - Right-click the object and use the PDF Convert option to create a PDF Icon 5 - Stop the recorder This produces the following code: Sub ConvertToIcon() * * Application.WindowState = wdWindowStateNormal * * Selection.Paste * * ActiveDocument.Shapes("Object 2").Select * * If Selection.Type wdSelectionShape Then * * * * Selection.InlineShapes(1).ConvertToShape.Select * * End If * * Selection.ShapeRange(1).OLEFormat.ConvertTo ClassType:= _ * * * * "AcroExch.Document.7", DisplayAsIcon:=True, IconFileName:= _ * * * * "C:\WINDOWS\Installer\{AC76BA86-7AD7-1033-7B44- A90000000001}\PDFFile_8.ico" _ * * * * , IconIndex:=0, IconLabel:="Acrobat Document" End Sub Now here's the problem: *If I copy another PDF and then run this code, I get an error related to the object not being found, or it tries to convert the same object over again, etc. Depending on what I've done before I run the code, the error will change. It's obvious that it is not selecting the most recently pasted object because "Object 2" is hard coded. How do I get the code to select the last object that was pasted without actually knowing what number that object is? Thanks. |
Reply |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
can not select an object to delete it from word | Microsoft Word Help | |||
How do I select an object set behind a table? | Tables | |||
is there any short cut key to select work sheet object in word | New Users | |||
how to set select browser object default | Microsoft Word Help | |||
Need to select object on background layer in Word 2003. | Page Layout |