#1
|
|||
|
|||
Insert a canvas at current cursor location [code attached]
Hi! I simply want to insert a canvas as an inline at the current location of my cursor but my code keeps inserting it at the 1st paragraph of a page. Below attached my code:
Code:
Sub InsertCanvas() Dim shpCanvas As Shape Dim CanvasWidth As Double Dim CanvasHeight As Double Dim currentParagraph As Paragraph Call FigureTools.ExitCompatibilityMode 'Exit the compatibility mode ' Get the current paragraph Set currentParagraph = Selection.Range.Paragraphs(1) CanvasWidth = 450 CanvasHeight = 252 ' Add a drawing canvas to the active document at the current paragraph Set shpCanvas = ActiveDocument.Shapes.AddCanvas(Left:=100, Top:=75, Width:=CanvasWidth, Height:=CanvasHeight, Anchor:=currentParagraph.Range) With shpCanvas .WrapFormat.Type = wdWrapInline .Visible = msoTrue End With End Sub |
#2
|
||||
|
||||
I think you need to position the canvas at the location of the selected paragraph before setting it to inline.
Code:
Sub InsertCanvas2() Dim shpCanvas As Shape, CanvasWidth As Double, iTop As Integer, iLeft As Integer Dim CanvasHeight As Double, aRng As Range 'Call FigureTools.ExitCompatibilityMode 'Exit the compatibility mode ' Get the current paragraph Set aRng = Selection.Range.Paragraphs(1).Range iTop = aRng.Information(wdVerticalPositionRelativeToPage) iLeft = aRng.Information(wdHorizontalPositionRelativeToPage) CanvasWidth = 450 CanvasHeight = 252 ' Add a drawing canvas to the active document at the current paragraph Set shpCanvas = ActiveDocument.Shapes.AddCanvas(Left:=iLeft, Top:=iTop, Width:=CanvasWidth, Height:=CanvasHeight, Anchor:=aRng) With shpCanvas '.Fill.ForeColor.RGB = RGB(24, 100, 30) .WrapFormat.Type = wdWrapInline .Visible = msoTrue End With End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
|||
|
|||
Thanks for the response! On my side your code somehow always inserts the canvas into the paragraph that is above the paragraph that the cursor is currently in. I used "Set currentParagraphRange = Selection.Range.Paragraphs(1).Range.Next" to solve the issue but ran into errors if the current paragraph is the last paragraph in the document so there's no "Next". Is there a way to solve this?
|
#4
|
||||
|
||||
I would try fiddling with the iTop number. If you add some extra to it then it will make the frame sit lower on the page and ideally start at the same location as your selected paragraph. For example, try adding a fixed number to it and try different values until you consistently get the frame appearing against the paragraph you like.
iTop = aRng.Information(wdVerticalPositionRelativeToPage) + 40
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#5
|
|||
|
|||
Thanks a lot! This works.
For future reference, I used + 10 with font size 12 and Times New Roman. |
Tags |
canvas |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Determine Style of paragraph at current location | exoson | Word VBA | 2 | 01-25-2022 11:15 AM |
How do I insert a drawing canvas in Office Professional 2010? | laredotornado | Word | 2 | 02-22-2017 02:28 PM |
Cursor location on first click -- insertion point | stevec5088 | Word | 1 | 12-14-2016 02:45 PM |
Hightlight cells based on cursor location | megads | Excel Programming | 2 | 07-31-2014 06:10 PM |
Auto insert current month's name and current year | Styler001 | Word | 4 | 01-25-2010 06:40 PM |