-3

我对这里的宏观事件有疑问。下面是我的代码。这将执行以下操作'

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
  1. 它将excel文件转换为制表符分隔的txt文件
  2. 它创建了 excel 文件的备份副本,我希望每天执行此操作,以便每天将 excel 文件上传到 Oracle 表。将 excel 电子表格转换为制表符分隔的 txt 文件的原因是为了保留格式(以防止在将其导出到 oracle 时删除前导零)

但现在我正在尝试增强此代码,以便执行以下操作而不会出现任何故障。我试图以所有可能的方式做到这一点。因为我对编程很陌生,所以我无法做到这一点。

  1. 该代码应将 excel 文件转换为在我的桌面上以制表符分隔的保存(希望我当前的代码足以执行此操作)
  2. 它应该在名为“Repository”(桌面中的文件夹)的文件夹中创建一个备份副本。如果可能,对我的工作簿的每次更改都应生成带有版本历史记录的备份副本(文件名中的日期和时间戳)
  3. 与我的代码相关的最大问题是,在关闭时,会出现三个单独的对话框 - 一个询问我是否要保存,另一个询问我是否要保留我在剪贴板中复制的内容,另一个是替换现有的保存在文件夹中的文本文件有没有办法从宏中回答这些对话框(或抑制它们),所以我不需要每次运行宏时手动单击是或否?
  4. 我已将我的宏附加到 excel 中的“形状”,但我的首要任务是在关闭我的工作簿时运行我的宏。每次当我的工作簿发生任何更改并保存工作簿时,它都应该创建一个制表符分隔的文本文件,该文件应该替换现有的 Txt 文件,而无需任何确认对话框。

请帮助我。这对我来说非常需要

一百万谢谢

4

1 回答 1

3

该代码应将 excel 文件转换为在我的桌面上以制表符分隔的保存(希望我当前的代码足以执行此操作)

是的,您可以硬编码桌面路径或使用此代码自动获取桌面路径

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

关于警报,我已经在上一节中解释过。

希望这能让你走上正确的道路。

于 2013-03-29T15:26:58.263 回答