2011-06-29 21 views
0

私はWordで作成したテンプレートにデータを送信するために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

これはあなたが必要なものを行う必要があります。あなたはDocumentオブジェクトが何らかの変更が行われた場合、通常はFalseに変わりSaved性質を持っているテンプレートパス

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文書を閉じると、保存メッセージが表示されます。 EitherwayはReadOnlyRecommendedパラメータを見つけることができませんでした。 – Rick

+0

AccessでWordApp.ActiveWindow.Document.ReadOnlyを試して、「プロパティの無効な使用」というエラーメッセージが表示されます。 – Rick

+0

@Rick:これは、 'ReadOnly'プロパティが(皮肉的に)読み取り専用であるためです。あなたはそれを設定することはできません、あなたはその状態を確認することしかできません。 VBAにヘルプファイルがあることをご存知ですか?私はF1を押すだけでこれをすべて学びました。 –

1

を修正する必要がありますので、エクセルではなく、Accessからテスト済み。このプロパティをTrueに設定すると、文書を閉じるときにその文書を保存するように求めるメッセージは表示されませんが、手動で保存することもできます(SaveまたはSave As...)。

DocumentオブジェクトのProtectメソッドを使用して、ユーザーが行う変更を制限することができます。たとえば、パラメータwdAllowOnlyReadingで呼び出すことができます。これは、何らかの変更を加えることができないことを意味します。また、ユーザーが単に保護を解除しないようにするために、文書をパスワードで保護する必要があるかもしれません。

+0

これはアクセス側かWord上にありますか?完全な陳述書を提出できますか?ありがとう。 – Rick

+0

アクセス "WordApp.ActiveWindow.Document.Protect"のステートメントを試しましたが、オプションのエラーメッセージではない引数を取る – Rick

+1

@Rick:うーん...それは 'Protect'にオプションではない引数があり、あなたはそれを与えなかったからです任意の値を引数にとります。 '.Protect'の後にスペースバーを押すと、intellisenseがこれを表示するはずです。または、単に「Protect」のWord VBAヘルプを読んでください。それはすべてそこに説明されています。 –