Wordでマクロを用いたチェックボックスについて

このQ&Aのポイント
  • Word2003まではマクロを用いてチェックボックスを作成できましたが、Word2013では実行時エラーが発生して作成できません。
  • エラーの原因として、指定されたコレクションのメンバーが存在しないことが考えられます。
  • Word2013でマクロを利用してチェックボックスを作成する方法や修正方法が知りたいです。
回答を見る
  • ベストアンサー

Wordでマクロを用いたチェックボックスについて

Word2003までは下記のマクロでチェックボックスを作成することができたのですが、Word2013で作成し実行すると、  実行時エラー'5941'  指定されたコレクションのメンバーは存在しません。 となり作成できません。 デバッグをクリックすると、  Set myRange = Selection.Fields(1).Code の行に印が付きます。 修正方法や、Word2013にてマクロでチェックボックスを作成するコマンドをご存じの方がいらっしゃいましたら、よろしくお願いい致します。 Sub FldCbox()  Dim myRange As Range  '  Set myRange = Selection.Fields(1).Code  '  If myRange.Text = "MACROBUTTON FldCbox " & ChrW(9744) Then   myRange.Text = "MACROBUTTON FldCbox " & ChrW(9745)  Else   myRange.Text = "MACROBUTTON FldCbox " & ChrW(9744)  End If  '  With Selection   .Fields(1).Update   .Fields(1).ShowCodes = False   .SetRange Selection.End, Selection.End  End With End Sub

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

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

フィールドコードについてはほとんど知らないのですが ページ番号などフィールドコードに該当するものを追加して 選択した状態でマクロを実行すればチェックボックスが作成されます。  ↓ 下記のmyrangeは.Fields(1)の.Codeが選択されていないとエラーになります。 Set myRange = Selection.Fields(1).Code

aspiring1111
質問者

お礼

解決しました。 ありがとうございました。

関連するQ&A

  • エクセル マクロ:チェックボックス コピー

    教えてください。 sheet1にデータがあり sheet2にチェックボックスとコマンドボタンがあります。 チェックボックスにレ点を入れ、コマンドボタンを押すと sheet1の該当する列をコピーして、sheet3に貼り付ける マクロを作ろうと思ってますがうまくいきません。 下記のマクロを使えるように手直ししていただけないでしょうか。 よろしくお願い致します。 Private Sub CommandButton1_Click() Dim myrange As String Dim rmax As Long rmax = Sheets("sheet1").Range("A2").End(xlDown).Row With Sheets("sheet2") If .CheckBox1 Then myrange = myrange & ",$B$1:$B$" & rmax If .CheckBox2 Then myrange = myrange & ",$C$1:$C$" & rmax If .CheckBox3 Then myrange = myrange & ",$D$1:$D$" & rmax End With If myrange = "" Then MsgBox "チェックしてください" Exit Sub End If myrange = "$A$2:$A$" & rmax & myrange Sheets("sheet1").Range(myrange).Copy Sheets("sheet3").Range("A1").PasteSpecial xlPasteValues Application.CutCopyMode = False Sheets("sheet3").Select End Sub

  • エクセル マクロ:チェックボックス コピー2

    昨日質問し、解決したと思ったのですが、データ量とチェックボックスの数を増やしたら エラーが出てしまいました。解決策を教えてください。 sheet1にはデータがあり行数は25000です。(行数は変動で行数MAXだったりもします) sheet2にはチェックボックス20個とコマンドボタンがあります。 下記のマクロでは17個までチェックしてもコピー出来ましたが、18個目からエラーが出ました。 よろしくお願い致します。 Private Sub CommandButton1_Click() Dim myrange As String Dim rmax As Long rmax = Sheets("sheet1").Range("B1").End(xlDown).Row With Sheets("sheet2") If .CheckBox1 Then myrange = myrange & ",$B$1:$B$" & rmax If .CheckBox2 Then myrange = myrange & ",$C$1:$C$" & rmax If .CheckBox3 Then myrange = myrange & ",$D$1:$D$" & rmax If .CheckBox4 Then myrange = myrange & ",$E$1:$E$" & rmax If .CheckBox5 Then myrange = myrange & ",$F$1:$F$" & rmax If .CheckBox6 Then myrange = myrange & ",$G$1:$G$" & rmax If .CheckBox7 Then myrange = myrange & ",$H$1:$H$" & rmax If .CheckBox8 Then myrange = myrange & ",$I$1:$I$" & rmax If .CheckBox9 Then myrange = myrange & ",$J$1:$J$" & rmax If .CheckBox10 Then myrange = myrange & ",$K$1:$K$" & rmax If .CheckBox11 Then myrange = myrange & ",$L$1:$L$" & rmax If .CheckBox12 Then myrange = myrange & ",$M$1:$M$" & rmax If .CheckBox13 Then myrange = myrange & ",$N$1:$N$" & rmax If .CheckBox14 Then myrange = myrange & ",$O$1:$O$" & rmax If .CheckBox15 Then myrange = myrange & ",$P$1:$P$" & rmax If .CheckBox16 Then myrange = myrange & ",$Q$1:$Q$" & rmax If .CheckBox17 Then myrange = myrange & ",$R$1:$R$" & rmax If .CheckBox18 Then myrange = myrange & ",$S$1:$S$" & rmax If .CheckBox19 Then myrange = myrange & ",$T$1:$T$" & rmax If .CheckBox20 Then myrange = myrange & ",$U$1:$U$" & rmax End With If myrange = "" Then MsgBox "チェックしてください" Exit Sub End If myrange = "$A$1:$A$" & rmax & myrange Sheets("sheet1").Range(myrange).Copy Sheets("sheet3").Range("A1").PasteSpecial xlPasteValues Sheets("sheet3").Select End Sub

  • 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

  • フォームのCheck boxとOLEObjectのCheckboxのマクロの違い?

    エクセル2003です。 ワークシート上に複数個のチェックボックスを配置し、オンの場合、その左隣のセルの値を返すマクロを作成する場合についての質問です。 普段はフォームのCheck boxを使っています。 フォームのCheck boxなら Sub ChkBx() With ActiveSheet.CheckBoxes(Application.Caller) If .Value = xlOn Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub と、標準モジュールに一つだけプロシージャを書いて、複数個のCheck boxに同一のマクロを登録すれば簡単に出来ます。 ところがこれをOLEObjectのCheckboxでやってみようと思ったところ、フォームのように一つのプロシージャを使いまわすことができず、シートモジュールに以下のように各Checkboxごとのマクロを書かなくてはいけないようです。 Private Sub CheckBox1_Click() With OLEObjects("CheckBox1") If .Object.Value Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub Private Sub CheckBox2_Click() With OLEObjects("CheckBox2") If .Object.Value Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub Private Sub CheckBox3_Click() With OLEObjects("CheckBox3") If .Object.Value Then MsgBox .TopLeftCell.Offset(0, -1).Value End If End With End Sub 3つや4つくらいならどうってことはないのですが十数個もあるとかなり面倒です。 OLEObjectのCheckboxでももっと簡単にする方法はないのでしょうか? それともわたしが何かOLEObjectのCheckboxの使い方について思い違いをしているのでしょうか? ご教示をお願いいたします。

  • WORDマクロエラー

    Wordでテキストボックスをレイアウト枠に変換するマクロを作りました。 簡単なコードだと思うのですが、「オブジェクト変数またはブロック変数が設定されていません」というエラーが出てしまいます。 どこに原因があるのでしょうか? Sub テキストボックス変換() Dim i Dim sp As Shape For i = 1 To ActiveDocument.Shapes.Count If sp.Type = msoTextBox Then sp.ConvertToFrame End If Next End Sub

  • WORDのマクロについて質問です

    WORDのマクロで質問です。 WORDでテキストファイルを読み込み、整形する作業があるのですが、 テキストファイルの行数を判断して、その回数だけマクロを実行さ せるようにするには、どうすればよいのでしょうか。 具体的には、 Sub 整形() Selection.Delete Unit:=wdCharacter, Count:=1 Selection.Delete Unit:=wdCharacter, Count:=1 Selection.Delete Unit:=wdCharacter, Count:=1 Selection.MoveRight Unit:=wdCharacter, Count:=5 Selection.TypeText Text:=" " Selection.MoveDown Unit:=wdLine, Count:=1 Selection.MoveLeft Unit:=wdCharacter, Count:=8 End Sub この作業を行数分だけ行うマクロを作成したいのですが、Webで調べて みても、ピンと来るものが見つかりませんでした。 どうかお助けください。

  • ワードマクロについて

    ワードマクロについて MS WORD 2003ファイル中の「図の書式 設定」の「高さ」および「幅」を、インプットボックス で入力した数値(%)で拡大・縮小するために、 下記マクロを作成しました。  下記マクロは、ケミドローで作成した化学式を WORD文書にコピー・ペーストした図に対して は正常に機能します。  しかし、特許・実用新案公報DB (http://www.ipdl.inpit.go.jp/Tokujitu/tjsogodb.ipdl?N0000=101) で検索した特許文献を、WORD文書にコピー・ペースト した場合、その図に対してマクロを実行すると、「高さ」 および「幅」が入力値とは異なるというバグがあります。  例えば、上記サイトで検索した「特開2010-1」を WORDファイルにコピー・ペーストした後、【図1】 に対して、このマクロで「30」(%)を入力すると、 「高さ」および「幅」に、それぞれ「10%」および 「22%」が入力されます。  このバグの原因および解決策をご教示下さい ますようお願いします。 Sub Size_Each_Image() ' 選択イメージのサイズ変更。 ' ' 現在のIMEの状態を格納する場所を宣言 Dim sinIME As Single ' インプットボックスで入力された%の格納場所を宣言 Dim varX As Variant ' ' 選択箇所が行内図でない場合、終了。 If Selection.Type <> wdSelectionInlineShape Then End ' ' 現在のIMEの状態を格納し、日本語入力をOFFにする With ActiveWindow sinIME = .IMEMode .IMEMode = wdIMEModeOff End With ' ' インプットボックスでサイズ入力。 varX = InputBox("選択イメージのサイズ(%)は?", "選択イメージのサイズ") ' キャンセルされた場合、日本語入力を元に戻して終了。 If varX = "" Then ActiveWindow.IMEMode = sinIME End End If ' ' サイズ入力 With Selection.InlineShapes(1) .ScaleHeight = varX .ScaleWidth = varX End With ' ' IMEを元に戻す ActiveWindow.IMEMode = sinIME ' End Sub

  • Word2010特定の名前を置き換えるマクロ

    例えば、Wordの文章で「田中」とあるものを「山田」に変えたい場合は、置き換えの機能を使ってマクロの記録ができると思います。 しかし、こうするとテキストボックスやヘッダフッタに記載された文字は変更できないように思います。 どうすれば、これらの文字も含めて置換の対象とすることができるか教えてください。 Sub Macro() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "山田" .Replacement.Text = "田中" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • Wordマクロ

    Wordでワイルドカードを使った置換マクロを作ったのですが、 「MatchWildcardsとMatchSoundsLike、MatchAllWordForms、MatchFuzzyは、同時にTrueに設定することはできません。」 というエラーが出てしまいます。 MatchSoundsLike、MatchAllWordForms、MatchFuzzyは、 ソースに書いてないしTrueにもしていません。 どこが悪いのでしょうか? 以下がソースファイルです、よろしくお願いいたします。 Sub substitute() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "[!a-f]{1,}" .Replacement.Text = "@" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • ワード マクロ

    WORDについての質問です。 現在以下のマクロをツールバーのボタンに登録しています。 Sub Macro1() Dim Para As Paragraph For Each Para In ActiveDocument.Paragraphs '段落単位で With Para.Range.Characters If .First.Text Like "[tk]" Then '先頭を処理 .First.Delete End If End With Next End Sub これによって各段落の頭にある「t」と「k」を消去する処理を行っています。 現在作成を試みているのは,上記の処理を行ったあとに,別の作業をしたあと,いったん消してしまった文頭の「t」「k」をやっぱり復活させたいという場合の処理です。 そのようなマクロを作成し,ツールバーのボタンに登録させたいのですが,うまくできません。 どなたか教えていただければ非常に助かります。 どうかよろしくお願いいたします。

専門家に質問してみよう