Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルWord差し込みで、チェックボックスにチェックを入れる方法を教えてください
記事No42756
投稿日: 2016/11/21(Mon) 10:46
投稿者ありママ
解決済: ON
OS:
Access Version:
Windows7 Access2007

入力画面のデータをWord文書(テンプレート)にそのまま差し込んで文書作成をしています。
例文:
Set Rng = Obj.Selection.Range
Rng.Find.ClearFormatting
Rng.Find.Execute findtext:="<<住所>>", Replacewith:=Nz(strfrm1.住所)
このやり方はネットで調べて拝借したもので、本当に理解している訳ではありませんが、大変便利に使わせていただいています。
今回、Word文書(テンプレート)の項目に、チェックボックスが設定してあり、該当する内容のチェック欄にチェックを入れたいのですが、方法がわかりません。
どなたか、教えていただけないでしょうか?

タイトルRe: Word差し込みで、チェックボックスにチェックを入れる方法を教えてください
記事No42757
投稿日: 2016/11/22(Tue) 23:55
投稿者mayu
解決済: ON
こんにちは。

> 今回、Word文書(テンプレート)の項目に、チェックボックスが設定してあり、
> 該当する内容のチェック欄にチェックを入れたいのですが

Wordで使用できる CheckBox は

  ■ ContentControl インターフェイス
https://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.word.contentcontrol.aspx

  ■ OLEFormat メンバー
https://msdn.microsoft.com/ja-jp/library/office/ff197153.aspx

  ■ FormField オブジェクト
https://msdn.microsoft.com/ja-jp/library/office/ff837885.aspx

と、いくつか種類があり、それぞれ扱い方が異なります。

オブジェクト毎に
文書内での コントロールの列挙 及び ON/OFF の切り替え方を
サンプルとして掲載しておきますので
ご自身が配置したオブジェクトに対する操作部分のみを
参考になさればよろしいでしょう。

'------------------------------------------------------------------------------
'■ 参照設定 Microsoft Word X.X Object Library

Sub sample()
  Const DOC_PATH As String = "C:\Users\???\***.docx"  '文書のフルパス
  Dim wdApp      As Word.Application
  Dim wdDoc      As Word.Document
  Dim i          As Long
  
  With CreateObject("Scripting.FileSystemObject")
    If (Not .FileExists(DOC_PATH)) Then Exit Sub
  End With
  
  Set wdApp = New Word.Application
  Set wdDoc = wdApp.Documents.Open(DOC_PATH)
  
  For i = 1 To wdDoc.ContentControls.Count
    If (wdDoc.ContentControls(i).Type = wdContentControlCheckBox) Then
      With wdDoc.ContentControls(i)
        Debug.Print "Content:" & vbTab & .ID & vbTab & .Title
        Rem .Checked = True
      End With
    End If
  Next i
  
  For i = 1 To wdDoc.InlineShapes.Count
    If (wdDoc.InlineShapes(i).OLEFormat.progID = "Forms.CheckBox.1") Then
      With wdDoc.InlineShapes(i).OLEFormat.Object
        Debug.Print "ActiveX:" & vbTab & .Name & vbTab & .Caption
        Rem .Value = True
      End With
    End If
  Next i
  
  For i = 1 To wdDoc.FormFields.Count
    If (wdDoc.FormFields(i).Type = wdFieldFormCheckBox) Then
      With wdDoc.FormFields(i)
        Debug.Print "FormField:" & vbTab & .Name & vbTab & .Result
        Rem .CheckBox.Value = True
      End With
    End If
  Next i
  
  wdDoc.Close
  wdApp.Quit
  Set wdDoc = Nothing
  Set wdApp = Nothing
End Sub

'------------------------------------------------------------------------------

  では ☆

タイトルRe^2: Word差し込みで、チェックボックスにチェックを入れる方法を教えてください
記事No42758
投稿日: 2016/11/24(Thu) 10:03
投稿者ありママ
解決済: ON
mayu様
お返事をありがとうございました。
長年Accessに関わっているわりにはさっぱり実力がついていない私にとって、かなり荷の重いことだったんだと改めて思い知ったところです。
教えていただいたコードをすべて理解した訳ではありませんが、コマンドボタンを設置して実行したところ、確かにWord文書のチェック欄にチェックが付きました。
実は、4年前も同じ件で悩んだことがありその時はあきらめてしまいそのままになっていましたので、思わず拍手してしまいました。
 この部分を使用しました。
  For i = 1 To wdDoc.InlineShapes.Count
    If (wdDoc.InlineShapes(i).OLEFormat.progID = "Forms.CheckBox.1") Then
      With wdDoc.InlineShapes(i).OLEFormat.Object
        Debug.Print "ActiveX:" & vbTab & .Name & vbTab & .Caption
        Rem .Value = True
      End With
    End If
  Next i
あとは、自分のコードにうまく取り込めればと思いますが時間がかかりそうですので、この件はいったんクローズさせていただきます。
成功しましたら報告させていただきます。
mayu様 お忙しいなか、丁寧に教えていただいて本当にありがとうございました。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る