从文件中提取部分单词

时间:2013-02-06 20:24:37

标签: list vba extract word-vba truncate

我有一个列表,“列表A”,包含数以万计的条目(下面显示了4个示例条目)。我想从“列表A”创建另一个列表,“列表B”。我需要“列表B”的每个条目仅包含“>”之后的第一个“单词”的前4个(满分5个)字符。位于“列表A”中每个条目开头的字符。

所以,例如,我想要一个看起来像这样的“列表B”: 2JUG 3JU9 1JU8 3JUE

我是剧本写作的新手,非常感谢您提供的任何帮助。我最接近解决我的问题的是打印第一列,但是这给了我第一个“单词”的所有5个字符,加上下一行中的长字符串。我是脚本写作的新手,所以如果可能的话,请尝试给我解释的“for dummies”版本。谢谢!

来自“列表A”

示例条目

  

2JUGA 78 NMR NA NA NA无TubC蛋白[ANGIOCOCCUS DISCIFORMIS] || 2JUGB   GPLGSSAGALLAHAASLGVRLWVEGERLRFQAPPGVMTPELQSRLGGARH   ELIALLRQLQPSSQGGSLLAPVARNGRL

     

3JU9A 237 XRAY 2.10 0.207 0.253否伴刀豆球蛋白-B [CANAVALIA BRASILIENSIS] || 1AZDA 1AZDB 1AZDC 1AZDD 4H55A   ADTIVAVELDTYPNTDIGDPSYPHIGIDIKSVRSKKTAKWNMQNGKVGTA   HIIYNSVGKRLSAVVSYPNGDSATVSYDVDLDNVLPEWVRVGLSASTGLY   KETNTILSWSFTSKLKSNSTHETNALHFMFNQFSKDQKDLILQGDATTGT   EGNLRLTRVSSNGSPQGSSVGRALFYAPVHIWESSAVVASFEATFTFLIK   SPDSHPADGIAFFISNIDSSIPSGSTGRLLGLFPDAN

     1JU8A 37 NMR NA NA NA无Leginsulin [NA]   ADCNGACSPFEVPPCRSRDCRCVPIGLFVGFCIHPTG

     <3> 3JUEA 368 XRAY 2.30 0.203 0.219没有ARFGAP与卷曲螺旋,ANK重复和含有PH结构域的蛋白1 [HOMO SAPIENS] || 3JUEB   GPLGSGSGHLAIGSAATLGSGGMARGREPGGVGHVVAQVQSVDGNAQCCD   CREPAPEWASINLGVTLCIQCSGIHRSLGVHFSKVRSLTLDSWEPELVKL   MCELGNVIINQIYEARVEAMAVKKPGPSCSRQEKEAWIHAKYVEKKFLTK   LPEIRGRRGGRGRPRGQPPVPPKPSIRPRPGSLRSKPEPPSEDLGSLHPG   ALLFRASGHPPSLPTMADALAHGADVNWVNGGQDNATPLIQATAANSLLA   CEFLLQNGANVNQADSAGRGPLHHATILGHTGLACLFLKRGADLGARDSE   GRDPLTIAMETANADIVTLLRLAKMREAEAAQGQAGDETYLDIFRDFSLM   ASDDPEKLSRRSHDLHTL

1 个答案:

答案 0 :(得分: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文件保存在同一文件夹中。

要运行代码,请按 ALT + F11 ,然后按 F5 - 通过VBA界面,或按 ALT + F8 按名称选择并运行宏。

带有现成代码的示例DOCM:https://www.dropbox.com/s/6zt4nfn7rt8eqc7/NMRDataListA.docm

P.S。这是我的第一次Word-VBA体验)