Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Access 2010)
Wordへ挿入した時、「文字列型が長すぎます」とエラーが出る
投稿日時: 19/07/08 00:17:05
投稿者: あぴす

ACCESSからWordを立ち上げ、特定のファイルを開いた後、ワードファイル側にブックマークを埋め込んでおいた場所へReplacewithでACCESSのフォーム上にあるデータ([日付]と[内容])をWordへ転記しワードファイルを作成したいです。
 
その際、[日付]はうまく転記されますが[内容]は転記されず「文字列型が長すぎます」とエラーが出てしまいます。長文の転記は出来ないのでしょうか。
コードは下記です。
 
どなたかお知恵を貸してください。
 
    Dim Obj As Object
    Dim Rng As Variant
  
    Me!日付 = 日付
    Me!内容 = 内容
  
    Set Obj = CreateObject("Word.Application")
  
        Obj.Documents.Add "C:\xxxxx\使いたいワードテンプレ.docx"
        Obj.Selection.WholeStory
        Obj.Visible = True
 
       Set Rng = Obj.Selection.Range
            Rng.Find.ClearFormatting
            Rng.Find.Execute findtext:="<<日付>>", Replacewith:=Me!日付
  
        Set Rng = Obj.Selection.Range
            Rng.Find.ClearFormatting
            Rng.Find.Execute findtext:="<<内容>>", Replacewith:=Me!内容
  
    Set Obj = Nothing
  
Exit_Button_Click:
        Set Rng = Nothing
        Set Obj = Nothing
    Exit Sub

回答
投稿日時: 19/07/08 10:01:18
投稿者: Suzu

引用:
「文字列型が長すぎます」とエラー
実際に、どのくらいの長さなのでしょうか。
 
短くしたら、エラーにはなりませんよね?
 
 
【Find.Execute メソッド (Word)】
https://docs.microsoft.com/ja-jp/office/vba/api/word.find.execute
 
ReplaceWithの説明
引用:
ReplaceWith    省略可能    Variant
置換文字列を指定します。 引数 Find によって指定された文字列を削除するには、空文字列 ("") を使用します。 引数 Find と同じように、特殊文字や高度な検索条件を指定できます。 グラフィック オブジェクトまたはその他の文字列以外の項目を置換文字列として指定するには、クリップボードにコピーし、引数 ReplaceWith に "^c" を指定します。

 
後半の説明
クリップボードへコピーしReplaceWith に "^c" を指定
を試して希望通りにならないのであれば、
 
Rng.Find.Execute findtext:="<<内容>>", Replacewith:=LEFT(Me!内容,240) & "<<内容>>"
Rng.Find.Execute findtext:="<<内容>>", Replacewith:=MID(Me!内容,〜〜〜
 
の様に、コード側にて対応を検討してみましょう。

回答
投稿日時: 19/07/08 10:11:44
投稿者: sk

引用:
ACCESSからWordを立ち上げ、特定のファイルを開いた後、
ワードファイル側にブックマークを埋め込んでおいた場所
ReplacewithでACCESSのフォーム上にあるデータ([日付]と[内容])を
Wordへ転記しワードファイルを作成したいです。

引用:
Dim Obj As Object
Dim Rng As Variant

Dim Obj As Object 'Word.Application
Dim Doc As Object 'Word.Document
 
引用:
Obj.Documents.Add "C:\xxxxx\使いたいワードテンプレ.docx"
Obj.Selection.WholeStory
Obj.Visible = True

Obj.Visible = True
Set Doc = Obj.Documents.Add(Template:="C:\xxxxx\使いたいワードテンプレ.docx")
 
引用:
Set Rng = Obj.Selection.Range
Rng.Find.ClearFormatting
Rng.Find.Execute findtext:="<<日付>>", Replacewith:=Me!日付
   
Set Rng = Obj.Selection.Range
Rng.Find.ClearFormatting
Rng.Find.Execute findtext:="<<内容>>", Replacewith:=Me!内容

With Doc
    .Bookmarks("日付").Range.Text = Nz(Me!日付, "")
    .Bookmarks("内容").Range.Text = Nz(Me!内容, "")
End With
 
引用:
Set Rng = Nothing
Set Obj = Nothing

Set Doc = Nothing
Set Obj = Nothing
 
-----------------------------------------------------------------
 
以上のように、ブックマークとして登録されている文字列自体を
書き換えてしまえばよろしいのではないかと。

トピックに返信