哪位高人能给段用VBS打开EXCEL后禁用工作簿的最大化、最小化窗口功能的代码

以下代码已经可以实现打开指定位置的Excel文件,但不知如何实现打开后使其最大化、最小化功能禁用的代码,请高人补充一下,不甚感激。
 Dim fso,fname
 Set fso=CreateObject("scripting.FileSystemObject")
 fname="D:\"&FormatDateTime(date,2)&".xls"
 Dim objExcelApp
 Set objExcelApp=CreateObject("Excel.Application")
 objExcelApp.visible=true
 objExcelApp.workbooks.open fname
 —-请补充打开Excel后使工作簿最大化、最小化窗口禁用的代码—–
 Set objExcelApp=nothing

最佳答案

打开Excel,菜单-工具-宏-Visual Basic 编辑器
 在VBAProject下插入模块,粘贴一下代码
   Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long

   Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
   
   Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
     
   Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
   
   Const WS_MINIMIZEBOX = &H20000
   
   Const WS_MAXIMIZEBOX = &H10000
   
   Const GWL_STYLE = (-16)
   
   
   

 Sub hide(hwnd As Long)

   Dim lWnd     As Long
   
   lWnd = GetWindowLong(hwnd, GWL_STYLE)

   lWnd = lWnd And Not (WS_MINIMIZEBOX)
   
   lWnd = lWnd And Not (WS_MAXIMIZEBOX)
   
   lWnd = SetWindowLong(hwnd, GWL_STYLE, lWnd)
   
   Dim h As Long

   h = FindWindowEx(hwnd, 0&, "EXCEL2", vbNullString)

   h = FindWindowEx(h, 0&, "MsoCommandBar", "工作表菜单栏")

   EnableWindow h, 0
    
 End Sub

 保存为xla文件,比如D:\Hide.xla

 
 在你指定代码补充的地方插入
 objExcelApp.Workbooks.Open "D:\Hide.xla"

 objExcelApp.Run "hide", objExcelApp.hwnd

 这样就运行了上面保存的宏
 菜单和最大化最小化都被屏蔽

提问者对于答案的评价:
谢谢啦!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc271982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐

  • WinCC flexible SMART V3触发触摸和多层触摸的问题

    在建了一个字符串的IO域取得用户名的时候,登录后必须要点下这个字符串IO域才会出现用户名,有什么办法让这个IO域自动刷新出么,我想到一个办法是用一个定时按钮单击来刷新,按钮做成透明…

    SIMATIC WinCC 2020年11月1日
  • Wincc画面按钮及画面窗口显示问题

    现在有一主画面,主画面上有画面窗口及按钮1和按钮2,按下1按钮画面窗口上显示一个画面且该画面中有ABCD四个按钮,按下A按钮,在原画面窗口中显示A1画面。求如何用脚本(最好是VBS…

    SIMATIC WinCC 2018年12月14日
  • ACCESS 变量如何导入到WINCC里

    WINCC里建立了6个连接,JK-1~JK-6(access里也是建立了6个连接),导入access变量时,怎么只能导入第一个,再导入也提示导入完成了,但是WINCC变量组里却没有…

    SIMATIC WinCC 2019年6月11日
  • WinCC能否自动归档字符串?

    曾试图用用户归档归档字符串,但是用户归档是手动归档,而本项目中要归档的是外部字符串变量,需要随字符串变量的变化自动进行归档,有没有办法实现啊? 问题补充:此项目是在别的软件中已经将…

    SIMATIC WinCC 2019年6月11日
  • WinCC v6.2数据读取

    WinCC v6.2和PLCS7-224 通过PC/PPI总线连接,可以读取存储器内实时数据,现在想将显示的实时数据存储到EXCEL里面或者将EXCEl的数值导…

    SIMATIC WinCC 2021年7月5日
  • 如何设置wincc成只能监视不能编辑

    如何设置wincc成只能监视不能编辑 问题补充:属性里是如何设置的 请截图给我看一下 谢谢。 最佳答案 在WINCC属性里把快捷键都锁住,然后让WINCC开机自…

    SIMATIC WinCC 2021年7月5日
  • Automation License Manager打不开

    Automation License Manager打不开 提示:没有启动“自动化许可证管理器服务”    &…

    SIMATIC WinCC 2019年6月11日
  • WINcc的过程变量与内部变量的关系

    WINcc的过程变量是否可以变为内部变量后作数据处理。如过程变量的2个不连续的二进制位,再加上6个位,变成一个8位字节,作成一个选择匡 最佳答案 可以的。过程变量用脚本分解成8,1…

    SIMATIC WinCC 2021年7月5日
  • wincc通讯时占用cpu特高?电脑特慢!

    用wincc写入参数后电脑就特慢,不写入变量电脑运行还可以?请问怎么解决?没装杀毒软件! 问题补充:comm20~1.exe通信的进程占用cpu特高,是电脑的配置太低了吗?p4&n…

    SIMATIC WinCC 2019年6月11日
  • 画面窗口隐藏

    在wincc设计的过程中,经常需要使用到画面窗口来做弹窗,这导致在一些画面中需要使用大大小小十多个画面窗口,一些画面中的元素例如阀门、泵等被画面窗口遮盖住了。那么如何在设计过程中将…

    SIMATIC WinCC 2021年7月5日