0

何万ものエントリを含むリスト「リスト A」があります (4 つのエントリの例を以下に示します)。「リストA」から別のリスト「リストB」を作りたい。「リスト B」の各エントリには、「リスト A」の各エントリの先頭にある「>」文字に続く最初の「単語」の最初の 4 (5 のうち) 文字のみを含める必要があります。

たとえば、次のような「リスト B」が必要です: 2JUG 3JU9 1JU8 3JUE

私はスクリプトを書くのが初めてで、あなたが提供できる助けをいただければ幸いです. 問題を解決するのに最も近かったのは、最初の列を印刷することでしたが、最初の「単語」の 5 文字すべてと、次の行の長い文字列が得られました。私は脚本を書くのが初めてなので、可能であれば、あなたの説明の「ダミー用」バージョンを教えてください。ありがとうございました!

以下の「リスト A」のエントリの例

2JUGA 78 NMR NA NA NA no TubC タンパク質 [ANGIOCOCCUS DISCIFORMIS] || 2JUGB GPLGSSAGALLAHAASLGVRLWVEGERLRFQAPPGVMTPELQSRLGGARH ELIALLRQLQPSSQGGSLLAPVARNGRL

|| 3JU9A 237 XRAY 2.10 0.207 0.253 コンカナバリン-Br [カナダ ブラジル] なし || 1AZDA 1AZDB 1AZDC 1AZDD 4H55A ADTIVAVELDTYPNTDIGDPSYPHIGIDIKSVRSKKTAKWNMQNGKVGTA HIIYNSVGKRLSAVVSYPNGDSATVSYDVDLDNVLPEWVRVGLSASTGLY KETNTILSWSFTSKLKSNSTHETNILHFMFNHPFSKDQKDLILQGDATTGT EGNLRSSLTRVSSNGSPQGSSVGRALFYALFTGANGFYAFFKHIWESSLIVASFAT

1JU8A 37 NMR NA NA NA no レギンスリン [NA] ADCNGACSPFEVPPCRSRDCRCVPIGLFVGFCIHPTG

3JUEA 368 XRAY 2.30 0.203 0.219 コイルドコイル、ANK リピート、および PH ドメイン含有タンパク質 1 [HOMO SAPIENS] を伴う ARFGAP なし || 3JUEB GPLGSGSGHLAIGSAATLGSGGMARGREPGGVGHVVAQVQSVDGNAQCCD CREPAPEWASINLGVTLCIQCSGIHRSLGVHFSKVRSLTLDSWEPELVKL MCELGNVIINQIYEARVEAMAVKKPGPSCSRQEKEAWIHAKYVEKKFLTK LPEIRGRRGGRGRPRGQPPVPPKPSIRPRPGSLRSKPEPPSEDLGSLHPG ALLFRASGHPPSLPTMADALAHGADVNWVNGGQDNATPLIQATAANSLLA CEFLLQNGANVNQADSAGRGPLHHATILGHTGLACLFLKRGADLGARDSE GRDPLTIAMETANADIVTLLRLAKMREAEAAQGQAGDETYLDIFRDFSLM ASDDPEKLSRRSHDLHTL

4

1 に答える 1

1

これが解決策です-非常に簡単ですが、提供された入力を想定して仕事をします:

Sub NMRData()
    With Selection.Find
        .Text = "^p>"
        .Replacement.Text = "@@@>"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "@@@>"
        .Replacement.Text = "^p>"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

    For k = ThisDocument.Paragraphs.Count To 1 Step -1
        Set oPara = ThisDocument.Paragraphs(k)
        oPara.Range.Text = Left(oPara.Range.Text, 5) & vbNewLine
    Next k

    ThisDocument.SaveAs FileName:="listB.docx", FileFormat:=wdFormatXMLDocument

End Sub

必要な出力は、新しいDOCXファイルと同じフォルダーに保存されます。

コードを実行するには、VBAインターフェイスを介して+を押してから-を押すか、ALT+F11を押して名前でマクロを選択して実行します。F5ALTF8

すぐに使用できるコードを含むサンプルDOCM:https ://www.dropbox.com/s/6zt4nfn7rt8eqc7/NMRDataListA.docm

PSこれは私の最初のWord-VBAエクスペリエンスです)

于 2013-02-07T21:37:39.630 に答える