分享两个 Office 论坛

以上论坛汇聚了很多微软 Office 大牛,适合讨论各种技术疑难。

1 Like

感谢推荐

说起来我一直有一个技术问题没解决,通过 COM 接口对 Excel 进行的操作是不能撤销的
为了防止误操作无法挽回,我不得不在 VBA 里放进了几行很变态的代码,每当启动、退出或修改表格时,都自动保存一个备份.不知道现在有没有办法,可以优雅地 Ctrl-z

Public Index As Integer

Private Sub Workbook_SheetChange(ByVal Sh As Object, _
 ByVal Source As Range)
 myNowTime = Format(Now, "yyyy-mm-dd" & "—" & "hh-mm-ss") & Right(Format(Timer, "0.000"), 4)
 If Not Dir(ThisWorkbook.Path & "\Excel版本历史", vbDirectory) <> "" Then
       MkDir ThisWorkbook.Path & "\Excel版本历史"
 End If
 If Not Dir(ThisWorkbook.Path & "\Excel版本历史\" & Format(Now, "yyyy-mm-dd"), vbDirectory) <> "" Then
       MkDir ThisWorkbook.Path & "\Excel版本历史\" & Format(Now, "yyyy-mm-dd")
 End If
 Index = Index + 1
 ThisWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\Excel版本历史\" & Format(Now, "yyyy-mm-dd") & "\" & ThisWorkbook.Name & "##" & myNowTime & "(" & Index & ")" & ".xlsm"
 ThisWorkbook.Save

 
End Sub

Private Sub Workbook_Open()
 myNowTime = Format(Now, "yyyy-mm-dd" & "—" & "hh-mm-ss") & Right(Format(Timer, "0.000"), 4)
 If Not Dir(ThisWorkbook.Path & "\Excel版本历史", vbDirectory) <> "" Then
       MkDir ThisWorkbook.Path & "\Excel版本历史"
 End If
 If Not Dir(ThisWorkbook.Path & "\Excel版本历史\" & Format(Now, "yyyy-mm-dd"), vbDirectory) <> "" Then
       MkDir ThisWorkbook.Path & "\Excel版本历史\" & Format(Now, "yyyy-mm-dd")
 End If
 
 ThisWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\Excel版本历史\" & Format(Now, "yyyy-mm-dd") & "\" & ThisWorkbook.Name & "##" & myNowTime & "(打开)" & ".xlsm"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 myNowTime = Format(Now, "yyyy-mm-dd" & "—" & "hh-mm-ss") & Right(Format(Timer, "0.000"), 4)
 If Not Dir(ThisWorkbook.Path & "\Excel版本历史", vbDirectory) <> "" Then
       MkDir ThisWorkbook.Path & "\Excel版本历史"
 End If
 If Not Dir(ThisWorkbook.Path & "\Excel版本历史\" & Format(Now, "yyyy-mm-dd"), vbDirectory) <> "" Then
       MkDir ThisWorkbook.Path & "\Excel版本历史\" & Format(Now, "yyyy-mm-dd")
 End If
 
 ThisWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\Excel版本历史\" & Format(Now, "yyyy-mm-dd") & "\" & ThisWorkbook.Name & "##" & myNowTime & "(关闭)" & ".xlsm"
End Sub





3 Likes

如果是外部com操作,是不行的. 只能你代码自己设置撤销.

如果是打开excel执行的操作, VBA是可以的撤销的.

2 Likes

其实除了office技术疑难,更想知道现在office新UI标题栏这么高,各位大佬有没有办法能够调紧凑点的办法?

可惜都是英文的,楼主可有中文的推荐,早些时候去ExcelHome多些。

1 Like

标题栏带着按钮,不可能调低. 不过 office365可以更改工具栏高度

image

第三个:
https://answers.microsoft.com/en-us/msoffice/forum