- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでアクセスのデータをワードのブックマークに転写したところ)
VBAでアクセスのデータをワードのブックマークに転写する方法とエラーの対処法
このQ&Aのポイント
- VBAを使用してアクセスフォームのテキストをワードのブックマークに転写する方法について説明します。
- しかし、再設定時にオブジェクトが見つからないエラーが発生することがあります。
- このエラーを回避するためには、ブックマークの再設定方法を見直す必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
1) Withステートメントで指定しているオブジェクト名が違う 2) フォントの色に相当するプロパティ名が違う が疑われます。 Wordの世界だけで動作を確認するため、Word97にて以下のコードを実行したところ、期待されている(と思われる)動作をしていますので。 Sub BMTest() Const Anken As String = "新しい案件名" 'テスト用仮設定 Const AnkenColor As Long = 6 'テスト用仮設定 Set BMAnken = ActiveDocument.Bookmarks("案件マーク").Range With BMAnken 'BookMark1 => BMAnken .Text = Anken '.Selectの行削除 .Font.ColorIndex = AnkenColor 'Color => ColorIndex End With '案件のブックマークの再設定 ActiveDocument.Bookmarks.Add "案件マーク", BMAnken 'Selection.Range => BMAnken End Sub 掲載された部分以外で、元の「案件マーク」と異なる位置に、BookMark1に相当するブックマークを指定しており、旧位置の「案件マーク」は破棄してよい。 および、 Word98以降で、Colorでフォントの色のプロパティにアクセスできるよう変更されている。 のであったらすみません。
お礼
ご丁寧なご回答、誠にありがとうございます。 ご教示いただいた内容を参考に、以下のように改めたところ、進むようになりました。 ワードファイルの書式の修正 '案件の記号を表示する場合に赤文字にする Anken = Forms![フォーム名]![案件記号] AnkenColor = IIf(Hiduke >= Int(Now()),wdColorRed, wdColorWhite) '日付が現在日時より大ならフォントを赤に指定、そうでなければ白(見えなく)にする Set BMAnken = oAppDoc.ActiveDocument.Bookmarks("AnkenMark").Range '"案件マーク"→"AnkenMark" With BMAnken'BookMark1→BookMark1は書き間違いで、直しました。 .TEXT = Anken .Select .Font.Color = AnkenColor End With '案件のブックマークの再設定 oAppDoc.ActiveDocument.Bookmarks.Add "AnkenMark", BMAnken 'Selection.Range→BMAnkenに直しました。 '他のブックマークの処理(上記と同様な操作の繰り返し) .Selectの行削除をおこなったら、範囲選択されず、次の処理で文字の位置をずらす処理がうまく進まなくなってしまったので、再度.Selectを入れました。 また、ブックマーク名を半角文字に直した所、すんなり行くようになりました。 繰り返して確かめたところ、問題はありませんでした。 うまく動くようになり、大変うれしく思っております。ご教示下さり、誠にありがとうございました。
補足
質問でOSとAccess,WordのVer.を紹介するのを失念しておりました。大変失礼しました。 OS:win2k Access:Word:2002です。 よって、御想定下さいました「フォントの色に相当するプロパティ名」については問題ないかと考えております。 いろいろと想定して下さいまして、誠に感謝します。