Word文档VBA删除文本,如果不是" X" " Y"或" Z"

时间:2017-05-17 20:43:15

标签: if-statement ms-word word-vba delete-row

我想首先说明我不是一个优秀的程序员,我的学位是化学,所以这对我来说相当陌生!任何帮助将不胜感激!

因此,我希望删除文档中与文本匹配条件不匹配的所有文本:

https://www.mnsu.edu/supersite/academics/catalogs/undergraduate/2014-2015/2014-2015-undergraduate-bulletin.pdf

例如,它会删除大部分内容,直到第15页的所有内容,并且在第15页上它会留下"预先通过科学ACCT 200 BIOL 220"等等..

我一直在尝试的剧本是:

Sub DeleteRowWithSpecifiedText()
Dim sText As String

sText = InputBox("Enter text for Row to be deleted")
Selection.Find.ClearFormatting
With Selection.Find
    .Text = sText
    .Wrap = wdFindContinue
End With
Do While Selection.Find.Execute
    If Not Selection.Information(wdWithInTable) Then
        Selection.Rows.Delete
    End If
Loop

结束子

但是这会抛出错误5941:"集合中请求的成员不存在"。

我对编码非常陌生,但我在文档的底部找到了我想要保留在文档中的所有内容的列表。

如果可能的话,它可以删除该行,如果它与类ID的通用形式不匹配: " XX ###"或" XXX ###"或" XXXX ###"

&#34; ACCT&#34; &#34; AIS&#34; &#34; ANTH&#34; &#34; ART&#34; & #34; AST&#34; &#34; AET&#34; &#34; AVIA&#34; &#34; BIOL&#34; &#34; BLAW& #34; &#34; CAHN&#34; &#34; CHEM&#34; &#34; CHIN&#34; &#34; CIVE&#34; < EM>&#34; BUS&#34; &#34; CDIS&#34; &#34; CMST&#34; &#34; CM&#34; &# 34; CS&#34; &#34; CORR&#34; &#34; CSP&#34; &#34; DAK&#34; &#34; DANC&# 34; &#34; DHYG&#34; &#34; ECON&#34; &#34; ED&#34; &#34; EDLD&#34; &#34; EEC&#34; &#34; KSP&#34; &#34; EE&#34; &#34; EET&#34; &# 34; ENG&#34; &#34; ESL&#34; &#34; EAP&#34; &#34; ENVR&#34; &#34; ethN的&# 34; &#34; EXED&#34; &#34; FILM&#34; &#34; FCS&#34; &#34; FINA&#34; &#34; FYEX&#34; &#34; FREN&#34; &#34; GWS&#34; &#34;的GeOG&#34; &#34 ; GEOL&#34; &#34; GER&#34; &#34; GERO&#34; &#34; HLTH&#34; &#34; HIST&#34 ; &#34; HONR&#34; &#34; HP&#34; &#34; HUM&#34; &#34; IT&#34; &#34; ENGR&#34; &#34; IEP&#34; &#34; IBUS&#34; &#34; IPO&# 34; &#34; IDST&#34; &#34; LAWE&#34; &#34; MGMT&#34; &#34; MET&#34; &#34; MRKT&#34; &#34; MASS&#34; &#34; MACC&#34; &#34; MBA&#34; &# 34; MATH&#34; &#34; ME&#34; &#34; MEDT&#34; &#34; MSL&#34; &#34; MDSM&# 34; &#34; MUSE&#34; &#34; MUSC&#34; &#34; MUSP&#34; &#34; NPL&#34; &#34; NURS&#34; &#34; PYIL&#34; &#34; PHYS&#34; &#34; POL&#34; &#34 ; PSYC&#34; &#34; RPLS&#34; &#34; REHB&#34; &#34; SCAN&#34; &#34; SOST&#34 ; &#34; SOWK&#34; &#34; SOC&#34; &#34; SPAN&#34; &#34; SPED&#34; &#34; STAT&#34; &#34; THEA&#34; &#34; URB的&#34; &#34; WCDP&#34; &#34 ; WLC&#34; &#34; 1&#34; &#34; 2&#34; &#34; 3&#34; &#34; 4&# 34; &#34; 5&#34; &#34; 6&#34; &#34; 7&#34; &#34; 8&#34; &#34; 9&#34; &#34; 0&#34;

%专业预科课程%脊柱前整形术%前牙科%预工程%预先法律%医学前%Mort房前科学%职业前治疗%前视光学%前骨科医学和外科手术% Pre-Pharmacy%Pre-Physical Therapy%Pre-Podiatric Medicine and Surgery%Pre-Veterinary Medicine%Academic Colleges%Advising / General Education / Diverse Cultures / Writing Intensive%Academic Programs%Accounting%Aging Studies(Formally Gerontology)%Alcohol and Drug研究%Allied Health and Nursing(Intro Course)%美国印第安人研究%人类学%应用组织研究%艺术%天文学%体育教练%运动训练%汽车工程技术%航空%生物化学%生物学%生物技术%工商管理%商业教育%商业法律%化学%中文(普通话)%土木工程%认知科学%沟通障碍%传播学%计算机工程%计算机工程技术%计算机信息技术%计算机科学%建筑管理%企业&amp;社区健身/健康%更正%咨询和学生人员%舞蹈%牙科卫生%地球科学%经济学%教育领导力%电气工程%电子工程技术%小学教育%英语%非母语人士英语(英语作为第二语言) %环境科学%民族研究%运动科学%家庭消费者科学%电影研究%财务%第一年经验%食品科学技术%法国%性别和妇女研究%地理%地质%德国%健康科学%历史%荣誉%人文%人力绩效%信息系统%铁系列工程%综合工程%跨学科研究%国际业务%国际关系%日本拉丁%拉丁美洲研究%执法%自由研究%管理%制造工程技术%营销%大众媒体%数学%机械工程%医学实验室科学%Militar y科学和领导力/军队ROTC%博物馆研究(见人类学)%音乐%非营利领导力%挪威%护理%哲学%哲学,政治和经济学(PPE)%物理学%政治学%葡萄牙语%心理学%娱乐,公园&amp;康复服务%康复辅导%俄罗斯%斯堪的纳维亚研究%科学教学%中学% - %&amp; K-%教育 - 专业教育%社会研究%社会工作%社会学%西班牙语%特殊教育:学术与实践行为策略师%体育管理%统计学%瑞典语%英语作为第二语言教学(TESL)%戏剧艺术%双城市工程%城市与娱乐区域研究%World Languages&amp;文化%

1 个答案:

答案 0 :(得分:0)

如果选择位于表格内,

Selection.Information(wdWithInTable)将返回True。因此,只有在表格中找到的项目时才会执行If Not Selection.Information(wdWithInTable)。但是,如果它不在表Selection.Rows.Delete中,则必须失败,因为只有在表中才能找到行。

另一方面,Selection.Rows.Delete也必须失败,因为它似乎是从Excel中借用的语法不正确。在Word中,您应首先扩展所选范围以包括整行,然后删除范围。

我意识到你似乎有一个循环,它可能会读取要从列表中删除的项目。这要复杂得多,但是在你的现有代码生效之后才能开始工作。因此,我建议首先关注该目标。

相关问题