Bob cần đếm tất cả các đồ họa trong một tài liệu. Một số đồ họa nằm trong dòng và một số đồ họa nổi. Một số được chèn dưới dạng ảnh và một số được tạo bằng công cụ vẽ trong Word. Bob nghi ngờ có khoảng từ 150 đến 200 đồ họa trong tài liệu, nhưng anh ấy muốn có một cách để đếm nhanh.

Có một số cách bạn có thể thử để tính đồ họa của mình. Điều đầu tiên là sử dụng một tìm kiếm và thay thế đơn giản. Tất cả những gì bạn cần làm là tìm kiếm ^ g và thay thế bằng ^ &. Điều đó tìm thấy bất kỳ hình ảnh nào và thay thế nó bằng bất kỳ thứ gì được tìm thấy. Nói cách khác, không có thay đổi nào đối với tài liệu của bạn. Tuy nhiên, Word sẽ thông báo cho bạn, khi nó được thực hiện, về số lượng “thay thế” đã được thực hiện. Số lượng này là số lượng đồ họa trong tài liệu của bạn.

Vấn đề với phương pháp này là nó chỉ tính các hình ảnh nội tuyến trong tài liệu. Nó không “tìm và thay thế” bất cứ thứ gì trên lớp vẽ. Để có được tất cả các hình ảnh, bạn sẽ cần thử một cách tiếp cận khác. Ví dụ, bạn có thể sử dụng tính năng Go To của Word. Nhấn F5 để hiển thị tab Đi tới của hộp thoại Tìm và Thay thế. Nếu bạn chọn Đồ họa ở bên phải màn hình, bạn có thể xem qua đồ họa trong tài liệu bằng cách nhấp vào nút Tiếp theo. Nếu bạn có nhiều đồ họa, bạn có thể chỉ cần đặt một cái gì đó như +150 vào hộp và nhấp vào Đi tới. Bạn sẽ chuyển đến số đồ họa đó, nếu nó có sẵn và sau đó bạn có thể bước qua các số còn lại, tính khi bạn tiếp tục.

Cách tiếp cận này tốt hơn trong việc tìm kiếm đồ họa so với cách tiếp cận tìm và thay thế. Tuy nhiên, nó không phải là hoàn hảo vì có những vị trí trong tài liệu của bạn có thể đặt đồ họa mà Go To sẽ không bắt được.

(Hay, thành thật mà nói, bằng Trình duyệt đối tượng, sử dụng cơ chế tìm kiếm tương tự như Đi tới.) Cách tiếp cận này tìm đồ họa nằm trong dòng và trên lớp bản vẽ. Tuy nhiên, nó không tìm thấy chúng ở những nơi khác, chẳng hạn như đầu trang hoặc chân trang. Để tìm và đưa chúng vào số lượng, bạn sẽ cần sử dụng macro. Sau đây là một macro sẽ cung cấp số lượng đồ họa bao gồm nhiều hơn:

Sub CountGraphics()

Const sBkMk = "ReturnHere"



Dim lngSections As Long     Dim lngSectionCounter As Long     Dim lngMainDocInlineShapes As Long     Dim lngMainDocShapes As Long     Dim lngHdrInlineShapes As Long     Dim lngHdrShapeRange As Long     Dim lngFtrInlineShapes As Long     Dim lngFtrShapeRange As Long     Dim lngTotalInlineShapes As Long     Dim lngTotalShapes As Long     Dim sMsgText As String

Application.ScreenUpdating = False

'Get the number of sections in the document.

lngSections = ActiveDocument.Sections.Count

'Get the number of inline objects and     'shape objects in the main document     lngMainDocInlineShapes = ActiveDocument.InlineShapes.Count     lngMainDocShapes = ActiveDocument.Shapes.Count

'Insert a bookmark to return to this place in the document.

ActiveDocument.Bookmarks.Add sBkMk, Selection.Range

'Go to the first page of the document.

Selection.HomeKey wdStory, wdMove

'Cycle through all of the sections in the document     'looking in headers and footers for graphics     For lngSectionCounter = 1 To lngSections         'Go to the header of the current page         ActiveDocument.ActiveWindow.View.SeekView = wdSeekCurrentPageHeader         Selection.WholeStory         'Get the number of inline objects and shape objects         lngHdrInlineShapes = lngHdrInlineShapes _           + Selection.Range.InlineShapes.Count         lngHdrShapeRange = lngHdrShapeRange _           + Selection.Range.ShapeRange.Count

'Go to the footer of the current page         ActiveDocument.ActiveWindow.View.SeekView = wdSeekCurrentPageFooter         Selection.WholeStory         'Get the number of inline objects and shape objects         lngFtrInlineShapes = lngFtrInlineShapes _           + Selection.Range.InlineShapes.Count         lngFtrShapeRange = lngFtrShapeRange _           + Selection.Range.ShapeRange.Count

Selection.GoTo wdGoToSection, wdGoToNext     Next

'Go to the main body of the document.

ActiveDocument.ActiveWindow.View.SeekView = wdSeekMainDocument

'Enable automatic screen updates     Application.ScreenUpdating = True     Application.ScreenRefresh

'Go to the bookmark that was inserted earlier.

If ActiveDocument.Bookmarks.Exists(sBkMk) Then         Selection.GoTo wdGoToBookmark, , , sBkMk         ActiveDocument.Bookmarks(sBkMk).Delete     Else         MsgBox "The bookmark '" & sBkMk & "' does not exist."

End If

'Calculate the total number of inlineshape objects     'and (shape and shaperange) objects     lngTotalInlineShapes = lngMainDocInlineShapes _       + lngHdrInlineShapes + lngFtrInlineShapes     lngTotalShapes = lngMainDocShapes _       + lngHdrShapeRange + lngFtrShapeRange

'Include the values from the variables into the     'text of the message     sMsgText = vbTab & vbTab & "Inline Shapes" _       & vbTab & "Other Shapes" & vbCr _       & "Main Document:" & vbTab & lngMainDocInlineShapes _       & vbTab & vbTab & lngMainDocShapes & vbCr _       & "Headers:" & vbTab & vbTab & lngHdrInlineShapes _       & vbTab & vbTab & lngHdrShapeRange & vbCr _       & "Footers:" & vbTab & vbTab & lngFtrInlineShapes _       & vbTab & vbTab & lngFtrShapeRange & vbCr _       & "Total:" & vbTab & vbTab & lngTotalInlineShapes _       & vbTab & vbTab & lngTotalShapes & vbCr & vbCr _       & "Note: The values for the headers and the footers " _       & "could include duplicates."



'Display the results of the procedure.

MsgBox sMsgText End Sub

Lưu ý rằng macro không chỉ lấy số lượng đồ họa trong tài liệu chính mà còn xem xét từng phần trong tài liệu và kiểm tra đầu trang và chân trang cho bất kỳ đồ họa nào. Có một số điều cần nhớ với macro này có thể ảnh hưởng đến độ chính xác của số lượng được trả về. Tất cả các mục này là một phần của cách Word xử lý đồ họa trong tài liệu.

  • Nếu tài liệu chứa canvas vẽ, nó được coi như một đồ họa đơn lẻ (một đối tượng hình dạng), bất kể số lượng hình dạng riêng lẻ mà nó chứa.

  • Các hình riêng biệt được tính riêng. Khi các hình dạng riêng biệt được nhóm lại với nhau, thì chúng được tính là một hình dạng duy nhất.

Cuối cùng, có một cách khác mà bạn có thể thử tính số lượng đồ họa — chỉ cần lưu tài liệu của bạn dưới dạng trang Web (ở định dạng HTML). Là một phần của quá trình lưu theo cách này, Word lưu các tệp đồ họa trong tài liệu vào thư mục riêng của chúng. Tất cả những gì bạn cần làm sau đó là xem số lượng tệp trong thư mục và bạn sẽ biết rõ có bao nhiêu đồ họa trong tài liệu. (Cách bạn lưu tài liệu ở định dạng HTML được đề cập trong WordTips.)

_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 (10387) áp dụng cho Microsoft Word 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Word (Word 2007 và sau này) tại đây: