Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 从桌面运行宏,隐藏&;以最小的系统影响_Windows_Vba_Excel - Fatal编程技术网

Windows 从桌面运行宏,隐藏&;以最小的系统影响

Windows 从桌面运行宏,隐藏&;以最小的系统影响,windows,vba,excel,Windows,Vba,Excel,最近,我工作中的IT政策发生了变化,我使用的所有脚本(.bat.cmd.py)都不再工作。在可能的情况下,我已将它们转换为在工作簿中运行的VBA宏,因为它们仍然处于启用状态 下面是两个宏,分别用于计划强制关闭/取消强制关闭 在第二本手册中 Private Sub Workbook_Open() Application.Visible = False Shell "shutdown /a" '/Abort scheduled shutdown Application.Quit End Sub 如

最近,我工作中的IT政策发生了变化,我使用的所有脚本(
.bat
.cmd
.py
)都不再工作。在可能的情况下,我已将它们转换为在工作簿中运行的VBA宏,因为它们仍然处于启用状态

下面是两个宏,分别用于计划强制关闭/取消强制关闭

在第二本手册中

Private Sub Workbook_Open()
Application.Visible = False
Shell "shutdown /a" '/Abort scheduled shutdown
Application.Quit
End Sub
如您所见,宏在
Workbook\u Open()
事件上运行,且
Application.Visible=False
。其目的是提供一个桌面快捷方式,以尽可能快地以不可见的方式打开这些工作簿

问题与解决方案
  • 它比较慢-我以前是以批处理脚本的形式运行它,现在必须打开Excel才能运行它
    • 我把它做成了一个
      .xlsb
      ,为了减少开门时间,有没有更快的方法
    • 我不是问如何加快我的工作簿的速度,我只是想问是否有一种不同的保存文件的方法(可能是加载项?)可以在不打开Excel的情况下运行
    • 我也只选择在关闭被中止时关闭Excel,而不是在计划关闭时关闭Excel,因为如果Excel已经打开,那么取消宏打开得更快(如果我意外地计划关闭,这一点很重要)
  • 跑步不是看不见的;尽管工作簿本身从未显示,但会显示Excel启动图像

    • 我曾尝试将开关添加到快捷目标(
      /e
      以防止标准模板加载
      /r
      以供只读,希望它不会显示工作表),但它们不起作用
    • “C:\ProgramFiles(x86)\Microsoft Office\root\Office16\EXCEL.EXE”/r/e“C:\Users\USERNAME\Documents\start.xlsb”
  • 应用程序
    调用是Excel范围内的调用。有时,我会在保存所有内容之前安排关机。(我知道需要几秒钟才能保存,所以我先安排关机)

    • 当我以
      .bat
      /
      .cmd
      脚本的形式运行这些脚本时,这很好,但是如果我运行这些脚本,并且Excel处于打开状态,那么所有内容都将关闭(或者变得不可见,尽管我无法检查哪一个),这在我仍在处理某些内容时并不理想
    • 我能确保这些只隐藏他们自己吗?打开另一个Excel实例会有帮助吗
TL;博士
  • 我已将宏保存为
    工作簿\u Open()
    事件,保存在
    .xlsb
    工作簿中,该工作簿通过桌面快捷方式运行
  • 我怎样才能在这方面有所改进
    • 隐藏过程
    • 加快进程
    • 防止进程破坏Excel的其余部分
    • 桌面快捷方式中的标志
    • 宏代码的更改
    • 更改宏的保存方式
    • 仅在脚本被阻止时转换为脚本

注意,我会使用VBS来完全绕过Excel,但这也被阻止了。最快的是带有shutdown命令的桌面快捷方式,即
%WINDIR%\system32\shutdown.exe/s/f

*system32我猜是(无法进行单字符编辑)。不幸的是,它也有同样的管理问题(难道它不尝试打开命令提示符吗?)我在XP和Win7上使用了多年,不记得需要管理员权限。我毕竟关闭了我自己的电脑,这与通过“开始->关机”完成的操作是一样的,糟糕的措辞,而不是管理员权限;它被我提到的“无脚本”策略阻止,不会执行。如果您发出关闭命令,为什么Excel会短暂地引发一个真正的问题?你考虑过一个.js吗?也就是说,也许你应该与那些实施了IT策略更改的人谈谈,并获得一些特许,在特定的机器上运行特定的命令集等,而不是试图“解决”增加的安全措施?@CLR True这不是一个大问题,只是美观而已。主要问题是,它会关闭流程中的其他excel实例。我和它谈过,他说如果我给他名字,他可以创建异常,但我可以说这对他来说有点烦人,我想找到一个解决办法,这样我就可以创建新的东西,而不必将其添加到异常列表中。js如何工作?我以为它们只在网站上运行,而不是通过桌面运行(虽然我没有什么经验,所以我不知道如何制作一个来实现这个功能)我自己也不知道.js文件,我刚刚听到安全人员提到Windows将执行它们。现在大声想一想——如果你只是想关机,那么是否有可能将某个特定的exe文件的副本重命名为某个模糊的文件,这是it策略允许的?
Private Sub Workbook_Open()
Application.Visible = False
Shell "shutdown /a" '/Abort scheduled shutdown
Application.Quit
End Sub