• ベストアンサー

wordのマクロがわかりません。。。

wordのマクロの解析ができません。 どなたかお願いします。 できれば、行ごとの意味教えて欲しいのですが Application.Dialogs(wdDialogMailMergeOpenDataSource).Show With ActiveDocument.MailMerge .Destination = wdSendToNewDocument .SuppressBlankLines = True With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With よろしくお願いします。

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

  • ベストアンサー
回答No.1

1.Application.Dialogs(wdDialogMailMergeOpenDataSource).Show 「ワードの組み込みダイアログ(Application.Dialogs)”データファイルの選択ダイアログ”(wdDialogMailMergeOpenDataSource)を開け(.Show)」です。 wdDialogMailMergeOpenDataSourceの部分が、ダイアログの種類なので、ここを変更すれば、 ファイルを開く(wdDialogFileOpen) 印刷する(wdDialogFilePrint) などのダイアログを表示できます。 2.With ActiveDocument.MailMerge With ○○   ・   ・   ・ End With このWith~End Withの間は、○○っていうオブジェクト名を省略できますよ~ってことです。 With ActiveDocument.MailMergeがないと、それ以下のコードが、 ActiveDocument.MailMerge.Destination = wdSendToNewDocument ActiveDocument.MailMerge.SuppressBlankLines = True With .DataSource ActiveDocument.MailMerge.DataSource.FirstRecord = wdDefaultFirstRecord ActiveDocument.MailMerge.DataSource.LastRecord = wdDefaultLastRecord End With ActiveDocument.MailMerge.Execute Pause:=True っていうふうに、おんなじコードを何回も書かなくてはなんないので、省略する為に使います。 3..Destination = wdSendToNewDocument は、差し込み文書の送り先の設定をしています。wdSendToNewDocument(新いい文書)になっているので、 「差し込み先は、新しい文書」に設定してます。 4..SuppressBlankLines = True SuppressBlankLinesは、空白の差込フィールドの印刷をするかどうかの設定なので、 Trueを設定しているので、「空白の差込フィールドは印刷しない」になります。 5.With .DataSource 上記With同様です。 ここから次のEnd Withまでは、ActiveDocument.MailMerge.DataSourceが省略されてます。 6..FirstRecord = wdDefaultFirstRecord 差し込むデータの最初のレコード番号を設定しています。 wdDefaultFirstRecordなので、最初のレコードになります。(たぶん^^;ここはちょっと自信ないです^^;) 7..LastRecord = wdDefaultLastRecord 差し込むデータの最後のレコード番号を設定しています。 wdDefaultLastRecordなので、最後のレコードになります。(たぶん^^;ここはちょっと自信ないです^^;) 6.7で、おそらく、差込データは最初から最後までに設定しているのだと思います。 8.End With 上記5.の終了部分です。これ以降は、ActiveDocument.MailMergeまでしか省略されていません。 9..Execute Pause:=True Executeで、「実行」の意味なので、「差込印刷の実行」になります。 ただし、Pause:=Trueがあるので、差し込み印刷時にエラーが発生した場合に、Word が一時停止し、トラブルシューティングのダイアログ ボックスが表示されます。 10.End With 2.のEnd Withです。 これ以降は、省略されているオブジェクト名はありません。 長くなってしまって、わかりづらかったかもしれませんが、ご参考まで。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

下記のサイトを出し、プロパティやメソッドや関連の語句をいろいろ辿っていくと、すべて解説が出てきます。 http://www.microsoft.com/japan/developer/library/off2000/vbawrd/woobjMailMergeDataFields.htm

関連するQ&A

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

    ワード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 何をどうしたらできるようになるのかわかりません。 お分かりになる方、是非教えていただきたいです。 よろしくお願いいたします。

  • 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起動について

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

  • Word2007のマクロについて

    こんにちは。 Word2007のマクロについて質問させて下さい。 ・タイトル行が(16738047)色で、本文が黒文字の日本語の文書があります。 ・タイトル行内でキーワード検索を行いたいです。 ・1個ずつ内容を確認したいので「次を検索」 MsgBoxを使用しています。 以下のコードを実行すると、単語が1個飛ばしに選択されてしまいます。 どこを変更すればいいでしょうか? 教えてください。よろしくお願いします。 Sub タイトル検索() Dim myKW As String 'キーワード myKW = InputBox("検索する文字を入力して下さい") Selection.HomeKey Unit:=wdStory 'カーソルを文頭に移動 With Selection.Find .ClearFormatting .Font.Color = 16738047 .Text = myKW .MatchWildcards = False .MatchFuzzy = False If Len(myKW) = 0 Then Exit Sub If .Execute = True Then Do While .Execute If MsgBox("次を検索", vbokcansel, "確認") = vbOK Then Selection.Find.Execute End If Loop   MsgBox "処理が終了しました。" Else MsgBox "文字はありませんでした。" End If End With With Selection.Find ' 検索・置換のクリア .ClearFormatting: .Replacement.ClearFormatting .Text = "": .Replacement.Text = "" .MatchWildcards = False: .MatchFuzzy = False End With End Sub

  • MS Wordのマクロで自動改ページする方法

    xabcxdefgxhijk・・・ のように並んだ文字列を xabc(改ページ) xdefg(改ページ) xhijk・・・ のように,xの位置で自動的に改ページしたい。 ------------------------------------------ 上記の動作を実行するためのマクロを見よう見まねで 以下に示すように作成したのですが,成功したり成功しなかったりします。 原因が分かる方ご指摘ご修正いただけるとありがたいです。 (Wordのマクロは今回始めて作成する全くの初心者です。) WordのバージョンはOffice2003です。 よろしくお願いいたします。 ------------------------------------------ Sub kaipage() Dim blnFound As Boolean Dim rngContent As Range Dim intCount As Integer blnFound = True Set rngContent = ActiveDocument.Content intCount = 0 Do While blnFound = True With rngContent.Find .ClearFormatting .Wrap = wdFindContinue .Text = "x" .Replacement.Text = "$" .Execute Replace:=wdReplaceOne, Forward:=True End With Selection.Find.Execute Selection.InsertBreak Type:=wdPageBreak blnFound = rngContent.Find.Found If blnFound = True Then intCount = intCount + 1 Loop MsgBox (intCount & "個見つかりました。") End Sub

  • ワード VBA

    ワードのマクロについて教えてください。 以下のようなマクロをボタンに登録しています。 Sub Macro10() Dim myReg As Object Dim st As String Dim match As Variant Set myReg = CreateObject("VBScript.Regexp") myReg.Pattern = "\x0d\x0d(|$)" myReg.Global = True st = ActiveDocument.Range.Text ActiveDocument.Range(1, 1).Select For Each match In myReg.Execute(st) With Selection .Find.Text = match.Value .Find.Replacement.Text = vbCr .Find.Execute , , , , , , , , , , wdReplaceAll End With Next st = ActiveDocument.Range.Text If myReg.Test(st) Then _ ActiveDocument.Range.Text = myReg.Replace(st, "") Set myReg = Nothing End Sub ここで教えていただきたいのは,上記のマクロを実行するためにボタンを押した際,実行前にカーソルが置かれていたのと同一の場所に実行後のカーソルを戻す方法です。(ちなにみ上記のマクロを実行する際にカーソルが置かれているのは,空白行ではない行の先頭です。※処理とは関係ないかもしれませんが,念のために。) そのような処理を行うには,上記のマクロにどのような記述を追加すればよいのでしょうか。 どなたかご教示いただければと思います。 どうぞよろしくお願いいたします。

  • WORDマクロで単語リストテキスト内からヒットしたものだけを書き出したい

    ワードの文章中にList.txtに入っている単語をハイライトして太字に変更していくマクロを作成してみました。 検索にヒットした単語だけを outlist.txt へ書き出したいのですがどのような方法があるかご教授願えませんでしょうか。 現状だとすべての単語が書き出しされてしまいます。 過去ログやヘルプから見よう見真似で作成したマクロですので間違っている箇所もあるかもしれませんが、よろしくおねがいします。 list.txtは以下のように1単語で改行しているテキストです。 AAA BBB CCC ・ ・ Sub test1() Open "c:\list.txt" For Input As #1 Open "c:\outlist.txt" For Output As #2 While Not EOF(1)  Line Input #1, a  Selection.Find.ClearFormatting  With ActiveDocument.Content.Find .ClearFormatting .Text = a With .Replacement .ClearFormatting .Font.Bold = True .Highlight = True .Text = a End With .Execute Format:=True, Replace:=wdReplaceAll  End With Print #2, a Wend Close #2 Close #1 End Sub

  • ワードでマクロがうまくいきません。

    よろしくお願いします。 マクロの知識はほとんどないのですが、 「マクロの記録」の機能を使い、ワードで 「スペースを探し出し、そのスペースにアンダーラインを引く。」 ために、 -------------------- 編集ー置換ー 検索する文字列にスペースをタイプ、 置換後の文字列にスペースをタイプ、 オプションの書式で、フォント、下線、一重下線 すべて置換 -------------------- マクロの記録を選択した後、上のように作業しました。 そしてマクロの記録をとめました。 マクロの記録中の操作では、思い通りに置換されるのですが、 次にそのマクロを作動させると、なにもおこりません。 なにか変な操作をしたのか、と五度くらい試したのですが、 やはり動きません。 中身は、↓のようでした。 -------------------- Sub Macro2() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = " " .Replacement.Text = " " .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub -------------------- どうしてうまく動かないのでしょうか。 教えていただけるとありがたいです。よろしくお願いします。

  • ワードで算用数字を漢数字に変換するマクロについて

    お世話になっております。 ・ワードで算用数字を漢数字に変換する方法又はマクロを探しています。 ・希望例: 22→二二、 100→一〇〇等 ・以下のマクロを実行しましたが、全く反応がありません。 (マクロについてはずぶの素人です) Option Explicit Sub KanToNum() Dim num As Integer, kan() As Variant kan() = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九") For num = 0 To 9 With ActiveDocument.Content.Find .Text = kan(num) .MatchByte = False .Replacement.Text = num .Execute Replace:=wdReplaceAll End With Next num End Sub マクロの修正を含めアドバイスをお願いします。 よろしくお願いします。

  • Wordのマクロを造りたいです。

    マクロの条件は以下のとおりです。 カタカナ⇒全角 英数字記号⇒半角 別途指定文字の変換 (例)   (1)⇒[1] 変換文字個数を表示 上記、4つの内容を1つのマクロ内で処理したいです。 お知恵をお願いします。 現在使用しているのは以下のマクロです。 Sub 電子納品のための変換プログラム() ' ' 電子納品のための変換プログラム Macro ' 記録日 2006/01/19 記録者 HP Customer ' With Selection.Find .MatchFuzzy = False End With t = 0 ' 英字 While Selection.Find.Execute(FindText:="[A-z]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True Forward = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthHalfWidth t = t + 1 Wend ' 数字 While Selection.Find.Execute(FindText:="[0-9]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True Forward = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthHalfWidth t = t + 1 Wend ' カナ文字 While Selection.Find.Execute(FindText:="[ヲ-ン][゛゜]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthFullWidth t = t + 1 Wend While Selection.Find.Execute(FindText:="[ヲ-ン]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthFullWidth t = t + 1 Wend While Selection.Find.Execute(FindText:="[。-゜]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthFullWidth t = t + 1 Wend t = CStr(t) Msg = t + "件の変換がありました。" MsgBox (Msg) End Sub

専門家に質問してみよう