2010-04-27 41 views
6

Tôi đang cố gắng tạo một tài liệu Word với một macro từ rất đơn giản. Macro tìm kiếm dấu trang mà tôi đã đặt trong văn bản và sau đó thêm ngày, 2 tuần vào tương lai, tại vị trí đó.Làm thế nào để chuyển đến một Bookmark trong Word-VBA và chèn văn bản?

Nhưng khi tôi tạo tài liệu mới từ mẫu, tôi tiếp tục không tìm thấy dấu trang. Tôi đã được thông qua nó tải nhiều lần và đôi khi đánh dấu là có, đôi khi nó có nhưng không cho phép bạn nhấp vào "Go to".

Tôi làm cách nào để nó hoạt động? Tôi đã thêm một đoạn mã nhỏ vào sự kiện Document_New() nhưng vẫn giữ báo cáo Dấu trang không được tìm thấy.

Tôi có tài liệu trong tệp rar vì máy chủ web của tôi không thể xử lý các tiện ích mở rộng .dotm. Document

Làm cách nào để tạo tài liệu mới từ mẫu này, tài liệu mới có ngày, trước 2 tuần, được đặt giữa 2 phần in đậm?

Sub Two_Weeks_Ahead() 
''# Two_Weeks_Ahead Makro 
    Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks" 
    With ActiveDocument.Bookmarks 
     .DefaultSorting = wdSortByName 
     .ShowHidden = False 
    End With 

    Dim dt As Date 
    dt = DateAdd("d", 14, DateTime.Now) 

    Selection.TypeText Text:=Format(dt, "yyyy-MM-dd") 
End Sub 

Private Sub Document_New() 
    Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks" 
    With ActiveDocument.Bookmarks 
     .DefaultSorting = wdSortByName 
     .ShowHidden = False 
    End With 

    Dim dt As Date 
    dt = DateAdd("d", 14, DateTime.Now) 

    Selection.TypeText Text:=Format(dt, "yyyy-MM-dd") 
End Sub 
+0

Bạn có thể sao chép mã trực tiếp vào câu trả lời của mình không? –

Trả lời

1

Điều này có thể do việc sử dụng mã số ActiveDocument trong mã của bạn. Tài liệu của macro gọi điện có thể vẫn là ActiveDocument, vì vậy nó sẽ không tìm thấy bất kỳ dấu trang nào. Đây là cách tôi sẽ làm điều đó từ một tài liệu/mẫu hỗ trợ macro được kích hoạt hoạt động tốt.

Sub AddTwoWeeks() 
    Dim d As Document 
    Set d = Documents.Add("C:\Users\Me\Desktop\Title.dotx") 

    Dim dt As Date 
    dt = DateAdd("d", 14, DateTime.Now) 

    Dim b As Bookmark 
    Set b = d.Bookmarks("TwoWeeks") 
    b.Range.Text = Format(dt, "yyyy-MM-dd") 
End Sub 
Các vấn đề liên quan