Determinazione della dimensione dell’immagine in una macro (Microsoft Word)
Word tiene insieme un bel po ‘di informazioni sulle immagini che inserisci nei tuoi documenti. Queste informazioni sono necessarie in modo che Word sappia come ridimensionare, posizionare e visualizzare le immagini. Se desideri trovare ulteriori informazioni sulle immagini nel tuo documento, devi sapere qualcosa su come Word archivia le informazioni.
Le immagini vengono memorizzate come uno dei due tipi di oggetti grafici: forme regolari o forme in linea. Le forme regolari sono quelle che risiedono sul livello di disegno, al contrario delle forme in linea, che risiedono nel livello di testo. Entrambi i tipi di oggetti vengono archiviati con diverse raccolte di oggetti. Le forme regolari sono nella raccolta Shapes e le forme inline sono archiviate nella raccolta InlineShapes. Per accedere alle informazioni sugli oggetti, è sufficiente utilizzare un piccolo VBA.
La seguente macro VBA funzionerà in Word 2000 (o versioni successive) per creare un documento che mostra la dimensione di tutti gli oggetti grafici all’interno di un documento, sia in punti che in pixel:
Sub FigureInfo() Dim iShapeCount As Integer Dim iILShapeCount As Integer Dim DocThis As Document Dim J As Integer Dim sTemp As String Set DocThis = ActiveDocument Documents.Add iShapeCount = DocThis.Shapes.Count If iShapeCount > 0 Then Selection.TypeText Text:="Regular Shapes" Selection.TypeParagraph End If For J = 1 To iShapeCount Selection.TypeText Text:=DocThis.Shapes(J).Name Selection.TypeParagraph sTemp = " Height (points): " sTemp = sTemp & DocThis.Shapes(J).Height Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Width (points): " sTemp = sTemp & DocThis.Shapes(J).Width Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Height (pixels): " sTemp = sTemp & PointsToPixels(DocThis.Shapes(J).Height, True) Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Width (pixels): " sTemp = sTemp & PointsToPixels(DocThis.Shapes(J).Width, False) Selection.TypeText Text:=sTemp Selection.TypeParagraph Selection.TypeParagraph Next J iILShapeCount = DocThis.InlineShapes.Count If iILShapeCount > 0 Then Selection.TypeText Text:="Inline Shapes" Selection.TypeParagraph End If For J = 1 To iILShapeCount Selection.TypeText Text:="Shape " & J Selection.TypeParagraph sTemp = " Height (points): " sTemp = sTemp & DocThis.InlineShapes(J).Height Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Width (points): " sTemp = sTemp & DocThis.InlineShapes(J).Width Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Height (pixels): " sTemp = sTemp & PointsToPixels(DocThis.InlineShapes(J).Height, True) Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Width (pixels): " sTemp = sTemp & PointsToPixels(DocThis.InlineShapes(J).Width, False) Selection.TypeText Text:=sTemp Selection.TypeParagraph Selection.TypeParagraph Next J End Sub
Questa macro non funziona in Word 97 perché Word 97 non riconosce l’istruzione PointsToPixels. Se rimuovi le righe che utilizzano questa istruzione (o crei la tua funzione PointsToPixels), la macro funzionerà perfettamente con Word 97.
Notare che la macro restituisce i nomi di forme regolari, ma non i nomi di forme inline. La ragione di ciò è che Word non mantiene i nomi delle forme inline. Quando inserisci una forma regolare nel tuo documento (di nuovo, sul livello di disegno), Word assegna un nome alla forma, come Rettangolo 2 o Ovale 3.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti WordTips), ho preparato una pagina speciale che include informazioni utili.
WordTips è la tua fonte di formazione economica su Microsoft Word.
(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (1497) si applica a Microsoft Word 97, 2000, 2002 e 2003. È possibile trovare una versione di questo suggerimento per l’interfaccia a nastro di Word (Word 2007 e più tardi) qui: