Xác định kích thước ảnh trong Macro (Microsoft Word)
Word lưu giữ khá nhiều thông tin về hình ảnh mà bạn chèn vào tài liệu của mình. Thông tin này là cần thiết để Word biết cách đặt kích thước, vị trí và hiển thị hình ảnh. Nếu bạn muốn tìm hiểu thêm thông tin về hình ảnh trong tài liệu của mình, thì bạn cần biết một số điều về cách Word lưu trữ thông tin.
Hình ảnh được lưu trữ dưới dạng một trong hai loại đối tượng đồ họa: hình dạng thông thường hoặc hình dạng nội tuyến. Hình dạng thông thường là những hình dạng nằm trên lớp vẽ, trái ngược với hình dạng nội tuyến, nằm trong lớp văn bản. Cả hai loại đối tượng được lưu trữ với các bộ sưu tập đối tượng khác nhau. Các hình dạng thông thường nằm trong bộ sưu tập Hình dạng và các hình dạng nội tuyến được lưu trữ trong bộ sưu tập Hình dạng nội tuyến. Để truy cập thông tin về các đối tượng, bạn chỉ cần sử dụng một chút VBA.
Macro VBA sau tạo một tài liệu hiển thị kích thước của tất cả các đối tượng đồ họa trong tài liệu, theo cả điểm và 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
Lưu ý rằng macro trả về tên của các hình dạng thông thường, nhưng không trả về tên của các hình dạng nội tuyến. Lý do cho điều này là Word không duy trì tên của các hình dạng nội tuyến. Khi bạn chèn một hình dạng thông thường vào tài liệu của mình (một lần nữa, trên lớp vẽ), thì Word sẽ gán tên cho hình dạng đó, chẳng hạn như Hình chữ nhật 2 hoặc Hình bầu dục 3.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên các trang WordTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
WordTips là nguồn của bạn để đào tạo Microsoft Word hiệu quả về chi phí.
(Microsoft Word là phần mềm xử lý văn bản phổ biến nhất trên thế giới.) Mẹo này (8343) áp dụng cho Microsoft Word 2007, 2010, 2013, 2016, 2019 và Word trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Word tại đây: