★★★一次性保存WPS所打开文件路径及文件名的五种方法
网友的需求:一次可能打开十个文件,来自不同路径。
这十个文件,阶段时间内要经常打开。(如,三天内,会三十次同时打开这十个文件)
如果关闭,下次再一个个打开,非常繁琐。
因此想有什么方法能够批量保存本次所打开文件的路径、名称。
这样编个批处理,下次一键打开,就方便多了。
我当时想到的:
当时想到几个,但没来及细化。泛泛而谈,没有实战价值。
今天周末,有时间。将思路流程具像化些,以抛砖引玉,希能给大家带来另类启发。
PWERSHELL命令行
关于POWERSHELL命令(感谢 @wils 网友 给我带来了思路,一开始我想当然以为POWERSHELL也就能查看下程序文件的路径和PID)
经测试也能与API进行交互:
$et = [Runtime.InteropServices.Marshal]::GetActiveObject("ket.Application")
$et.Workbooks | ForEach-Object { $_.FullName }
以简短的命令行获取到WPS所打开文件的名称路径,以达到目的。
赞一个。
再可以 > 到TXT。
宏命令
老生常谈。
用宏获取打开文件的方法有很多。
区别是这次加了个文本。
不通过内录地址或弹出框体现,直接COPY到文本文件,这样方便直接保存为BAT。(本台经测试一直拒绝直接保存为批处理,一开始以为盘符权限限制,C盘不行,其他盘权限全打也不行,杀软防火墙全关也不行,只得放弃,转而将内容得到的TXT文件中,手动保存为BAT)
Sub a()
Dim tempPath As String
Dim fileNum As Integer
Dim wb As Workbook
Dim fso As Object
Dim tempFolder As String
tempFolder = Environ("TEMP")
tempPath = tempFolder & "\列表_" & Format(Now, "yyyymmdd_hhnnss") & ".txt"
fileNum = FreeFile
Open tempPath For Output As #fileNum
Print #fileNum, "@echo off"
For Each wb In Application.Workbooks
Print #fileNum, "start """" """ & wb.FullName & """"
Next wb
Close #fileNum
Shell "notepad.exe """ & tempPath & """", vbNormalFocus
End Sub
代码虽然多,复制繁杂,但运行后可改为BAT,下次直接双击运行,很是省事。
注册表
注册表的方法要感谢不知名网友提供的思路,之前一直找不到WPS最近打开的文件都存在哪,整个WPS翻遍了也没找着,就想着是不是进制转换了,刚要下载个EDIT,就看到网友说的,WPS会把近期文件保存在注册表里!这我倒是真没有想到的。
WPS打开过的文件会出现在:
计算机\HKEY_CURRENT_USER\SOFTWARE\kingsoft\Office\6.0\et\RecentFiles
(顺便插一句,如果不想出现在最近打开的列表里,也是在这里修改。但是删除是没有效果的,删除以后,WPS还会再建一个。
所以只有禁止权限。具体见另一篇:★★★WPS怎么关闭“最近使用”,保护隐私?)
把该分项导出。需要的时候再双击reg导入,即可完成注册表层面的最近打开文件的保存。
如果懒得找注册表,也可以用命令行:
reg export HKEY_CURRENT_USER\SOFTWARE\kingsoft\Office\6.0\et\RecentFiles "C:\aaa.reg" /y
保存路径可改。
另一台电脑做过测试,可行。这台就不做了,因此本例无截图。
RECENT
本机。直接运行rencent (%homepath%(%userprofile%)下的Recent)
或
%appdata%\Microsoft\Windows\Recent 目录下
一般都会保留最近打开的文件,可以复制至统一文件夹。下次需要再一下打开。
第5个方法刚才想到的,居然忘了。
临时加一个凑个数吧,标题都起好了。
为了这碟醋就包了这盘饺子吧。
就是最近打开的文件。
可以一次打开多个文件,也可以标个星标
但是标星标就是上传了。
应该还有其他方法,条条大路通罗马。第5条都忘了,感觉昨晚没睡好。先就这样吧。保护好大脑。就虎头蛇尾,草草收场了。