• 締切済み

AccessVBAから差し込みWORD起動について

AccessVBAで下記のようなコードを記述して 差し込み文書のWORDファイルのデータを更新して、別名保存・終了をしています。 [ Set objOrg = GetObject(strOrgNm)]の部分でWORD起動する際、 「この文書を開くと、次のSQLコマンドが実行されます。」というメッセージが表示されます。 複数のファイルについて処理するため、このメッセージを表示しないようにさせたいのですが 良い方法がありますでしょうか。 --<コード>-------------------------------------------- Dim strOrgNm As String  ' 差し込み文書元ファイル名 Dim objOrg As Object Dim objTemp As Object Set objOrg = GetObject(strOrgNm) Set objTemp = GetObject(Class:="Word.Application") With objOrg  With .MailMerge   .Destination = 0   .SuppressBlankLines = True   With .DataSource    .FirstRecord = 0    .LastRecord = DCount("*", "テスト用クエリ")   End With   .Execute Pause:=False  End With  objTemp.Application.ActiveDocument.SaveAs FileName:=pstrOrgNm & "_test"  objTemp.Application.ActiveDocument.Close End With -------------------------------------------------------

  • peca
  • お礼率92% (24/26)

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

そうなると・・私には分かりませぬ。 一応最後の足掻き・・ということで、Wscript.shellの http://technet.microsoft.com/ja-jp/scriptcenter/gg294005.aspx で処理前後に書き換えるとか・・ セキュリティの面でOSから蹴られるかもしれない。(未検証) 私からは以上です。

peca
質問者

お礼

再度のご回答ありがとうございます。 参考にさせていただきます。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

この文書を開くと、次のSQLコマンドが実行されます でGoogleと http://support.microsoft.com/kb/825765/ja だそうです。 レジストリを変更してセキュリティを下げることになります。 頑張ってAccessのレポートで完結するか、Wordで・・の二者択一かと?

peca
質問者

お礼

早速のご回答ありがとうございます。 レジストリ変更ですと他の差し込み文書もメッセージが表示されなくなってしまうので このプログラム内で一時的にアラートオフにしたいです。 また、Wordファイルでファイルを保存したいので、レポートでの対応は考えていません。

関連するQ&A

  • Word2000の差込印刷を繰り返し行う方法について

    VB6で計算したデータをAccess2000に入れ、そのデータをWord2000の差込印刷機能を利用して出力したいのですが、1回目は上手くいくのですが続けて2回目を実行すると実行時エラー’462’【リモートサーバーがないか、使用できる状態ではありません。】と表示されます。 With ActiveDocument.MailMerge '差込印刷の行でエラーが表示されます。 コードの抜粋は以下の通りです。 ---ここまででデータを書き込みます。--- Set wdApp = New Word.Application Set wdDoc = wdApp.Documents wdDoc.Open FileName~---ここでWordファイルを開きます。--- With ActiveDocument.MailMerge '差込印刷 .Destination = wdSendToNewDocument .MailAsAttachment = False .MailAddressFieldName = "" .MailSubject = "" .SuppressBlankLines = False With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With Windows(wdfile).Activate ActiveWindow.Close ~SaveAs FileName~'番号を付けて保存を行います。 wdDoc.Close 'Wordを終了させます。 wdApp.Quit Set wdApp = Nothing Set wdDoc = Nothing 長々と書いて申し訳ございませんが、よろしくお願いいたします。

  • AccessVBAからWordのマクロを実行するには

    [環境]Access2000,Word2000 AccessVBAでWordのオブジェクトをつくりファイルを開くところまでは たどり着いたのですが、開いたWordファイルにあるマクロを実行させる ことが出来ずに困っています。 WordオブジェクトのApplicationとDocumentsオブジェクトの関係も把握 しきれていないため、おかしなソースになっているかも知れません。 よろしくお願いします。 sub DoMacro() Dim oWrd as Word.Application Dim oDoc as Word.Document Set oWrd = New Word.Application With oWrd Set oDoc = oWrd.Documents.Open("c:\test.doc") .Visible = True .Application.Run ("Macro1") oDoc.SaveAs "c:\newTest.doc" .Quit End With End Sub

  • Excel VBAで呼び出したWordが文書への差し込みボタンが効かない状態で開く

    以下のExcel VBAでWordは開くのですが、新規文書への差し込みボタンが、活きていないです。参照設定は、Microsoft Word 11.0 Object Libraryを入れています。 どうしたらいいのでしょうか?困っています。 Sub Wordを開き、差し込み印刷する() Dim ワード As Object Dim ワード文書 As Object Dim フルパス As String フルパス = "D:\案内状.doc"          'フルパスを作成 Set ワード = CreateObject("Word.Application") 'Wordを起動 ワード.Visible =True 'Wordを表示 Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く End Sub

  • AccessからWordの差し込み印刷文書を印刷するVBAについて教えてください

    Access初心者です。 使用バージョンは、Access・Wordともに2007です。 Accessのクエリー/テーブルをWord文書に差し込み、Accessから起動してその差し込み文書を印刷したいのですが、うまくいきません。 Getobjectを使ってWordの差し込み文書テストを印刷する以下のようなプロシジャを作成しました。 予め、手動でWordを起動してから、このプロシジャを実行すると、文書『テスト』を開く前に「次の文書を開くと次のコマンドが実行されます。Select*fromテーブル名 データベースのデータが文書に挿入されます続行しますか?」のメッセージが表示されて応答確認が来るのですが、Wordを起動せずに実行すると、上記のメッセージは表示されず、テーブル内のデータに更新がかかっているにもかかわらず、上記メッセージで「いいえ」と応答したのと同様の状態で印刷されます。 はたして、こんなプロシジャでよいのか、使用方法が間違っているのかすら見当がつきません。どなたかアドバイスをお願いいたします。 (作成したプロシジャ) On Error GoTo エラー発生 Dim WordFilePass As String WordFilePass = "C:\Users\User1\Documents\テスト.docx" Dim MyWord As Word.Application Set MyWord = GetObject(, "Word.Application") MyWord.Visible = True MyWord.Documents.Open FileName:=WordFilePass MyWord.ActiveDocument.PrintOut MyWord.Application.Quit Set MyWord = Nothing エラー発生: If Err.Number = 429 Then Set MyWord = CreateObject("Word.Application") Resume Next Else MsgBox "エラーNo : " & Err.Number & vbNewLine & vbNewLine & _ "エラー内容 : " & Err.Description End If

  • Word起動方法

    Visual Basic6についての質問です。 現在次のようなPGを組んでいます。 Sub NewWord() Dim mswApp As Object 'Word.Application Dim mswDoc As Object 'Word.Document 'ワードを取得か生成する Set mswApp = GetWord 'ドキュメントを追加 Set mswDoc = mswApp.Documents.Add '名前を付けて保存 mswDoc.SaveAs "C:\abc.doc" End Sub Private Function GetWord() As Object '起動中のワードを捕まえる On Error Resume Next Set GetWord = GetObject(, "Word.Application") On Error GoTo 0 '捕まえる事ができなかったら、新規に起動する If (GetWord Is Nothing) Then Set GetWord = CreateObject("Word.Application") '生成時は、非表示で起動するので、表示する GetWord.Visible = True End If End Function 上記を実行すると、開いている文書に同じ名前を指定することはできません。保存する文書に異なる名前をつけてください。というエラーがでてきます。 開いている文書とはなんのことでしょか?VBの他にアプリケーションは起動していません。名前を変更(abc.docのとこですよね?)してもエラーはでます・・・。 なにがいけないのでしょうか。教えてください><

  • エクセルマクロでワード文書を強制的に閉じるには

    エクセルマクロでワードへの差し込み印刷を行っています。 時々、ワード様式ファイルを二重起動してしまい、その結果読み取り専用で開くかとのメッセージで出て処理がストップすることがあります。 そこで 差し込み印刷を行う前に、ワード様式ファイルが開いているかどうか確認し、開いていれば一旦ワード様式ファイルを閉じてから、差込印刷を開始するように改良しました。 ところが、今度は、ワード様式ファイルを閉じる段階で 「〇〇.docに対する変更を保存しますか? 保存 保存しない キャンセル」のメッセージが表示され、処理がストップしてしまいます。 メッセージが出ない方法について数日、いろいろ試みましたがいまだできません。どなたかご教示のほどよろしくお願いいたします。 ★印の箇所が最後に試みたcordです。 =============================== Option Explicit Dim myxls, mydoc As String '---------------------- Sub 差込印刷() '---------------------- myxls = ThisWorkbook.Path & "\VBA差込元data.xls" mydoc = ThisWorkbook.Path & "\差込先ワード様式.doc" '↓Word差込印刷時の二重起動による休止を避けるためのcode On Error GoTo ErrorHandler '↓差込先ワード様式.docが既に開いていると次行でerror75が発生、ErrorHandlerに飛んで注意を促す。 Name mydoc As mydoc '-------- Word差込 '-------- Exit Sub ErrorHandler: '↓★ここで差込先ワード様式.docを「保存」「保存しない」「キャンセル」の確認ウィンドウが表示されてしまう。★ Let Application.DisplayAlerts = False '★←これを書いても無駄だった★ GetObject(mydoc).Application.Quit Let Application.DisplayAlerts = True '★ Resume End Sub '----------------- Sub Word差込() '----------------- Dim objword, wddoc As Object Set objword = CreateObject("Word.Application") '←Wordオブジェクトを作成 With objword .Visible = True '↓Wordドキュメントオブジェクトを作成→指定ワード文書が読み込まれた。 Set wddoc = .Documents.Open(Filename:=mydoc) End With '---------------------------------- With wddoc.MailMerge '↓フルパスでよろしくね! .MainDocumentType = wdFormLetters .OpenDataSource Name:=myxls, _ Connection:= _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ myxls & ";Mode=Read;Jet OLEDB:Engine Type=35" _ , SQLSTATEMENT:="SELECT * FROM [sheet1$]" '----------------------- Dim rc As Integer rc = MsgBox("人数分のワードのページを作成しますか?" & vbCr & _ "【は い】・・人数分のページを作ります。" & vbCr & _ "【いいえ】・・ページをつくりません。(Word様式原本のみ作成)", vbYesNo + vbQuestion, "確認") If rc = vbYes Then '----------------------- '下記3行により[個々の文書の編集]まで一気に .ViewMailMergeFieldCodes = False .Destination = wdSendToNewDocument .Execute '----------------------- wddoc.Close '←word原本・Wordドキュメントオブジェクトを閉じる。 Set objword = Nothing Set wddoc = Nothing End If '----------------------- End With '---------------------------------- End Sub

  • CreateObjectとGetObjectの違い

    当方エクセル2003です。 Sub test_CreateObject() Dim App As Excel.Application Dim MyFileName As String Set App = CreateObject("Excel.Application") MyFileName = ActiveWorkbook.Path & "\新規Microsoft Excel ワークシート.xls" With App .Workbooks.Open FileName:=MyFileName .Visible = True End With Set App = Nothing End Sub --------------------------------------------------------- Sub test_GetObject() Dim App As Excel.Application Dim MyFileName As String Set App = GetObject(, "Excel.Application") MyFileName = ActiveWorkbook.Path & "\新規Microsoft Excel ワークシート.xls" With App .Workbooks.Open FileName:=MyFileName .Visible = True End With Set App = Nothing End Sub この二つは何が違うのでしょうか? どちらも既存のエクセルファイルがが開きます。

  • Access2010でWORD差込VBA実行後終了

    Access2010でWORDのブックマークへの差込を実行するVBAを組み、うまく作動しました ところが、「WORDで特定文書の名前で保存する構文をいれ、別名保存がうまく終わっている」にも拘わらず、必ず”未保存の文書1を保存しますか?”とWORDが必ず聞いてきます。これを回避するにはどのようにしたらよろしいでしょうか? ACCESS2010のVBAは下記のとおり組んでいます 'Word文書を保存する箇所 WordApp.Application.ActiveDocument.SaveAs FileName:=VARIABLE.doc, FileFormat:=1 'Wordを終了する箇所(上記保存のすぐ後に書いています) WordApp.Application.ActiveDocument.Close WordApp.Quit Set WordApp = Nothing Set doc = Nothing

  • エクセルVBAでワード文書をPDF保存

    質問の仕方が悪かったようですので先日の質問 https://okwave.jp/qa/q9876787.html を取り消し、再度質問させていただきます。 エクセル2016のワークシート上にオブジェクトの挿入でワードの文書ファイルをアイコンで貼り付けています。VBAでこの文書ファイルを開き、PDFとして保存しようと思います。 見よう見まねで以下のようなコードを書いてみまた。 '参照設定 Microsoft Word 16.0 Object Library Sub test01() Dim objWord As Word.Application Set objWord = CreateObject("Word.Application") objWord.Visible = True Dim objDoc As Word.Document Dim FileName As String FileName = Application.GetSaveAsFilename(, "PDFファイル,*.pdf", , "PDF保存") Set objDoc = Worksheets("Sheet1").OLEObjects(1).Verb(Verb:=xlVerbOpen) objDoc.ExportAsFixedFormat OutputFileName:=FileName, ExportFormat:=wdExportFormatPDF objDoc.Close End Sub これで、文書ファイルは開くのですが、「オブジェクトが必要です」のエラーがでて、Set objDocがEmptyのままPDF保存ができません。どのように直せばいいのでしょうか? ご教示ください。

  • ワードファイルの分割が出来ない

    ワード2007を使用しています。 エクセルデータから差し込みをしたワードファイルがあります。 100ページ以上あるものを、手っ取り早くページごとに分割したいのです。 私なりにいろいろ調べて、そのようなことができるマクロがあるようなのですが思うように動きません。 http://support.microsoft.com/kb/306348/ja こちらのサイトのセクションことに分割するマクロを使用してみたのですが、うまくいきません。 マクロを実行するのは差しこみを設定した文書でいいのでしょうか? それとも差し込み済みで複数ページに出来上がった文書に対して実行するのでしょうか? 後者のほうにマクロを実行すると 実行時エラー’5156’ 「文書を作成、または保存することができません。保存先のディスクに十分な空き容量があること、書き込み禁止に設定されていないこと、またディスクが壊れていないことを確認してください。」 というメッセージが出ます。 また、以下のようなプログラムもネットから引用してみたのですがうまくいきませんでした。 Sub データごとにファイルを分ける() Dim i As Long, LRec As Long With ThisDocument.MailMerge .DataSource.ActiveRecord = wdLastRecord LRec = .DataSource.ActiveRecord For i = 1 To LRec .Destination = wdSendToNewDocument .SuppressBlankLines = True .DataSource.FirstRecord = i .DataSource.LastRecord = i .DataSource.ActiveRecord = i .Execute Pause:=True ActiveDocument.SaveAs ThisDocument.Path & "\" & _ .DataSource.DataFields(4).Value & ".doc", wdFormatDocument 'ファイル名に使うフィールド(例では4番目) ActiveDocument.Close Next i End With End Sub 何をどうしたらできるようになるのかわかりません。 お分かりになる方、是非教えていただきたいです。 よろしくお願いいたします。

専門家に質問してみよう