2011-06-29 59 views
0

我正在使用Access将数据发送到我在Word中创建的模板。在它成功发送我需要使打开的Word文档不可编辑的数据之后。Word自动化:不可编辑

另外,我注意到在完成文档后,它会提示保存。是否可以删除此提示,但允许保存功能。

这是我用来做字自动化代码:

' Create a Word document from template. 
Dim WordApp As Word.Application 
Dim strTemplateLocation As String 
Dim myVariable As String 
myVariable = “TEST!!” 

' Specify location of template 
strTemplateLocation = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\")) & "test.dot" 

Set WordApp = CreateObject("Word.Application") 

WordApp.Visible = True 
WordApp.WindowState = wdWindowStateMaximize 
WordApp.Documents.Add Template:=strTemplateLocation, NewTemplate:=False 


' Replace each bookmark with field contents. 
WordApp.Selection.GoTo what:=wdGoToBookmark, Name:="myBookmark" 
WordApp.Selection.TypeText myVariable 

DoEvents 
WordApp.Activate 
Set WordApp = Nothing 
+0

如果您显示实际的代码,提出建议会容易得多。否则,我们都必须猜测你目前是如何做到的。 –

+0

这是否甚至编译?看着Dim myVariable =“TEST !!”... –

+0

这是一个例子。固定。 – Rick

回答

0

这应该做你所需要的。从Excel,不Access测试,所以你需要修复的模板路径

Sub Tester() 
    ' Create a Word document from template. 
    Dim WordApp As Word.Application 
    Dim strTemplateLocation As String 
    Dim myVariable As String 

    myVariable = "TEST!!" 
    ' Specify location of template 
    strTemplateLocation = ThisWorkbook.Path & "\test.dotx" 
    Set WordApp = CreateObject("Word.Application") 
    With WordApp 
     .Visible = True 
     .WindowState = wdWindowStateMaximize 
     .Documents.Add Template:=strTemplateLocation, NewTemplate:=False 

     ' Replace each bookmark with field contents. 
     .Selection.GoTo what:=wdGoToBookmark, Name:="myBookmark" 
     .Selection.TypeText myVariable 

     DoEvents 

     With .ActiveDocument 
      .Protect Type:=wdAllowOnlyReading, Password:="blah" 
      .Saved = True 
     End With 

     .Activate 
    End With 

    Set WordApp = Nothing 

End Sub 
+0

尝试了WordApp.DisplayAlerts = wdAlertsNone,但它似乎没有工作。真的不想通过自动化来保存它。我需要它打开,不允许编辑。保存消息出现在关闭Word文档时。无论如何找不到ReadOnlyRecommended参数。 – Rick

+0

在Access中尝试了WordApp.ActiveWindow.Document.ReadOnly,并获取错误消息:“属性的无效使用”。 – Rick

+0

@Rick:这是因为'ReadOnly'属性(具有讽刺意味)是只读的。你不能设置它,你只能检查它的状态。你知道VBA有一个帮助文件吗?我刚刚通过按下F1了解了这一切。 –

1

Document对象有一个Saved财产,如果作出任何改变通常变为False。如果将此属性设置为True,则在关闭文档时不会提示您保存文档,但如果您愿意,仍可以手动将其保存(通过SaveSave As...)。

您可以使用Document对象的Protect方法来限制用户可以进行的更改。例如,您可以使用参数wdAllowOnlyReading来调用它,这意味着不能进行任何类型的更改。您可能还需要查看保护文档的密码,以防止用户再次简单取消保护

+0

这是在访问端还是Word?你能提供完整的陈述吗?谢谢。 – Rick

+0

尝试访问“WordApp.ActiveWindow.Document.Protect”中的语句,但获取参数不是可选的错误消息 – Rick

+1

@Rick:嗯...这是因为'保护'有一个参数是不可选的,你没有给出论证任何价值。如果您在'.Protect'之后点击空格键,则智能感知应显示此内容。或者只是阅读Word的VBA帮助'保护'。这里都有解释。 –