Determinazione Dimensioni immagine in una macro

Word mantiene un po 'di informazioni insieme sulle immagini che si inseriscono nei documenti. Queste informazioni sono necessarie in modo che Word sa dimensione, posizione, e visualizzare le immagini. Se volete saperne di più informazioni sulle immagini contenute nel documento, allora avete bisogno di sapere qualcosa su come Word memorizza le informazioni.

Le immagini vengono memorizzate come uno dei due tipi di oggetti grafici: forme regolari o forme in linea. Forme regolari sono quelli che risiedono sul livello di disegno, in contrapposizione all'inline forme, che risiedono nel livello di testo. Entrambi i tipi di oggetti vengono memorizzati con diverse collezioni di oggetti. Forme regolari sono nella raccolta Forme e forme in linea sono memorizzati nella collezione InlineShapes. Per accedere alle informazioni sugli oggetti, basta usare un po 'di VBA.

La seguente macro VBA crea un documento che visualizza la dimensione di tutti gli oggetti grafici all'interno di un documento, in entrambi i punti e pixel:

Sub FigureInfo ()
Dim iShapeCount As Integer
Dim iILShapeCount As Integer
DocThis Dim As Document
Dim J As Integer
Dim sTemp As String

Set DocThis = ActiveDocument
Documents.Add

iShapeCount = DocThis.Shapes.Count
Se iShapeCount> 0 Then
Selection.TypeText Text: = "Shapes regolari"
Selection.TypeParagraph
End If
Per J = 1 Per iShapeCount
Selection.TypeText Text: = DocThis.Shapes (J) .Name
Selection.TypeParagraph
sTemp = "Altezza (punti):"
sTemp = sTemp & DocThis.Shapes (J) .Height
Selection.TypeText Text: = sTemp
Selection.TypeParagraph
Stemp = "Larghezza (punti):"
sTemp = sTemp & DocThis.Shapes (J) .Width
Selection.TypeText Text: = sTemp
Selection.TypeParagraph
sTemp = "Altezza (pixel):"
sTemp = sTemp & PointsToPixels (DocThis.Shapes (J) .Height, True)
Selection.TypeText Text: = sTemp
Selection.TypeParagraph
Stemp = "Larghezza (pixel):"
sTemp = sTemp & PointsToPixels (DocThis.Shapes (J) .Width, False)
Selection.TypeText Text: = sTemp
Selection.TypeParagraph
Selection.TypeParagraph
Successivo J

iILShapeCount = DocThis.InlineShapes.Count
Se iILShapeCount> 0 Then
Selection.TypeText Text: = "Inline Shapes"
Selection.TypeParagraph
End If
Per J = 1 Per iILShapeCount
Selection.TypeText Text: = "Shape" & J
Selection.TypeParagraph
sTemp = "Altezza (punti):"
sTemp = sTemp & DocThis.InlineShapes (J) .Height
Selection.TypeText Text: = sTemp
Selection.TypeParagraph
Stemp = "Larghezza (punti):"
sTemp = sTemp & DocThis.InlineShapes (J) .Width
Selection.TypeText Text: = sTemp
Selection.TypeParagraph
sTemp = "Altezza (pixel):"
sTemp = sTemp & PointsToPixels (DocThis.InlineShapes (J) .Height, True)
Selection.TypeText Text: = sTemp
Selection.TypeParagraph
Stemp = "Larghezza (pixel):"
sTemp = sTemp & PointsToPixels (DocThis.InlineShapes (J) .Width, False)
Selection.TypeText Text: = sTemp
Selection.TypeParagraph
Selection.TypeParagraph
Successivo J
End Sub

Notare che la macro restituisce i nomi delle forme regolari, ma non i nomi di forme in linea. La ragione di questo è che Word non mantiene i nomi di forme in linea. Quando si inserisce una forma regolare nel documento (ancora una volta, sul livello di disegno), quindi Word assegna un nome alla forma, come il rettangolo 2 o 3 Ovale.

WordTips è la vostra fonte per la formazione Microsoft Word conveniente. (Microsoft Word è il più popolare software di elaborazione testi del mondo.) Questa punta (8343) si applica a Microsoft Word 2007, 2010 e 2013. Si può trovare una versione di questo suggerimento per l'interfaccia del menu precedente di Word qui: Picture Determinazione Dimensioni in una macro.