ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6969|回复: 18

关于多项内容的替换问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-4-27 21:47 | 显示全部楼层 |阅读模式

请教版主:如何才能把文件中的英文单词一次替换为空?

NAME Account No. Address

七日内通知 妥善保管

Date Post Number Vch.No.

书面通知 IY5F000902

Particulas Value Date

其中文档中还有其他英文字母不能替换。(如:IY5F000902), 我录制宏后,text 的值只能为其中的之一,这样的单词有好多,我不想一次一次的来弄,想一次全部替换掉,请版主指教。

[此贴子已经被作者于2005-4-27 21:47:13编辑过]

TA的精华主题

TA的得分主题

发表于 2005-4-27 22:57 | 显示全部楼层
你咋不用自动更正功能呢?

TA的精华主题

TA的得分主题

发表于 2005-4-28 04:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

请试试以下代码,有问题再作交流:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-4-28 4:39:47 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit '显式变量声明 Option Compare Text '不区分大小写 Sub ExampleSearchEnglishWords() Dim i As Range Application.ScreenUpdating = False '关闭屏幕更新 With ActiveDocument '活动文档 For Each i In .Words '遍历每个词组 '如果词组中以任意英文字母打头并且中间没有数字者,设置其格式为粗体(可据实变化) If i Like "[A-Z]*" And Not i Like "*#*" Then i.Bold = True Next With .Content.Find '查找 .ClearFormatting '清除查找格式 .Font.Bold = True '字体为粗体 .Format = True '格式查找 .Replacement.ClearFormatting '清除替换格式 '将所有粗体字符全部替换为""(删除) .Execute Forward:=True, Replace:=wdReplaceAll, FindText:="", ReplaceWith:="" End With End With Application.ScreenUpdating = True '恢复屏幕更新 End Sub '----------------------

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-28 23:49 | 显示全部楼层

通过对守柔斑主程序的研究,突然启发了我,我又仔细地研究了要操作的文档,发现以下规律:

1、把文档中每页的第5、8、10等行删除,(不论这些行是什么内容)

2、把文档中的每页的倒数前三行和倒数第6行删除。

对于第二个问题,我确实不会,对于第一个问题,我试着写了代码:,但不行,我的代码如下:

Sub 删除() Documents("20050331.doc").Select Selection.Rows(1).Delete End Sub

还请斑主指教!!!

不知有谁知道守柔斑主的地址,我想寄两瓶酒送给守柔斑主喝。谢谢!

TA的精华主题

TA的得分主题

发表于 2005-4-29 05:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

我仔细查看了一下,你的文档,其实是每个英文字母打头的段落,都可以删除?

以下代码供参考(删除以英文字母打头的段落和空白段落),可以根据实际情况修改

Option Compare Text Sub DelEnglishParagraph() Dim i As Paragraph On Error Resume Next Application.ScreenUpdating = False For Each i In ActiveDocument.Paragraphs If i.Range Like "[A-Z]*" Or Len(i.Range) < 2 Then i.Range.Delete Next Application.ScreenUpdating = True End Sub

不用编程也可以,直接使用CTRL+H,查找中勾选通配符,查找"^13[A-Z]*^13",替换为"^p",如图:

[此贴子已经被作者于2005-4-29 5:23:23编辑过]
qs0w0Syb.bmp

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-29 06:04 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-29 06:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
守柔斑主,我想做的是:把每页倒数前三行的英文删除

,包括段落,其余的所有英文单词全部替换为空,但不需要

删除行,否则页面不好看。如IY5F000902 之中的英文字母

不能替换。请您 看一下附件,

vxQ6F4Wh.rar (4.82 KB, 下载次数: 13)

TA的精华主题

TA的得分主题

发表于 2005-4-29 07:23 | 显示全部楼层

再试一下?

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-4-29 07:23:42 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit '显式变量声明 Option Compare Text '不区分大小写 Sub ExampleSearchEnglishWords() Dim i As Range, DelText As String DelText = "In case error*changed." With ActiveDocument '活动文档 Application.ScreenUpdating = False '关闭屏幕更新 With .Content.Find '查找 .ClearFormatting '清除查找格式 .MatchWildcards = True '使用通配符 '全部替换为空格 .Execute FindText:=DelText, ReplaceWith:="", Replace:=wdReplaceAll End With For Each i In .Words '遍历每个词组 If i Like "[A-Z]*" And Not i Like "*#*" Then i = VBA.Space(Len(i)) Next With .Content.Find '查找 .ClearFormatting '清除查找格式 '将如NO.等形式的.替换为空格 .Execute FindText:=" .", ReplaceWith:=" ", Replace:=wdReplaceAll End With End With Application.ScreenUpdating = True '恢复屏幕更新 End Sub '----------------------

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-29 19:32 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-29 21:07 | 显示全部楼层

又要麻烦守柔斑主,为什么上面你帮我写的代码,在EXCEL中只能做到打开指定的文档,却不运行替换功能,麻烦你再帮我看看:(下面是我的代码,运行后的结果是只打开了文档,而相关于页面设置以及替换英文字母及空格却没有运行)

Option Compare Text ' Option Explicit '显式变量声明

Sub PrintInWordPages() Sheet10.Cells(1, 16).FormulaR1C1 = "=DATE(YEAR(NOW()),MONTH(NOW()),0)" '写上月末日期 Sheet10.Cells(1, 17).FormulaR1C1 = "=YEAR(RC[-1])&IF(LEN(MONTH(RC[-1]))=1,""0""&MONTH(RC[-1]),MONTH(RC[-1]))&DAY(RC[-1])" Sheet3.Activate Sheet3.Range(Cells(1, 18), Cells(1, 18)).NumberFormatLocal = "@" Sheet3.Cells(1, 18) = Sheet10.Cells(1, 17) Dim WdApp As Word.Application, WdDoc As Word.Document Dim DocFullName As String, FindString As String, PageItem As String Dim Fcount As Integer On Error Resume Next '忽略错误 '获得文档路径 DocFullName = ThisWorkbook.Path & "\往来对账单\" & Sheet3.Cells(1, 18) & ".Doc" FindString = Sheet10.[m1] '获得搜索字符 ' MsgBox (FindString) '如果找不到该文档,则友情提示并退出程序 If Dir(DocFullName) = "" Then MsgBox "Excel没有找到" & DocFullName & " ,请确认WORD文档名是否正确!", vbExclamation, "Warnning": Exit Sub Set WdApp = New Word.Application '定义一个新的WORD Application WdApp.Visible = True '显示程序窗口 '定义一个WdDoc文档,为指定打开的文档 Set WdDoc = WdApp.Documents.Open(Filename:=DocFullName, PasswordDocument:="gzw212535") WdDoc.Active With ActiveDocument.Styles(wdStyleNormal).Font If .NameFarEast = .NameAscii Then .NameAscii = "" End If .NameFarEast = "" End With With ActiveDocument.PageSetup .LineNumbering.Active = False .Orientation = wdOrientPortrait .TopMargin = CentimetersToPoints(0.9) .BottomMargin = CentimetersToPoints(1.2) .LeftMargin = CentimetersToPoints(1.4) .RightMargin = CentimetersToPoints(1.4) .Gutter = CentimetersToPoints(0) .HeaderDistance = CentimetersToPoints(1) .FooterDistance = CentimetersToPoints(1) .PageWidth = CentimetersToPoints(24) .PageHeight = CentimetersToPoints(28) .FirstPageTray = wdPrinterDefaultBin .OtherPagesTray = wdPrinterDefaultBin .SectionStart = wdSectionNewPage .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .VerticalAlignment = wdAlignVerticalTop .SuppressEndnotes = False .MirrorMargins = False .TwoPagesOnOne = False .BookFoldPrinting = False .BookFoldRevPrinting = False .BookFoldPrintingSheets = 1 .GutterPos = wdGutterPosLeft .LayoutMode = wdLayoutModeLineGrid End With

Dim i As Range, DelText As String DelText = "In case error*changed." With ActiveDocument '活动文档 Application.ScreenUpdating = False '关闭屏幕更新 With .Content.Find '查找 .ClearFormatting '清除查找格式 .MatchWildcards = True '使用通配符 '全部替换为空格 .Execute FindText:=DelText, ReplaceWith:="", Replace:=wdReplaceAll End With For Each i In .Words '遍历每个词组 If i Like "[A-Z]*" And Not i Like "*#*" Then i = VBA.Space(Len(i)) Next With .Content.Find '查找 .ClearFormatting '清除查找格式 '将如NO.等形式的.替换为空格 .Execute FindText:=" .", ReplaceWith:=" ", Replace:=wdReplaceAll End With End With Dim J As Integer, FindString1 As String With ActiveDocument.Content.Find '在全文中查找 .ClearFormatting '清除查找格式 For J = 6 To 0 Step -1 '循环 FindString1 = VBA.Space(2 ^ J) & "^p" '生成指定的查找项目文字 '全部替换" .Execute FindText:=FindString1, ReplaceWith:="^p", Replace:=wdReplaceAll Next End With “我想在此再加上保存及设置密码后再退出 WdApp.Quit '退出WORD Set WdApp = Nothing '释放对象变量 End Sub

还请斑主指教!

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-21 11:26 , Processed in 0.035964 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表