
dim DocP$
DocP$="C\~$Doc1docx"
If Dir(DocP, vbHidden) = "" Then
MsgBox "未打开"
Else
MsgBox "已打开"
End If
路径自己修改
Office的高版本中,已对文件类型细化了,文件中有VBA或宏表函数时,要保存为启用宏的文件,如Excel,要保存为xlsm文件,而常规文件为xlsx文件。
出现如图的提示,说明你的Excel文件中有VBA工程或用宏表函数定义了名称。这样的文件要不你保存为xls文件格式(但受到限制,如行数只能按2003版的65536行来输入数据),要不保存为xlm文件,如果强行保存为xls文件,则下次打开时,原来的VBA工程或宏表函数定义的名称就没有了。文件数据可能会出现错误。
一、首先,打开Word程序,然后在Word主界面上方菜单选择“文件”,点击打开。
二、然后,在“文件”d出的菜单中选择“选项”,点击打开。
三、然后,在左侧菜单中选择“信任中心”点击打开。
四、然后,点击右下角的“信任中心设置”。
五、然后,左侧菜单栏中选择“宏设置”点击打开。
六、最后,勾选“禁用所用宏,并打出通知”,确定保存,Word禁用宏完成,问题解决、
问题1:如果每个表格的结构和格式都是一致的话,应该是没有问题的。
问题2:应该也没有问题。此外,我想问一下是否每段话里面都是严格地有“占地面积、投资、职工、纯收入”这几个关键词且它们在自己段落中的出现顺序也都固定?
我试试吧,答案有点长。要有耐心哦……:)
如果楼主对于步骤和代码的使用有什么疑问可以补充提问或者给我发信息。
------------------------------------
[问题一]
1、打开包含多个人员信息表格的Word文件(假设文件名为“人员表”,表格格式严格遵循楼主问题中的描述),键入Alt+F11显示VBA窗口;
2、键入Ctrl+R激活左边的项目窗口,在“人员表”这个节点上鼠标右键,选择“插入-类模块”;
3、键入F4激活属性窗口,修改类模块的名称为“PersonInfo”;
4、在右边的编辑区粘贴如下代码:
Option Explicit
Public Name As String
Public Age As String
Public Hometown As String
Public Address As String
Public Postcode As String
Public Email As String
Public University As String
Public Major As String
Public Experience As String
Public Skill As String
5、再在项目窗口的“人员表”这个节点上鼠标右键,选择“插入-模块”;
6、在右边的编辑区粘贴如下代码:
Option Explicit
Sub BuildMasterTable()
Dim oTable As Table
Dim oPersonInfo As PersonInfo
Dim oPersons As New Collection
For Each oTable In ActiveDocumentTables
Set oPersonInfo = CollectPersonInfoFromTable(oTable)
If Not oPersonInfo Is Nothing Then
oPersonsAdd oPersonInfo
End If
Next
BuildMasterTableForPersons oPersons
MsgBox "完成!"
End Sub
Function CollectPersonInfoFromTable(oTable As Table) As PersonInfo
If oTableRowsCount <> 7 Or oTableColumnsCount <> 4 Then
CollectPersonInfoFromTable = Nothing
Exit Function
End If
Dim oPersonInfo As New PersonInfo
oPersonInfoName = GetInfoFromCell(oTable, 1, 2)
oPersonInfoAge = GetInfoFromCell(oTable, 1, 4)
oPersonInfoHometown = GetInfoFromCell(oTable, 2, 2)
oPersonInfoAddress = GetInfoFromCell(oTable, 2, 4)
oPersonInfoPostcode = GetInfoFromCell(oTable, 3, 2)
oPersonInfoEmail = GetInfoFromCell(oTable, 3, 4)
oPersonInfoUniversity = GetInfoFromCell(oTable, 4, 2)
oPersonInfoMajor = GetInfoFromCell(oTable, 5, 2)
oPersonInfoExperience = GetInfoFromCell(oTable, 6, 2)
oPersonInfoSkill = GetInfoFromCell(oTable, 7, 2)
Set CollectPersonInfoFromTable = oPersonInfo
End Function
Function GetInfoFromCell(oTable As Table, rowIndex As Integer, columnIndex As Integer)
Dim strInfo As String
strInfo = oTableCell(rowIndex, columnIndex)RangeText
GetInfoFromCell = Left(strInfo, Len(strInfo) - 2)
End Function
Sub BuildMasterTableForPersons(oPersons As Collection)
Dim oDoc As Document
Dim oTable As Table
Dim nIndex As Integer
Set oDoc = DocumentsAdd
Set oTable = oDocTablesAdd(oDocRange, oPersonsCount + 1, 10)
oTableAutoFitBehavior wdAutoFitContent
oTableBordersInsideLineStyle = wdLineStyleSingle
oTableBordersOutsideLineStyle = wdLineStyleDouble
oTableCell(1, 1)RangeText = "姓名"
oTableCell(1, 2)RangeText = "年龄"
oTableCell(1, 3)RangeText = "籍贯"
oTableCell(1, 4)RangeText = "住址"
oTableCell(1, 5)RangeText = "邮编"
oTableCell(1, 6)RangeText = "邮箱"
oTableCell(1, 7)RangeText = "毕业院校"
oTableCell(1, 8)RangeText = "专业"
oTableCell(1, 9)RangeText = "工作经验"
oTableCell(1, 10)RangeText = "特长"
For nIndex = 1 To oPersonsCount
oTableCell(nIndex + 1, 1)RangeText = oPersons(nIndex)Name
oTableCell(nIndex + 1, 2)RangeText = oPersons(nIndex)Age
oTableCell(nIndex + 1, 3)RangeText = oPersons(nIndex)Hometown
oTableCell(nIndex + 1, 4)RangeText = oPersons(nIndex)Address
oTableCell(nIndex + 1, 5)RangeText = oPersons(nIndex)Postcode
oTableCell(nIndex + 1, 6)RangeText = oPersons(nIndex)Email
oTableCell(nIndex + 1, 7)RangeText = oPersons(nIndex)University
oTableCell(nIndex + 1, 8)RangeText = oPersons(nIndex)Major
oTableCell(nIndex + 1, 9)RangeText = oPersons(nIndex)Experience
oTableCell(nIndex + 1, 10)RangeText = oPersons(nIndex)Skill
Next
End Sub
7、键入F5运行,看到提示“完成!”后切换回Word文档窗口检查汇总表(生成在一个新文档中)是否正确生成。
------------------------------------
[问题二]
1、打开包含原始投资文字信息的Word文件(假设文件名为“投资信息”,几个关键字的出现顺序严格遵循楼主问题中的描述),键入Alt+F11显示VBA窗口;
2、键入Ctrl+R激活左边的项目窗口,在“投资信息”这个节点上鼠标右键,选择“插入-类模块”;
3、键入F4激活属性窗口,修改类模块的名称为“InvestmentInfo”;
4、在右边的编辑区粘贴如下代码:
Option Explicit
Public Area As String
Public Investment As String
Public Employees As String
Public Income As String
5、选择菜单“工具-引用”,打开添加项目引用的对话框,在列表里面找到并钩上“Microsoft VBScript Regular Expression ”(最后的两个版本号无所谓),确定;
6、再在项目窗口的“投资信息”这个节点上鼠标右键,选择“插入-模块”;
7、在右边的编辑区粘贴如下代码:
Option Explicit
Sub CollectInvestmentInfo()
Dim oRegExp As New RegExp
Dim oMatch As Match
Dim oMatches As MatchCollection
Dim oInvestmentInfo As InvestmentInfo
Dim oInvestmentInfoArray As New Collection
oRegExpGlobal = True
oRegExpPattern = "占地面积([0-9]+)亩,总投资([0-9]+)万元,职工([0-9]+)人,年纯收入([0-9]+)多万"
Set oMatches = oRegExpExecute(ActiveDocumentRangeText)
For Each oMatch In oMatches
Set oInvestmentInfo = New InvestmentInfo
oInvestmentInfoArea = oMatchSubMatches(0)
oInvestmentInfoInvestment = oMatchSubMatches(1)
oInvestmentInfoEmployees = oMatchSubMatches(2)
oInvestmentInfoIncome = oMatchSubMatches(3)
oInvestmentInfoArrayAdd oInvestmentInfo
Next
BuildMasterTable oInvestmentInfoArray
MsgBox "完成!"
End Sub
Sub BuildMasterTable(oInvestmentInfoArray As Collection)
Dim oDoc As Document
Dim oTable As Table
Dim nIndex As Integer
Set oDoc = DocumentsAdd
Set oTable = oDocTablesAdd(oDocRange, oInvestmentInfoArrayCount + 1, 4)
oTableAutoFitBehavior wdAutoFitContent
oTableBordersInsideLineStyle = wdLineStyleSingle
oTableBordersOutsideLineStyle = wdLineStyleDouble
oTableCell(1, 1)RangeText = "占地面积"
oTableCell(1, 2)RangeText = "总投资"
oTableCell(1, 3)RangeText = "职工数"
oTableCell(1, 4)RangeText = "年纯收入"
For nIndex = 1 To oInvestmentInfoArrayCount
oTableCell(nIndex + 1, 1)RangeText = oInvestmentInfoArray(nIndex)Area
oTableCell(nIndex + 1, 2)RangeText = oInvestmentInfoArray(nIndex)Investment
oTableCell(nIndex + 1, 3)RangeText = oInvestmentInfoArray(nIndex)Employees
oTableCell(nIndex + 1, 4)RangeText = oInvestmentInfoArray(nIndex)Income
Next
End Sub
8、键入F5运行,看到提示“完成!”后切换回Word文档窗口检查汇总表(生成在一个新文档中)是否正确生成。
设置的方法是:
1、左上角的word按钮—word选项—高级—显示—在任务栏中显示所有窗口,没选中时所有的word就会在一个窗口,这时右上角会有两个关闭的按钮,按上面的那个大的,所有的word都会关掉,按下面的那个就只关闭当前的word。
2、当word设置的是“在任务栏里显示所有窗口”,这样右上角就只有一个关掉的按钮,如图
这时候按关闭按钮,只会关掉一个,别的word不会关。
Private Sub CommandButton1_Click()
Sub PromptToSaveAndClose()
Dim doc As Document
For Each doc In Documents
docClose SaveChanges:=wdPromptToSaveChanges
Next
End Sub
End Sub
应该这样写:
Private Sub CommandButton1_Click()
PromptToSaveAndClose
End Sub
Sub PromptToSaveAndClose()
Dim doc As Document
For Each doc In Documents
docClose SaveChanges:=wdPromptToSaveChanges
Next
End Sub
打开数据表,按下Alt+F11,在打开的界面中双击左侧的ThisWorkBook,在右侧通用下拉框中选择Workbook,会自动出现完整的WorkbookOpen事件代码,只需要在其中补充上要自动运行的VBA代码部分即可。
在Excel的标准模块中可以创建4种自动运行的宏,它们分别是AutoOpen,AutoClose,AutoActivate,AutoDeactivate。这些自动运行的宏是为了与Excel5和95兼容而保留下来的。
vba是依附在应用程序(例如Excel)中的VB语言。只要你安装了OfficeExcel就自动默认安装了VBA,同样Word和PowerPoint也能调用VBA对软件进行二次开发而让一些特别复杂的 *** 作脚本化。VBA是Excel的底层根本。
1、左键单击右上角“×”;
2、左键双击左上角;
3、右键单击左上角,选“关闭”;
4、alt
键+
F4键;
5、Ctrl键+F4键;
6、ctrl
+
W;
7、单击word文档窗口左上方菜单栏“文件”处,选“关闭”或“退出”;
8、在电脑屏幕最下方的菜单栏上右键单击(或直接ctrl+alt+del,
或win+r后输入taskmgr)打开“任务管理器”,关闭想关的进程,即word文档;
9、在VB等软件里关闭word文档,可用命令:
Close
#1
ObjWorkbookClose
10、cmd里应该有个命令,可我忘了!嘿嘿,如果问着了就告诉我,谢谢
以上就是关于求问 VBA 如何知道打开的word文档被用户关闭了全部的内容,包括:求问 VBA 如何知道打开的word文档被用户关闭了、怎么才能关闭这个office2013版本的vba工程提示每次保存文件时候都会有如下提示,很不喜欢、Word中的宏如何取消,Word禁用宏的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)