我对这里的宏观事件有疑问。以下是我的代码。这将执行以下操作'
Private Sub SaveAsTabDelimited(ByVal sFileName As String)
With ActiveWorkbook
.SaveAs Filename:=sFileName, FileFormat:=xlText, CreateBackup:=True
End With
End Sub
Public Sub test()
SaveAsTabDelimited "C:\Users\te160772\Desktop\Toad Test\Testsanthu.txt"
ActiveWorkbook.Close savechanges:=True
End Sub
但是现在我正在尝试增强此代码,以便执行以下操作而不会出现任何故障。我试图以各种可能的方式做到这一点。因为我对编程很新,所以我无法做到这一点。
请帮我解决这个问题。这对我来说是非常需要的
万分感谢
答案 0 :(得分:2)
代码应该将excel文件转换为tab分隔保存在我的桌面上(希望我当前的代码段足以执行此操作)
是的,您可以硬编码桌面路径或使用此代码自动获取桌面路径
Sub GetDesktopPath()
Dim oWS As Object
Dim DskTopPath As String
Set oWS = CreateObject("WScript.Shell")
DskTopPath = oWS.SpecialFolders("Desktop")
Debug.Print DskTopPath
Set oWS = Nothing
End Sub
它应该在名为“Repository”的文件夹(桌面中的文件夹)中创建备份副本。如果可能,对工作簿的每次更改都应生成包含版本历史记录的备份副本(文件名中的日期和时间戳)
您可以使用Workbook_BeforeSave
事件创建现有工作簿的副本。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
End Sub
您可能想要浏览ThisWorkbook.SaveCopyAs
有关详细信息,请参阅Excel帮助。
与我的代码相关的最大问题是,在关闭时,会出现三个单独的对话框 - 一个询问我是否要保存,另一个询问我是否要保留我在剪贴板中复制的内容,另一个是替换保存在文件夹中的现有文本文件有没有办法从宏中回答这些对话框(或抑制它们),所以每次运行宏时我都不需要手动点击是或否?
只需将代码夹在
之间即可摆脱这些警报Application.DisplayAlerts = False
'~~> Your Code
Application.DisplayAlerts = True
如果您经常使用剪贴板,那么您可能还想使用
清除它Application.CutCopyMode = False
我已经将我的宏附加到excel中的“形状”但我的首要任务是在关闭我的工作簿时运行我的宏。每当我的工作簿发生任何更改以及保存工作簿时,都应该创建一个制表符分隔的文本文件,它应该替换现有的Txt文件而不需要任何确认对话框。
您可以使用Workbook_BeforeClose
事件来运行相关代码
Private Sub Workbook_BeforeClose(Cancel As Boolean)
End Sub
关于警报,我已在上一节中解释过。
希望这能让你走上正确的道路。