Word VBA 表内の図を一括中央揃えにするマク

このQ&Aのポイント
  • Wordの表に3,000個ほどの図を入れ、それぞれコメントを入れておりますが、図の位置が左揃えになったり、中央揃えになったり、右揃えになったりしています。
  • 図だけを一括して中央揃えにするマクロを作ろうとしています。図のサイズを一括して変更するマクロは資料を参考にして出来ましたが、中央揃えにするマクロがどうしても出来ません。
  • 参考にして作ったプログラムは以下の通りですが、コンパイルエラーになってしまいます。四苦八苦しています。どなたかご指導お願いします。
回答を見る
  • ベストアンサー

Word VBA 表内の図を一括中央揃えにするマク

Wordの表に3,000個ほどの図を入れ、それぞれコメントを入れておりますが、図の位置が左揃えになったり、中央揃えになったり、右揃えになったりしています。これら図だけを一括して中央揃えにするマクロを作ろうとしています。 図のサイズを一括して変更するマクロは資料を参考にして出来ましたが、中央揃えにするマクロがどうしても出来ません。 参考にして作ったプログラムは以下の通りですが、コンパイルエラーになってしまいます。 四苦八苦しています。どなたかご指導お願いします。 Sub 図の一括中央揃え() ' ' 図の一括中央揃え ' ' Dim shp As InlineShape For Each shp In ActiveDocument.InlineShapes shp.ParagraphFormat.Alignment = wdAlignParagraphCenter Next End Sub

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

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

InlineShapeのメンバーにParagraphFormatがないためです。 http://msdn.microsoft.com/ja-jp/library/office/ff840794(v=office.15).aspx この場合、Rangeを追加してParagraphFormatを使えるようにします。 Sub 図の一括中央揃え() ' ' 図の一括中央揃え修正版 ' Dim shp As InlineShape  For Each shp In ActiveDocument.InlineShapes  shp.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter  Next End Sub

oldhidesan
質問者

お礼

enunokokoro 様 ありがとうございました。正しく変更できました。

関連するQ&A

  • ワードでマクロで画像を中央揃えにしたい

     ワードでマクロを使って、挿入・画像ファイルで取り込んだ画像を、レイアウトの詳細設定で水平、垂直ともページを基準にして、中央揃えにしたいのです。  画像は1ページに1枚です。  たくさんの画像を一つ一つやるのは大変です。  やり方のわかる方がいたらお願いします。  参考までに画像を取り込む部分を載せておきます。 ' Sub Macro1() ' Dim FileName As String ' ChDir ThisDocument.Path ' FileName = Dir("*.jpg") While FileName > "" Selection.InsertBreak Type:=wdPageBreak ' 改ページ Application.Browser.Previous ' 前のページへ ' 画像の読み取り ActiveDocument.Shapes.AddPicture(Anchor:=Selection.Range, _ FileName:=FileName, LinkToFile:=False, _ SaveWithDocument:=True).WrapFormat.Type = 5 ' Application.Browser.Next ' 次のページへ ' FileName = Dir Wend ' End Sub '

  • ☆WORD[図の書式設定]のリセット方法

    WORDにコピー張付けした画像(例えばインストール画面を次々コピー張付け)を、適当なサイズに変更したが元のサイズに戻したい。 手作業ではなくVBAマクロで一括返還したい…幸いにも同課題のExcel編は 「QNo.5660996」回答者:watabe007さんが解決してくれています。 WORDも適用しようと頑張ったのですがソースコードが異なる模様、 悔しいが私には難しくて解決できませんでした。 手動なら画像をマウス右クリックして、 [サイズとプロパティ]⇒[サイズ]⇒[原型のサイズ]⇒[リセット]の手順ですが、 VBAマクロで実行するにはどの様な記述をすればよいか教えて下さい。 宜しくお願いします。 参考 一括で50%に縮小するソースコードは次の記述で成功しています。 私が正しいと思っているだけかも知れません。 '---------------------------------------------- Option Explicit Sub 縮小50() Dim s For Each s In ActiveDocument.Shapes s.Width = s.Width * 0.5 s.Height = s.Height * 0.5 Next For Each s In ActiveDocument.InlineShapes s.Width = s.Width * 0.5 s.Height = s.Height * 0.5 Next End Sub '---------------------------------------------- 以上

  • ワードアートの一括変換

    Office2003のEXCEL使用しています。 ワードアートのフォントを別のモノに 一括変換したくて調べたら、 VBA のコードを実行すればOKと書いてありました。 以下文章。 1. Microsoft Word の「Visual Basic Editor」を起動。 2. [挿入] - [標準モジュール] を選択。 3. 下記のコードを貼り付け。 4. [実行] - [Sub/ユーザー フォームの実行] を選択。 これで、ワードアートのフォントが一括で置換出来る。 Sub ChangeWordArtFont()   ' ワードアートのフォントを変更(書式が「行内(インライン)」の場合)   Dim inlineShape   For Each inlineShape In ActiveDocument.InlineShapes     If inlineShape.Type = wdInlineShapePicture Then       inlineShape.TextEffect.FontName = "HG創英角ポップ体"     End If   End If      ' ワードアートのフォントを変更   Dim shape   For Each shape In ActiveDocument.Shapes     If shape.Type = msoTextEffect Then       shape.TextEffect.FontName = "HG創英角ポップ体"     End If   Next 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 VBA 文字列操作について

    WORD2007にて、文書内にいくつかの描画キャンバスがあり、この中にいくつかのオートシェイプがあります。(グループ化されたものも含む) マクロにてこのオートシェイプ内の文字列をすべて特定のフォントに変更したいのですが、どなたかCODEを教えて頂けないでしょうか? On Error Resume Next Dim shp As Shape For Each shp In ActiveDocument.Content.ShapeRange shp.Select Selection.Font.Name = "RFPイワタ中太教科書体" Selection.Font.NameAscii = "RFPイワタ中太教科書体" Next shp というものも他のサイトで見つけたのですが、おそらくオートシェイプが描画キャンバス内にあるためにSelectされないのだと思われます よろしくお願いします

  • word VBA ファイル名 保存

    wordで作成したファイルの最初の第1行名をファイル名として、名前を付けて保存できるマクロを作りたいのですが、うまくいきません。 Sub 保存() Dim ファイル名 As Variant ファイル名 = ActiveDocument.Paragraphs(1) & ".docx" ActiveDocument.SaveAs FileName:=(ファイル名), FileFormat:= _ wdFormatXMLDocument End Sub ではだめなのですが、どなたか添削よろしくお願いします。困っております。なにぶん初心者ですので基本的な文法のミスかもしれないですが、うまくいきません。

  • コマンドボタンを削除しないか自動生成する

    エクセルのマクロで、不要な表やオブジェクトを一括で削除するためのマクロを作成し、コマンドボタンをシートに作成してマクロを登録しています。 コマンドを実行すると、不要な表やオブジェクトと一緒に、マクロを実行するためのコマンドボタンも削除されてしまいます。 そのため、コマンドボタンを削除されないためにはどうしたらいいでしょうか。 あるいは、コマンドボタンを自動で生成し、マクロを登録するにはどうしたらいいでしょうか。 参考までに、オブジェクトを削除するマクロは次の通りです。 Sub 削除() Cells.Delete Dim shp As Shape For Each shp In ActiveSheet.Shapes shp.Delete Next shp End Sub よろしくお願い致します。

  • WORD VBAのShapesのこと

    昨日TTakさんから下記のマクロを御教授いただいて助かっているのですが、特定のShapesを除外して下記を実行する方法があれば教えていただけないでしょうか。 Private Sub CommandButton1_Click() Dim myf As String myf = "ここに画像ファイルまでのパスとファイル名を入れる" With ActiveDocument For i = 1 To .Shapes.Count .Shapes(i).Fill.UserPicture myf Next i End With End Sub

  • Word_VBA 拡張子手前までのファイル名の取得

    こんにちは。VBA全般初心者です。Wordに対していくつかの処理後、元ファイルに日付(年月)をつけて別保存というマクロを作ろうとしています。現在下記で作成中ですが、これだと元ファイルの.docxもファイル名として認識されており、ABC.docx → ABC.docx.2023_05.docxと保存されます。 ABC2023_05.docx にしたいです。 Sub ファイル名取得して保存() Dim タイプ As Variant Dim 区切り As String Dim ドット位置 As Integer Dim 日付 As String Dim ファイル名 As String Dim タイトル As String '拡張子を定義 タイプ = ActiveDocument.name 区切り = "." ドット位置 = Len(タイプ) - (InStrRev(タイプ, 区切り)) タイプ = Right(タイプ, ドット位置 + 1) 日付 = Format(Date, "yyyy_mm") タイトル = ActiveDocument ファイル名 = Application.PathSeparator & タイトル & 日付 & タイプ With ActiveDocument .SaveAs FileName:=.Path & ファイル名 End With End Sub

  • VBA フォルダ内ファイルにマクロ一括処理

    フォルダ内ファイルのマクロを一括実行したいです。 フォルダ内ファイル全てに下記のマクロを登録 Sub 値貼り付け() 'シート4番目を選択 Sheets(4).Select 'シート名1文字目が「★」以外のシートを選択 For Each i In ThisWorkbook.Sheets If Not i.Name Like "★*" Then i.Select Replace:=False End If Next i '全セル選択 Cells.Select 'コピー Selection.Copy '値貼り付け Selection.PasteSpecial Paste:=xlPasteValues Cells(1, 1).Select Sheets(1).Select '「.xlsx」で保存 Application.DisplayAlerts = False Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") With ActiveWorkbook f = fso.GetBaseName(.Name) .SaveAs .Path & "\" & f & "保存.xlsx", FileFormat:=xlWorkbookDefault .Close End With Set fso = Nothing End Sub 一括でマクロを実行する用のファイルに下記マクロを登録 Sub 一括処理() Dim Fpath As String Dim Fname As String Dim Wb As Workbook Fpath = ThisWorkbook.Path & "\" Fname = Dir(Fpath & "*.xlsm") Do Until Fname = "" If Fname = ThisWorkbook.Name Then Else Application.DisplayAlerts = False 'ブックを開く Set Wb = Workbooks.Open(Fpath & Fname) 'マクロ実行 Application.Run "'" & Fname & "'!値貼り付け" Wb.Close SaveChanges:=True Application.DisplayAlerts = True End If Fname = Dir() Loop End Sub 一括処理の実行をすると、フォルダ内の一つのファイルだけ マクロ実行されると終了してしまいます。 各々のファイルには他にもマクロを登録していて、そちらは 'マクロ実行 Application.Run "'" & Fname & "'!値貼り付け" のマクロの名前部分を変更して、同様に一括処理していますが 問題なく動きます。 なぜかこの「値貼り付け」のマクロだけ全ファイルに動作して くれません。 色々自分なりに調べているのですが、どうしても原因不明で 今回投稿させて頂きました

専門家に質問してみよう