20170907wdVBA_GetCellsContentToExcel

 'WORD 加载项 代码模板
Dim cmdBar As CommandBar, cmdBtn As CommandBarControl
Const cmdBtnCap As String = "批量提取操作步骤"Sub AutoExec()Call DelCmdBtnCall AddCmdBtnEnd Sub
Sub AutoExit()Call DelCmdBtn
End SubSub AddCmdBtn()Set cmdBar = Application.CommandBars("Tools")Set cmdBtn = cmdBar.Controls.Add(msoControlButton)With cmdBtn.Caption = cmdBtnCap.Style = msoButtonCaption.OnAction = "GetContents"End WithSet cmdBtn = NothingSet cmdBar = NothingEnd Sub
Sub DelCmdBtn()Set cmdBar = Application.CommandBars("Tools")For Each cmdBtn In cmdBar.ControlsIf cmdBtn.Caption = cmdBtnCap Then cmdBtn.DeleteNextSet cmdBtn = NothingSet cmdBar = Nothing
End SubPublic Sub GetContents()Application.ScreenUpdating = FalseDim xlApp As ObjectDim Wb As ObjectDim Sht As ObjectDim Rng As ObjectDim OpenDoc As DocumentDim ExcelPath As StringConst ExcelFile As String = "未完成.xls"Dim FolderPath As StringDim FilePath As StringDim FileName As StringExcelPath = ThisDocument.Path & "\" & ExcelFileWith Application.FileDialog(msoFileDialogFolderPicker).InitialFileName = ThisDocument.Path.AllowMultiSelect = False.Title = "请选取Word所在文件夹"If .Show = -1 ThenFolderPath = .SelectedItems(1)ElseMsgBox "您没有选中任何文件夹,本次汇总中断!"Exit SubEnd IfEnd Withs = Split(FolderPath, "\")c = UBound(s)ShtName = s(c)If Right(FolderPath, 1) <> "\" Then FolderPath = FolderPath & "\"On Error Resume NextSet xlApp = GetObject(, "Excel.Application")If xlApp Is Nothing ThenSet xlApp = CreateObject("Excel.Application")End IfOn Error GoTo 0Set Wb = xlApp.workbooks.Open(ExcelPath)Set Sht = Wb.worksheets.Add()Sht.Name = ShtNameSht.Cells.clearcontentsSht.Range("A1:D1").Value = Array("操作编号", "操作任务", "操作序号", "操作步骤")FileName = Dir(FolderPath & "*.doc*")Do While FileName <> ""FilePath = FolderPath & FileNameIf FileName <> ThisDocument.Name ThenSet OpenDoc = Application.Documents.Open(FilePath)'If OpenDoc.Tables.Count > 0 ThenArr = GetArray(OpenDoc)Debug.Print Arr(3, 1)Sht.Cells(Sht.Rows.Count, 2).End(3).offset(1).Resize(UBound(Arr, 2), UBound(Arr)).Value = _xlApp.worksheetfunction.transpose(Arr)'End IfOpenDoc.Close FalseEnd IfFileName = DirLoopWb.Close TruexlApp.Quit'MsgBox "本次提取完成!"'Application.ScreenUpdating = True
End SubFunction GetArray(ByVal Doc As Document) As VariantDim tb As TableDim tbCount As LongDim RecordStart As BooleanDim RecordEnd As BooleanDim Arr() As StringDim Mission As StringDoc.ActivateIf Selection.Type = wdSelectionIP ThenActiveDocument.Content.ListFormat.ConvertNumbersToTextActiveDocument.Content.Find.Execute FindText:="^t", replacewith:=" ", Replace:=wdReplaceAllElseSelection.Range.ListFormat.ConvertNumbersToTextSelection.Find.Execute FindText:="^t", replacewith:=" ", Replace:=wdReplaceAllEnd IfReDim Arr(1 To 3, 1 To 1)Index = 0RecordStart = FalseRecordEnd = FalsetbCount = Doc.Tables.CountIf tbCount > 0 Thenn = 0For Each tb In Doc.TablesWith tbFor i = 1 To .Rows.Count'Debug.Print tb.Rows(3).Cells(1).Range.TextIf tb.Rows(3).Cells(1).Range.Text Like "*操作任务*" And Mission = "" ThenMission = tb.Rows(3).Cells(1).Range.TextMission = RegGet(Mission, "操作任务[::](\S+?)\s+?")'Debug.Print MissionEnd IfIf .Rows(i).Cells.Count = 5 ThenIf .Rows(i).Cells(1).Range.Text Like "*#*" And _.Rows(i).Cells(3).Range.Text Like "*得令*" Then'Debug.Print .Rows(i).Cells(3).Range.TextRecordStart = TrueEnd IfIf .Rows(i).Cells(1).Range.Text Like "*#*" Or .Rows(i).Cells(1).Range.Text = "" And RecordStart = True And RecordEnd = False ThenIndex = Index + 1ReDim Preserve Arr(1 To 3, 1 To Index)Arr(1, Index) = MissionDebug.Print MissionArr(2, Index) = Replace(Replace(.Rows(i).Cells(1).Range.Text, Chr(7), ""), vbCr, "")Arr(3, Index) = Replace(Replace(.Rows(i).Cells(3).Range.Text, Chr(7), ""), vbCr, "")End IfIf .Rows(i).Cells(1).Range.Text Like "*#*" And _.Rows(i).Cells(3).Range.Text Like "*汇报*" ThenRecordStart = FalseRecordEnd = TrueGoTo ExitFunctionEnd IfEnd IfNext iEnd WithNext tbEnd IfExitFunction:GetArray = ArrEnd Function
Public Function RegGet(ByVal OrgText As String, ByVal Pattern As String) As String
'传递参数 :原字符串, 匹配模式Dim Regex As ObjectDim Mh As ObjectSet Regex = CreateObject("VBScript.RegExp")With Regex.Global = True.Pattern = PatternEnd WithIf Regex.test(OrgText) ThenSet Mh = Regex.Execute(OrgText)RegGet = Mh.Item(0).submatches(0)ElseRegGet = ""End IfSet Regex = Nothing
End Function
Sub 自动编号转文本()If Selection.Type = wdSelectionIP ThenActiveDocument.Content.ListFormat.ConvertNumbersToTextActiveDocument.Content.Find.Execute FindText:="^t", replacewith:=" ", Replace:=wdReplaceAllElseSelection.Range.ListFormat.ConvertNumbersToTextSelection.Find.Execute FindText:="^t", replacewith:=" ", Replace:=wdReplaceAllEnd If
End Sub

  

转载于:https://www.cnblogs.com/nextseven/p/7489255.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 5.7 mirror_Centos7 Docker离线部署Mysql5.7

1 环境信息查看系统内核[rootlocalhost /]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core)2 虚拟机拉取镜像此处资源获取在虚拟机中进行&#xff0c;完成后上传到服务器安装2.1 拉取mysql5.7镜像[rootlocalhost /]# docker pull mysql:5.72.2 导出镜像[rootloc…

Java中的简单REST客户端

如今&#xff0c;大多数用于与某些服务器通信的移动应用程序都使用REST服务。 这些服务也是与JavaScript或jQuery一起使用的常见做法。 现在&#xff0c;我知道在Java中为REST服务创建客户端的2种方法&#xff0c;在本文中&#xff0c;我将尝试演示这两种方法&#xff0c;希望它…

3.20 下午

阅读《艺术学概论》 戏剧冲突是戏剧的灵魂 冲突包括&#xff1a;人物性格的冲突、行为的冲突、 思想感情的冲突乃至心理状态的冲突等等 转载于:https://www.cnblogs.com/bgd140206110/p/6590005.html

华为root工具_华为Mate9解锁后无法ROOT 需要手动刷入Recovery怎么办【解决方法】...

很多朋友手机到手之后&#xff0c;都希望能够ROOT使用更多的系统功能。近日有网友向小编询问&#xff0c;为何华为Mate9解锁后无法ROOT&#xff0c;明明已经通过官方的解锁教程解锁的&#xff0c;但是之后使用“大师”等第三方刷机工具&#xff0c;无法ROOT。其实ROOT的关键就在…

JAX-WS入门

JAX-WS代表XML Web Services的Java API。 它是一种Java编程语言API&#xff0c;用于创建Web服务和使用XML进行通信的客户端。 这篇文章是JAX-WS的快速入门。 先决条件 GlassFish与Eclipse集成在一起 。 创建JAX-WS Web服务 1.在Eclipse中创建一个名为“ com.eviac.blog.jax…

canvas 图片反色

代码实例&#xff1a; <!DOCTYPE HTML> <html> <head><meta charset"utf-8"><title>图片反色</title><style type"text/css">body{ background:black;}#c1{ background:white;}</style><script type&q…

python中的文件父路径怎么表达_python中的文件父路径怎么表达_如何在Python中访问父目录...

所以我有一个朋友给我的Python脚本&#xff0c;但是我没有Python的经验。代码如下&#xff1a;from os import path, chdir, listdir, mkdir, getcwdfrom sys import argvfrom zipfile import ZipFilefrom time import sleep#Defines what extensions to look for within the f…

Maven的中央仓库地址

www.mvnrepository.com转载于:https://www.cnblogs.com/j-liu3323/p/6590435.html

Spring–添加AOP支持

我听到了一个有关一位高级&#xff08;且酬劳颇丰&#xff09;软件工程师的故事。 他的任务是记录他正在研究的项目中每个控制器中的每个方法。 工程师重写了所有控制器方法&#xff0c;因此使用如下代码&#xff1a; RequestMapping(method RequestMethod.GET)public String …

vscode python第三方库检测_VSCode中使用Pylint检查python代码

为什么使用lint在日常开发中&#xff0c;不同开发人员会写下不同风格的代码&#xff0c;导致代码可维护性变差&#xff0c;为了解决风格不一致问题&#xff0c;我们可以制定代码规范&#xff0c;让开发人员都遵守同样的规范编写代码。在开发过程中&#xff0c;部分代码存在质量…

Spring MVC-集成(Integration)-集成LOG4J示例(转载实践)

以下内容翻译自&#xff1a;https://www.tutorialspoint.com/springmvc/springmvc_log4j.htm 说明&#xff1a;示例基于Spring MVC 4.1.6。 以下示例说明如何使用Spring Web MVC框架来触发LOG4J。首先&#xff0c;让我们使用Eclipse IDE&#xff0c;并按照以下步骤使用Spring W…

NUMA架构和Java

是时候部署您的应用程序了&#xff0c;期待着采购最适合负载要求的硬件。 如今&#xff0c;具有40核或80核的包装盒非常普遍。 总体概念是更多的内核&#xff0c;更多的处理能力&#xff0c;更多的吞吐量。 但是我看到了一些相反的结果&#xff0c;表明小型的CPU密集型测试运行…

存储过程常用技巧

我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的&#xff0c;我们在这里除了学习存储过程的基本结构外&#xff0c;还会学习编写存储过程时相关的一些实用的知识。如&#xff1a;游标的处理&#xff0c;异常的处理&#xff0c;集合的选择等等…

vue是用a标签打开新页面_vue 在新窗口打开页面并设置不同的背景

开发一个新系统&#xff0c;前端用的vue&#xff0c;vue是单体应用&#xff0c;所有页面都在一个窗口里实现&#xff0c;但项目要求在点button链接后要新打开一个浏览器页面&#xff0c;解决方法如下&#xff1a;1. 给此button设置新事件 click"createdefect"提交缺陷…

卡尔曼滤波的推导

卡尔曼滤波的推导1 最小二乘法在一个线性系统中&#xff0c;若\(x\)为常量&#xff0c;是我们要估计的量&#xff0c;关于\(x\)的观测方程如下&#xff1a; \[ y Hx v \tag{1.1}\] \(H\)是观测矩阵&#xff08;或者说算符&#xff09;&#xff0c;\(v\)是噪音&#xff0c;\(y…

Java注释-保留

考虑一下Java批注&#xff1a; public interface AnAnnotaton {}带有此注释的类&#xff1a; AnAnnotaton class AnAnnotatedClass{}还有一个测试&#xff0c;检查类中是否存在此批注&#xff1a; import static org.hamcrest.MatcherAssert.assertThat; import static org.h…

MYSQL查询选修三门以上课程_SQL高级查询的练习题

Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题&#xff1a;1、查询“001”课程比“002”课程成绩高的所有学生的学号&#xff1b;select a.S# from (select s#,score from SC where C#001) a,(select s#,s…

Determing client's IP

AuthorDeterming clients IPАнатоли&23.04.2009 18:39:46Registered userHow to determine clients IP address in THTTPServer.OnClientConnected, THTTPServer.OnClientDisonnected and TRtcFunction.OnExecute events?Danijel Tkalcec [RTC]23.04.2009 19:45:05…

mysql aa复制_MySQL的复制架构与优化

MySQL的复制架构与优化###########原理###########1.主服务器将更新的数据的sql语句(例如&#xff0c;insert&#xff0c;update&#xff0c;delete等)写入到二进制文件中(由log-bin选项开启)。此二进制文件由一个索引文件跟踪维护。2.从服务器连接(使用I/O线程连接)主服务器&a…

如何安装Gradle

Gradle是一个简单而强大的构建工具。 它类似于Ant构建工具。 它可以很好地管理构建&#xff0c;还可以处理构建依赖性。 Gradle最好的部分是它是开源项目。 如果您正在考虑安装并尝试一下&#xff0c;那么您来对地方了。 Gradle的开发周期为4周&#xff0c;因此&#xff0c;每隔…