每次保存我的xlsx时,如何使excel自动导出我的工作表的txt副本?

时间:2017-12-15 15:06:33

标签: excel excel-vba vba

我使用excel编辑表格数据并使用版本控制跟踪更改。每次我在xls(x)中进行更改时,我必须转到File-> Export,然后excel继续编辑导出的文件而不是xls(x)。

我想excel每次保存我的xls(x)表时自动导出我的工作表的文本版本,并继续编辑xls(x)。我如何实现这一目标?

编辑:

我将文件保存为启用宏的文件(xlsm),启用了宏并遵循John Coleman的建议,将以下代码(ref)插入VBAProject-> ThisWorkbook:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Application.DisplayAlerts = False
    Dim s As String
    s = ActiveWorkbook.FullName
    s = Replace(s, "xlsm", "txt")
    ActiveWorkbook.SaveAs Filename:=s, FileFormat:=xlText
    Application.DisplayAlerts = True

End Sub

但活动工作簿成为txt文件(excel紧随其后崩溃)。有没有办法导出并继续编辑原始文件?

1 个答案:

答案 0 :(得分:1)

将文件另存为启用宏的文件(xlsm),启用宏,转到Developer-> Visual Basic并将以下代码插入VBAProject-> ThisWorkbook:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Dim sh As Worksheet
    Set sh = Application.ActiveSheet

    Dim s As String
    s = ActiveWorkbook.FullName
    s = Replace(s, "xlsm", "txt")

    Dim wb As Workbook
    Set wb = Application.Workbooks.Add
    sh.Copy After:=wb.Sheets(wb.Sheets.Count)

    wb.SaveAs Filename:=s, FileFormat:=xlText, CreateBackup:=False
    wb.Close

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

End Sub