Tag: winapi

隐藏在Excel中行不工作 – pywin32

我用pywin32编写了一个小程序,用python32处理excel中的一些数据,我想隐藏一行以遮盖我的一个数据透视表上的标签。 根据MSDN正确的语法是 Worksheet.Rows('Row#')。EntireRow.Hidden = True 当我在代码中尝试这些时,没有任何反应 – 没有错误,也没有隐藏的行。 我已经尝试了所有可以想到的范围的组合,尝试提供它,但它不会隐藏输出文件中的行。 任何人都知道这个解决scheme,如果它不是由pywin处理? 编辑: 进一步的debugging,我发现,当我立即检查,该行的隐藏值是真实的,但是当我到达保存点行不再隐藏(另一个打印显示隐藏=假)

Excel 2013 Windows类名称

必须为我的VBA项目学习一点API,所以我正在试验。 interwebsbuild议这个代码应该在一个子工作,以find一个窗口句柄 Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Public Sub Test() Dim P As String P = Windows(1).Caption MsgBox P MsgBox FindWindowA("", P) End Sub 当我运行这个代码的时候,打开一个带有“Book1.xlsm”标题的工作表,我得到“Book1.xlsm”,然后是“0” 我究竟做错了什么? 如果我尝试使用“EXCEL7”作为类名而不是空string,我会得到同样的结果。 感谢那些年龄更大,更聪明的人 以下讨论后添加….这不是一个真正的答案我的问题,因为它不知道为什么窗口无法通过FindWindowAfind(这就是它声称做的,因为我读它)但进一步的研究表明,我不能直接通过FindWindowA获得窗口句柄,但必须考虑到,他们可能是子窗口。 所以这个代码至less可以find我的窗口句柄: Private Declare Function FindWindow _ Lib "user32" _ Alias "FindWindowA" ( _ ByVal […]

Excel – Windows 7任务栏进度

运行Excel 2010,我可以肯定总是在这个版本上运行这些表单,因为它只能在我工作的terminal计算机上进行本地访问。 我通过excel运行一些导入过程和大文件夹过滤/打印批处理function。 我想在我的function处理过程中使用Windows 7任务栏进度条视觉效果,给出他们走多远的想法。 考虑与其他视觉效果进行展示,但这(如果可能的话)似乎是最明显和专业的风格。 我一直在努力尝试做这个工作,无济于事。 我的理解到目前为止,我需要实现Windows API中常见的ITaskbarList3接口。 从代码中我发现了如何使其工作,一旦实现,其余的看起来相当简单和不言自明。 我完全限于使用Excel作为代码的基础,在工作计算机上没有安装权限。 我可以在家安装任何必要的文件,然后转移它们。 乐于使用任何广泛的或真正的倒退的方式来结束,作为结束certificate无论什么手段。

内存不足错误 – 尝试使用Win API来检查ErrorHandler中的内存使用情况

我在Excel VBA中有一个导致内存不足错误的过程。 我试图检查内存的使用情况作为我的ErrorHandler的一部分,以及当遇到错误时,执行已达到多远的快照。 我发现下面的代码调用Win API,并提供“工作集大小”的内存,但我也想检查提交大小。 有谁知道什么语法我应该使用提交大小? 我想我需要改变.WorkingSetSize与其他东西,但我找不到一个参考和随机testing像'CommitSize'的东西不起作用。 提前致谢。 Declare Function GetCurrentProcessId Lib "kernel32" () As Long Function GetWorkingSetSize() Dim objSWbemServices As Object ' Returns the current Excel.Application ' memory usage in MB Set objSWbemServices = GetObject("winmgmts:") GetWorkingSetSize = objSWbemServices.Get( _ "Win32_Process.Handle='" & _ GetCurrentProcessId & "'").WorkingSetSize / 1024 Set objSWbemServices = Nothing End Function

Windows定时器vba改变速度

我使用VBA中的Windows定时器API来每0.5秒处理一个子程序。 我希望能够在定时器运行时更​​改timerproc的速度。 不幸的是StartTimer子在开始时只调用一次。 任何想法如何我可以修改我的代码来改变速度(比如0.25)? Public Declare Function SetTimer Lib "user32" ( _ ByVal HWnd As Long, _ ByVal nIDEvent As Long, _ ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long Public Declare Function KillTimer Lib "user32" ( _ ByVal HWnd As Long, _ ByVal nIDEvent As Long) As Long Public TimerID As […]

VBA – 获取任务栏应用程序

我在网上find了一个代码: Public Sub showProcesses() Dim W As Object Dim ProcessQuery As String Dim processes As Object Dim process As Object Set W = GetObject("winmgmts:") ProcessQuery = "SELECT * FROM win32_process" Set processes = W.execquery(ProcessQuery) For Each process In processes MsgBox process.Name MsgBox process.Description Next Set W = Nothing Set processes = Nothing Set process = […]

pythonwin32 COMclosuresexcel工作簿

我在COM中打开了几个不同的工作簿(excel xlsx格式),并混淆了它们。 随着程序的进展,我希望closures一个特定的工作簿,但保持rest。 如何closures一个工作簿? (而不是整个Excel应用程序) xl = Dispatch("Excel.Application") xl.Visible = False try: output = xl.Workbooks.Open(workbookName) output2 = xl.Workbooks.Open(workbook2Name) except com_error: print "you screwed up blahblahblah" exit() #work on some stuff #close output but keep output2 open

手动打开Excel文件允许公式运行,用VBScript或PowerShell或Python的win32com打开excel文件不会

我遇到一个脚本没有更新Excel文件的问题,我减less了以下问题: 如果我打开一个Excel文件,我可以去公式选项卡,点击“现在计算”,它会花一点时间更新所有的计算。 如果我只是运行一个VBScript来打开文件(见下面的代码),如果我去公式选项卡,然后单击“立即计算”它将立即刷新,没有什么会改变。 Dim objXLApp, objXLWb, objXLWs Set objXLApp = CreateObject("Excel.Application") objXLApp.Visible = True Set objXLWb = objXLApp.Workbooks.Open(file_path.xls) 我已经尝试了各种各样的东西: objXLApp.Calculation = xlAutomatic objXLApp.Calculate objXLApp.CalculateFull objXLApp.CalculateFullRebuild objXLWb.RefreshAll objXLWs.EnableCalculation = True objXLWs.Calculate 但这些似乎做同样的事情,去标签,点击“计算”导致只是一个快速刷新和Excel页面不会尝试更新。 使用python的win32com模块也是如此。 我无法在打开的文件中运行计算。 import win32com.client as win32 excel = win32.Dispatch('Excel.Application') excel.Visible = True excel_workbook = excel.Workbooks.Open(file_path.xls) 使用PowerShell也是如此。 $excel = New-Object -com excel.application $excel.Visible = $True […]

Python中的win32com Spyder控制台导致错误

我直接从这个文档/教程运行下面的代码。 import win32com.client as win32 excel = win32.gencache.EnsureDispatch('Excel.Application') wb = excel.Workbooks.Add() wb.SaveAs('add_a_workbook.xlsx') excel.Application.Quit() 得到这个: execfile(filename, namespace) File "C:/Users/Username/Desktop/script.py", line 106, in <module> wb = excel.Workbooks.Add() File "C:\Users\Username\AppData\Local\Temp\gen_py\2.7\00020813-0000-0000-C000-000000000046x0x1x7\Workbooks.py", line 34, in Add ret = self._oleobj_.InvokeTypes(181, LCID, 1, (13, 0), ((12, 17),),Template TypeError: an integer is required 有没有人有任何想法,为什么? 我试过使用xlsx和xls文件,并更改文件地址,并尝试从该教程中的多个示例,他们都给我类似的错误,我不知道为什么。 我可以得到尽可能wb = excel.Workbooks.Add()之前,我得到了TypeError: an integer is required警告,如果我尝试wb = […]

如何停止自动打开Excel工作簿闪烁?

我正在使用工作簿path的GetObject来创build一个新的或抓住现有的Excel实例。 如果抓取现有的用户创build的实例,应用程序窗口是可见的; 如果问题的工作簿path已closures,则会打开并隐藏,但不会在屏幕上闪烁。 Application.ScreenUpdating没有帮助。 我不认为我可以使用Win32Api调用LockWindowUpdate,因为我不知道我得到或创build文件之前打开。 是否有一些其他的VBA友好的方式(即WinAPI)冻结屏幕足够长的时间来获取对象? 编辑 :只是为了澄清,因为第一个答案build议使用应用程序对象…这些是重现此行为的步骤。 1.打开Excel – 确保只运行一个实例 – 保存并closures默认工作簿。 Excel窗口现在可见但“空”2.打开Powerpoint或Word,插入一个模块,添加下面的代码 Public Sub Open_SomeWorkbook() Dim MyObj As Object Set MyObj = GetObject("C:\temp\MyFlickerbook.xlsx") 'uncomment the next line to see the workbook again' 'MyObj.Parent.Windows(MyObj.Name).Visible = True' 'here's how you work with the application object… after the fact' Debug.Print MyObj.Parent.Version End Sub 注意闪烁,因为Excel在现有实例中打开文件,然后隐藏它,因为它是自动化的 但是请注意,在闪烁完成之前,没有应用程序对象可以使用。 这就是为什么我正在寻找一些更大的API方法来“冻结”屏幕。