|
#1
|
|||
|
|||
VBA to rotate images by selection or another condition?
Hello again,
I am facing with another tedious situation in MS Word daily, based on the sample below. How can I batch rotate multiple images that are left/right oriented in my table? (Assuming I have no control over the original extraction method of the images into the table). Thanks! |
#2
|
||||
|
||||
Based on your example I suspect you want
Code:
Sub Macro1() Dim ocell As Cell Dim oInlineShape As InlineShape Dim oShape As Shape Set ocell = ActiveDocument.Tables(1).Cell(1, 1) Set oInlineShape = ocell.Range.InlineShapes(1) Set oShape = oInlineShape.ConvertToShape oShape.Rotation = 360 oShape.ConvertToInlineShape Set ocell = ActiveDocument.Tables(1).Cell(3, 1) Set oInlineShape = ocell.Range.InlineShapes(1) Set oShape = oInlineShape.ConvertToShape oShape.Rotation = 360 oShape.ConvertToInlineShape Set oInlineShape = Nothing Set oShape = Nothing Set ocell = Nothing End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#3
|
|||
|
|||
This is awesome!
So I am guessing your code targets specific lines(1 and 3)? But reality is that I always have 50+ lines like those with rotated text and they follow an irregular rule(example: lines 1,2,3,13,15,22,57..etc) I would have to count all the line numbers and paste them in the code? |
#4
|
||||
|
||||
Again based on your example, you could process all the cells in column 1 e.g. as follows (this works with your table without upsetting row 2).
Code:
Sub Macro2() Dim ocell As Cell Dim oInlineShape As InlineShape Dim oShape As Shape Dim i As Integer For i = 1 To ActiveDocument.Tables(1).Rows.Count Set ocell = ActiveDocument.Tables(1).Cell(i, 1) Set oInlineShape = ocell.Range.InlineShapes(1) Set oShape = oInlineShape.ConvertToShape oShape.Rotation = 360 oShape.ConvertToInlineShape Next i Set oInlineShape = Nothing Set oShape = Nothing Set ocell = Nothing End Sub Code:
Sub Macro3() Dim ocell As Cell Dim oInlineShape As InlineShape Dim oShape As Shape Dim i As Integer For i = 1 To ActiveDocument.Tables(1).Rows.Count Select Case i Case 1, 2, 3, 13, 15, 22, 57 Set ocell = ActiveDocument.Tables(1).Cell(i, 1) Set oInlineShape = ocell.Range.InlineShapes(1) Set oShape = oInlineShape.ConvertToShape oShape.Rotation = 360 oShape.ConvertToInlineShape Case Else End Select Next i Set oInlineShape = Nothing Set oShape = Nothing Set ocell = Nothing End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Word Art Rotate | new_bie | Drawing and Graphics | 5 | 01-19-2016 04:11 PM |
Rotate pages | Barbee | Word | 3 | 01-21-2015 12:03 PM |
How Rotate row of cells 45 degrees? | markg2 | Excel | 2 | 04-23-2014 05:12 AM |
Rotate text | chrislewis | Word | 3 | 07-22-2013 08:33 AM |
Selection of all Text for a specific page in word is spanning selection across pages | ramsgarla | Word VBA | 9 | 12-05-2012 03:23 AM |