excel无法在未启用宏的工作簿中保存以下功能_怎样不打开Excel就自动执行里面的宏...

一、你要有一个Excel工作簿,里面有你想要执行的宏,而且要保存为启用宏的工作簿格式,文件名后缀xlsm。

3627d2882fbfadbe493697fa4cd704af.png

这个的目的是自动从数据库中刷新数据到工作簿里,同时保存退出。

二、做一个VBS自动处理文本文件,它要指明工作簿的完整路径,哪个宏(即“刷新”),这是在Module1中的,在表单中的宏要适当修改。用了变量这样更加简明可读。内容如下:

Set objExcel = CreateObject("Excel.Application")

Dim filePath

' Determine script location for VBScript

Dim oFSO : Set oFSO = CreateObject("Scripting.FileSystemObject")

Dim sScriptDir : sScriptDir = oFSO.GetParentFolderName(WScript.ScriptFullName)

'Wscript.Echo "Current script directory is " & sScriptDir

'filePath="lESDd.mpublic集团约管动导出的各类Excel数据源04 定期导出成本优化台账数据定期从ES系统中导出成本优化台账数据 每天晚上三点.xlsm"

Set objWorkbook = objExcel.Workbooks.Open(sScriptDir &"定期从ES系统中导出成本优化台账数据 每天晚上三点.xlsm")

objExcel.Visible = True

objExcel.Run "刷新"

objWorkbook.Close

objExcel.Quit

Set objWorkbook = Nothing

Set objExcel = Nothing

WScript.Quit

三、要将VBS文件包在bat文件中

如果不包起来,在服务器上直接用Windows的任务计划是无法启动vbs的,具体原因不明。

但在本人笔记本电脑上,可以直接启动vbs,似乎跟你安装的vb环境有关。

cscript.exe "l利不打开Excel运行刷新动态盈利工作簿.vbs"

四、将上面的bat纳入到任务计划中

b96c28f0d32badf7bb000341167f18ff.png
"使用最高权限运行“慎用,如果有administrator帐户且点这个选项,但你没有登录,程序是无法自动运行的,所以要慎用。

97f233f14efec73033b3dd9b67099f6b.png

90f9a830b9909a3838f5232b3f731deb.png

ccdf0bf3e1b1508ded36b9b49a66d52c.png

06a9a1798346a9ddaaefabdf47186e43.png

812e04bc649bf37132d2fc80c5d9756c.png

当第一次打开文件,或你修改了原来的文件名,会弹出如下窗口,你启用或确定后,同一位置文件名,下次不会弹出。

81e85ca8470225a0a74f69e09ccad16f.png
同一文件名,一次手工启用

一个按钮启用多个宏的办法,参考链接是https://www.extendoffice.com/documents/excel/4631-excel-button-to-run-multiple-macros.html

b04cec54c6a1a2080e4c5208985eb720.png

重点1:当有多个vbs时,分别写vbs,将全部纳入bat中是可以的。如下

cscript.exe "ld.下A!.vbs"

cscript.exe "lB簿.vbs"

重点2:想将多个语句写到一个vbs中,再用一个bat指向这个vbs,这样比前面一个要简单些,但实际上是无法运行的。暂时作罢。

任务计划无法改名的办法,见如下链接。也非常方便的。

https://www.digitalcitizen.life/how-rename-windows-task-created-task-scheduler

怎样取得文件的完整路径名,最简单的办法是生成快捷方式,在属性中打开并复制就行。注意复制后的文件地址有的有双括号,有的没有。

8e6746e6dc1e436abef838182c07a708.png

1.在服务器上,能够双击vbs文件,会弹出安全性窗口,再弹出Excel文件窗口,运行后,关闭。

2.将此vbs配到服务器的任务计划中,会弹出,你要用什么程序打开vbs的提示,在本机中没有弹出。所以上面有用bat的办法,但这样多了一道手续,能否省掉呢,答案是可以的。

后来解决了这个问题,可以将vbs直接配置到任务计划中,来自如下链接,由于被墙,用手机看图片才看出来的办法

it opens "open with" prompt whenever scheduled task run​superuser.com
e7baeaa4a665f97ac9244afa606f505e.png

aa05607a0b30fb066a55733996d60eab.png

注意:上面的文件有"",下面的参数,是指VBS的完整路径,不是XLSM的,由于文件夹名称中有空格,也要用""包起来,这样成功运行了。


' Determine script location for VBScriptDim oFSO : Set oFSO = CreateObject("Scripting.FileSystemObject")Dim sScriptDir : sScriptDir = oFSO.GetParentFolderName(WScript.ScriptFullName)
Wscript.Echo "Current script directory is " & sScriptDir


2020.05.12晚:

双击VBS,都能够正常触发打开工作簿,启动宏,将数据刷新过来。

在家里的兼容机上,将任务计划的常规中的“只在用户登录时运行”勾选,就正常了,刷新取得数据。但我的笔记本电脑就是不行,很快打开,又很快关闭,就是不能将数据刷过来。

兼容时的用户是Admin,但笔记本是Administrator,不知道这是原因吗?
两边的文件和程序都是一样的,奇怪了。

可能的差异,兼容机:是用的我谷歌邮箱注册的outlook,是没有联上office 365账户的。都是管理员,这有区别吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值