Excel 2016似乎在保存时触发以编程方式添加的撤消级别,这在早期版本的Excel(2013,2010和2007)中不会发生.若要重现此明显错误,请打开一个新工作簿并将其另存为启用宏的工作簿(.xlsm文件).将以下代码粘贴到ThisWorkbook模块中:
Option Explicit
Public WithEvents App As Application
Private Sub Workbook_Open()
Set App = Application
End Sub
Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.OnUndo "foo", "modTest.Undo"
End Sub
Run Code Online (Sandbox Code Playgroud)
然后,插入一个名为的新模块modTest并粘贴以下代码:
Public Sub Undo()
MsgBox "This is the Excel 2016 bug."
End Sub
Run Code Online (Sandbox Code Playgroud)
最后,保存工作簿并重新打开它.在任何单元格中输入任何值以触发Application.SheetChange事件.保存工作簿(由于某种原因,您可能需要执行此操作两次),并且modTest将显示消息.
任何人都可以解释这里可能会发生什么,和/或如何解决这个问题?如果这确实是一个错误,向Microsoft报告的最佳方式是什么?
这段代码是VBA,但由于这个问题影响用VB.NET和C#编写的VSTO加载项,我也包括这些标签.
我有一个用于Office应用程序的COM加载项,它使用一个每30分钟在后台执行一次操作
System.Timers.Timer
Run Code Online (Sandbox Code Playgroud)
此后台操作通过Internet连接执行用户身份验证,并且我有一些用户的报告,当他们的PC从睡眠状态唤醒时,身份验证失败.我自己无法重现这种行为,所以我的理论是,当PC唤醒时,后台操作在恢复与Internet的连接之前执行(可能是当PC进入睡眠状态时,Windows关闭了连接).
一般情况下,如果一台PC在一段时间不活动后进入睡眠状态,当PC唤醒时会发生什么Timers?例如,Timer睡眠时暂停,然后在PC唤醒时以设定的间隔恢复(例如,如果TimerPC进入睡眠状态的时间间隔为10分钟,则Timer.Elapsed事件在PC唤醒后20分钟才会激活)?Timer.Elapsed事件是否排队,以便在PC唤醒时立即触发?Windows会Timer在PC进入睡眠状态时停止吗?或者,Timer在PC休眠时继续运行,但由于Internet连接中断(可能),后台操作无法执行用户身份验证?
我有一个Excel加载项,我正在开发,在Windows XP中工作正常.但是,我刚刚掌握了Windows 7 Professional,现在我无法通过VBA编辑器手动或以编程方式使用来保存此加载项ThisWorkbook.Save.
错误消息说
"Micrsosoft Office Excel无法访问文件'C:\ Program Files\Microsoft Office\Office 12\LIBRARY [一些随机的8个字符的字符串而不是我的加载项的名称]".
此对话框错误的可能解释之一是"文件名或路径不存在".嗯,当然不是.
我尝试关闭加载项文件及其目录的只读,以及使用"属性"对话框"解锁"文件(似乎是新的Windows 7功能),但无济于事.
如何在Windows 7中使用此基本保存功能?
我想在 VB.NET 中压缩一个包含文件和子文件夹的文件夹。我的解决方案针对 .NET 4.0 Client Profile。
我看到 .NET 4.5 有一个 ZipFile 类,.NET 4.0 有一个 System.IO.Packing 类(但不是客户端配置文件)。所以,那些都无济于事。我注意到还有一个 GZipStream 类,但我从来没有看到 .gz 文件四处浮动,所以不确定这是否是一个好方法。我更喜欢我知道我的用户可以使用的基本 .zip 文件。
有一些第三方解决方案,例如http://icsharpcode.github.io/SharpZipLib/,但我认为它们比我正在寻找的 10-20 行代码要臃肿得多。也许这是正确的答案...我不知道。
只是希望几行 VB.NET 代码可以在针对 .NET 4.0 CP 的解决方案中压缩一些文件。