2017-04-18 5 views
1

VBAを初めて使用しています。ドキュメント内のテキストを置き換えるときにテキストを配置し、自動テキストコマンド(F3)を実行できるアプリケーションを作成しようとしています。自動テキストを置換して実行します

私の問題は、カーソルが失われた後です。選択のための有効なコードが存在しないというメッセージが表示されます。誰かが助けてくれますか?

私は、コードの下に使用しています:

Sub VbaAutomation() 
    With Selection.Find 
    .ClearFormatting 
    .Text = "-A11" 
    .Replacement.ClearFormatting 
    .Replacement.Text = "" 
    .Execute Replace:=wdReplaceAll, Forward:=True, _ 
    Wrap:=wdFindContinue 
    .Execute 
    SendKeys "{F3}" 
    End With 
End Sub 

より良い解決策ではなく、テキストを交換し、コードを実行することができます。

ビルディングブロックコードを自動テキストコードに置き換えるマクロを実行します。たとえば、私の単語文書はABCD, CDEFのコードを持ち、マクロはビルディングブロックコードを自動的に反復し、正確な自動テキストコード段落に置き換えます。

+0

私はあなたの意図を完全には理解していませんが、誰もあなたに忠告したいと思わないことに注意してください。私はF3があなたが達成したいことと何が関係しているのか疑問を抱いています。あなたのコードは、選択されたテキスト内で "-A11"を探し、それを ""に置き換えます。 「ビルディングブロックコード」または「オートテキストコード」については言及されておらず、F3がこれらのいずれかまたは両方と何らかの形で関連している場合、F3はそれが見つかった残りのコードとは関係がありません。それが価値があることについて:あなたは、あなたのコンセプトが単に "-A11"を ""で置き換えることを許すべきであるということを受け入れるべきです。これ以上何もない。 – Variatus

+0

ありがとうございます。F3は自動テキストとビルディングブロックを実行します。ビルディングブロックを実行できるように-p1を置き換えます。 – Nick

+0

私たちはお互いに話しています。 (1)F3がプログラムを呼び出します。 VBAでは、プログラムを呼び出す場合は、その名前を知る必要があります。しかし、私は、プログラムF3がVBAマクロではないと確信しています。したがって、プログラムの種類を実行するには、適切なVBA構文を使用して呼び出す必要があります。 (2)ドキュメント内のプレースホルダをビルディングブロックに置き換える場合は、ビルディングブロックを指定し、プレースホルダを見つけて置き換える必要があります。ビルディングブロックを 'Find'メソッドの' Replacement.Text'プロパティにロードすることができるなら、その目的のためにあなたのコードのバージョンを使うかもしれません。 – Variatus

答えて

0

これは、vbaを見つけて交換する方法ではありません。 F3を使用する必要はありません。あなたは.Executeの結果を収集し、何かを見つける限り繰り返す必要があります。

は、現在のドキュメント内-A11のすべての発生を置き換えるために、これを試してみてください:

Sub VbaAutomation() 
On Error GoTo ErrorTrap 

    Dim i As Long, crazyUpLimit As Long 
    Dim isFound As Boolean 
    isFound = True 
    crazyUpLimit = 1000 

    Do While (isFound And i < crazyUpLimit) 
     With Selection.Find 
      .ClearFormatting 
      .Text = "-A11" 
      .Replacement.ClearFormatting 
      .Replacement.Text = "" 
     ' here is the trick to go on as long as you find 
      isFound = .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue 
     End With 
     i = i + 1 

    Loop 

Exit Sub 

FilePatternError: 
    MsgBox ActiveDocument.Name & ": unknown patter of document (" & fPattern & " expected)." 

Exit Sub 
ErrorTrap: 
    Beep 
    MsgBox "FAILED" & Chr(13) & "Error number: " & err & Chr(13) & Error(err) 

End Sub 

PS:あなたのPCを遮断避けるために、定期的なエラー処理とcrazyUpLimitを追加しました - それは、多くの場合、自分のために便利です。

シェア&お楽しみください!

関連する問題