哪位高人能给段用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日 上午8:47
下一篇 2019年6月11日 上午8:47

相关推荐

  • VBA组态

    我想改变图形编辑器中的部分矩形的颜色,在下面的程序中怎么修改?Sub 机台颜色设置()Dim colSearchResults As HMI…

    SIMATIC WinCC 2017年10月31日
  • plc300采集的模拟量在WINCC中显示出现问题

    cpu为315-2pn/dp自带一以太网接口,我用以太网通讯,即wincc6.2.plc300和step75.4三者之间用TCP/IP通讯,现在通讯应该是没问题了。用FC105采集…

    SIMATIC WinCC 2019年6月11日
  • wincc6.2与step7集成

    将wincc集成到step7里面,如果是有很多电脑联网,要实现同步,但是所有的电脑都装了wincc、只有一台电脑装了step7。怎么实现这种同步?求高手解决…谢谢!! 最佳答案…

    SIMATIC WinCC 2019年6月10日
  • WINCC7.0历史曲线双影,重叠

    WINCC7.0历史曲线双影,重叠,电脑系统时间被人修改了,就变成下图,重新修改没用,具体怎样做,请高手赐教 图片说明:    最佳答案 没办法了~等修改后的时…

    2021年7月5日
  • WINCC7.4安装问题***********************

    我选择数据包安装的,系统是一个刚装的旗舰版WIN7SP1虚拟机,什么都没装很纯净,安装完成后WINCC7.4自带的SQL SERVER2014如何打开?没有managem…

    2020年11月1日
  • Wincc7.0 sp3 有报警但不显示

    wincc 7.0报警变量触发了,报警控件里不显示报警信息,在计算机属性里也勾选了运行报警记录,报警记录里也添加了相关的报警变量,用Wincc和Step7仿真连接,有变量…

    SIMATIC WinCC 2017年11月25日
  • wincc报警限定值运行修改

    我设了一个模拟量,配置了报警记录,我想通过一个输入/输出域在系统运行的时候通过写进一个数值在线修改这个模拟量的上限值,我要是直接在报警记录设定这个模拟量的上限值就能在报警控件里看到…

    SIMATIC WinCC 2019年6月11日
  • wincc数据问题

    wincc画面上一部分数据显示,另一部分数据有时不显示,有时大概20几秒才显示,step7按了在线没有反应 最佳答案 那应该是你的画面连接变量的问题,你在wincc中建立了变量连接…

    SIMATIC WinCC 2021年7月5日
  • 用户归档C脚本问题?

    各位好!    小弟使用用户归档想实现通过ID来查询该组归档表格里的值,但是用户归档提供的C-Script中只有uaArchiveMoveF…

    SIMATIC WinCC 2019年6月11日
  • wincc怎么实现被局域网上其他用户查看数据

    我的具体情况是这样,装有WINCC的电脑带双网卡,一个网卡与PLC连通,一个连入工厂的局域网。    工厂里别的电脑是否能通过IE,查看WI…

    SIMATIC WinCC 2017年11月1日