AccessVBAからWordのマクロを実行する方法

このQ&Aのポイント
  • AccessVBAからWordのマクロを実行する方法について解説します。
  • AccessVBAでWordのオブジェクトを作成し、ファイルを開きます。
  • 開いたWordファイルにあるマクロを実行させる方法を説明します。
回答を見る
  • ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

Microsoft Word 9.0 Object Library に参照設定して コードを以下のように修正すれば良いと思います。 Sub DoMacro() Dim oWrd As New Word.Application Dim oDoc As Word.Document With oWrd Set oDoc = .Documents.Open("c:\test.doc") .Visible = True .Application.Run ("Macro1") oDoc.SaveAs "c:\newTest.doc" .Quit End With End Sub

mojaco
質問者

お礼

ご指摘の部分を参考に修正いたします。 ご回答ありがとうございました。

関連するQ&A

  • 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 -------------------------------------------------------

  • WORDのアドイン

    先日、以下のように教えて頂き試したのです、できませんでした。 ご回答が頂けないので再投稿をしました。 教えて下さい。 ------------------------------------------------ お世話になっております。 QNo.4228197で質問させて頂きました。 その節はありがとうございました。 WORDでも同様な事をやりたいのです。 ドキュメントを開いた際のイベントは、 Dim WithEvents oWord as Word.Application Private Sub oWorf_DocumentOpen(ByVal Doc As Word.Document) end sub でいいのでしょうか?? ------------------------------------------------------------ やり方は同じですよ IDTExtensibility2_OnStartupCompleteイベントの最後の方で if oHostApp.Name = "Microsoft Word" then   Set oWord = oHostApp End if IDTExtensibility2_OnBeginShutdownの最後に Set oWord = Nothing を追加 Private Sub oWord_DocumentOpen(ByVal Doc As Word.Document)   If oWord.Documents(1).CustomDocumentProperties.Count Then     MsgBox oWord.Documents(1).CustomDocumentProperties("文書番号").Value   End If end sub といった具合です ------------------------------------------------------------------- 下記のようにしてテストしてみたのですが、うまく行きません。 宣言部 Dim WithEvents objWord As Word.Application IDTExtensibility2_OnConnectionイベント Set objWord = objHostApp IDTExtensibility2_OnBeginShutdownイベント Set objWord = Nothing Private Sub objWord_DocumentOpen(ByVal Doc As Word.Document) MsgBox "word Open" End Sub Private Sub objWord_DocumentActivate(ByVal Doc As Word.Document) MsgBox "word Activate" End Sub どこか違うのでしょうか。 宜しくお願い致します。 ----------------------------------------------------------------

  • 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のとこですよね?)してもエラーはでます・・・。 なにがいけないのでしょうか。教えてください><

  • VB.netでWORD操作すると"デバッガはプロセスの実行を処理できま

    VB.netでWORD操作すると"デバッガはプロセスの実行を処理できません” になってしまいます。 VB.netでWORD文書を開き、内容を置換しています。 Dim oWord As Word.Application Dim oDoc As Word.Document oWord = CreateObject("Word.Application") oDoc = oWord.Documents.Open("c:\aaa.docx", , True) With oWord.Selection.Find ← ここで発生します。 .ClearFormatting() .Text = "@TANTO@" With .Replacement .ClearFormatting() .Text = wdr("担当") End With .Execute(Replace:=Word.WdReplace.wdReplaceAll) End With エラーはTRYを通らず、上記の場所でメッセージを表示し、Abendしてしまいます。 非常に困っています。 ヒントでも参考になるサイトでも構いません。 よろしくお願いいたします。

  • excel  VBA ワード文書テンプレートに転送

    下記のコードを作成したのですがうまくいきません指導願います Sub () Dim wd As Word.Application Dim WDoc As Word.Document res = MsgBox("?", vbYesNo) If res = vbYes Then nissi = "C:\Documents and Settings\○○ \デスクトップ\文書1.doc" Else nissi = "C:\Documents and Settings\○○ \デスクトップ\文書2.doc" End If Set wd = CreateObject("Word.Application.11") wd.Visible = True Set WDoc = wd.Documents. _ Open(nissi) With WDoc.Tables(1) Set crange = Sheets("aq").Cells(1, 1) WDoc.Tables(1).Cell(1, 2).Range.Text = crange If Sheets("aq").Range("d2") = "D" Then 中略 end With wd.Quit Set wd = Nothing Set WDoc = Nothing End Sub

  • WORDのアドイン

    お世話になっております。 QNo.4228197で質問させて頂きました。 その節はありがとうございました。 WORDでも同様な事をやりたいのです。 ドキュメントを開いた際のイベントは、 Dim WithEvents oWord as Word.Application Private Sub oWorf_DocumentOpen(ByVal Doc As Word.Document) end sub でいいのでしょうか??

  • アクセスからエクセルのマクロを実行したいのですが

    Sub エクセルのVBA実行する() Dim xlsWB As Object Dim MyFileName As String MyFileName = "C:\test.xlsx" Set xlsWB = GetObject(MyFileName) xlsWB.Application.Run xlsWB.Name & "!マクロ" Set xlsWB = Nothing End Sub と言うコードを作ったのですが エクセルファイルにはパスワードがかかっています。 パスワード付のエクセルファイルを開きマクロを実行するにはどうすればいいでしょうか?

  • なんで8?

    http://officetanaka.net/excel/vba/function/CreateObject.htm を参考に Sub Sample() Dim wdApp As Variant Set wdApp = CreateObject("Word.Application.8") With wdApp .Documents.Open FileName:="C:\Test.doc" .Visible = True End With Set wdApp = Nothing End Sub でワードを開くことができたのですが、 Word.Applicationの後ろにある8はどういう意味なのでしょうか? 構文 CreateObject(class) 引数classは、appname.objecttypeの形式で指定します。 appname…オブジェクトを提供しているアプリケーションの名前 objecttype…作成するオブジェクトの種類またはクラス との事ですが、 作成するオブジェクトの種類またはクラスが8という事でしょうか?

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

    エクセルマクロでワードへの差し込み印刷を行っています。 時々、ワード様式ファイルを二重起動してしまい、その結果読み取り専用で開くかとのメッセージで出て処理がストップすることがあります。 そこで 差し込み印刷を行う前に、ワード様式ファイルが開いているかどうか確認し、開いていれば一旦ワード様式ファイルを閉じてから、差込印刷を開始するように改良しました。 ところが、今度は、ワード様式ファイルを閉じる段階で 「〇〇.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

  • 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

専門家に質問してみよう