2012-03-27 8 views
2

私は3つの異なるフォーラムでこの質問をしましたが、誰もそれを理解することはできません。私はいくつかのコードをコピーするVS2010にマクロを書き込もうとしています。だから、このセットアップ与えられた:ファイル間にテキストをコピーするVSマクロを作成するにはどうすればよいですか?

public class foo { 
    //[source1] 
    public overrides string ToString() { 
     return "Hello from Foo" 
    } 
    //[/source1] 
} 

public class bar { 
    //[destination1] 

    //[/destination1] 
} 

...目的は、マクロをクリックして、それはまた、toString()をオーバーライドしますように、バーにコピーしたコードを持つことです。私はクラスが別のファイルにある場合、それは完全に役に立たないということを除いて半作業バージョン

DTE.Find.FindWhat = "(//\[source1\]{(.|\n)*})//\[/source1\])|//\[destination1\]{(.|\n)*}//\[/destination1\]" 
    DTE.Find.Target = vsFindTarget.vsFindTargetSolution 
    DTE.Find.MatchCase = False 
    DTE.Find.MatchInHiddenText = True 
    DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxRegExpr 
    DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone 
    DTE.Find.Action = vsFindAction.vsFindActionReplaceAll 

...を持っています。見つかった実際のマッチをキャプチャできません。マクロを使ってウィンドウテキストを選択できないことを除いて、それらをvsFindResults1に出力できます。 Ctrl-A-> Ctrl-Cをクリックしてキャプチャできますが、このマクロを記録すると何も表示されません!!非常に挫折....任意のアイデア?

答えて

0

VirtualPointクラスとTextSelectionクラスを使用して、この種の操作を行うことができます。次のことはC#にあるが、VBは非常に似ているはずです。これはあなたに必要な正確な答えを与えるわけではありませんが、あなたが見なければならないクラスのいくつかを少なくとも示しています(TextSelectionクラスとVirtualPointクラスは、それらについて知っていない限り明白ではありません)。

TextSelection sel=ActiveWindow.Selection; 
sel.StartOfDocument(); 

// Use your find options here: 
if (sel.FindText(textToFind, (int)vsFindOptions.vsFindOptionsNone)) { 
    string matchedSourceText=sel.Text; 

    // use your replacement options here. This sets selection to the replacement text 
    if (sel.FindText(textToReplace, (int)vsFindOptions.vsFindOptionsNone)) { 
    sel.Insert(matchedSourceText, (int)EnvDTE.vsInsertFlags.vsInsertFlagsCollapseToEnd); 
} 

ここでは、選択したテキストをキャプチャする方法と、置き換えられたテキストの場所を見つけてそこにあるテキストを置換する方法を示します。あなたの場合は、ProjectItemsをすべて繰り返し、テキストをmatchedSourceText文字列に置き換えます。

+0

ああ、私は自分自身を反復する必要があります。私はこれを試してみる。 – MrEff

+0

そうです。これを行うにはいくつかの方法がありますが、私が思い出したように、プロジェクトのProjectItemを繰り返し処理する方法があります。 –

関連する問題