2017-12-15 1 views
1

Excelを使用して表形式のデータを編集し、バージョンコントロールを使用して変更を追跡します。 xls(x)を変更するたびに、File-> Exportに移動しなければなりません。その後Excelはxls(x)の代わりにエクスポートされたファイルを編集し続けます。xlsxを保存するたびに、シートのtxtコピーを自動的にエクスポートするにはどうすればいいですか?

xls(x)シートを保存してxls(x)の編集を続けるたびに、シートのテキスト版を自動的に書き出すことをお勧めします。これをどのように達成するのですか?


EDIT:

私は、マクロ有効ファイル(XLSM)としてファイルを保存した有効なマクロとジョン・コールマンの提案を以下、VBAProject->はThisWorkbookに次のコード(ref)を挿入:

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ファイルになります(すぐにクラッシュします)。元のファイルを書き出して編集を続ける方法はありますか?

+2

でエクスポートするコードを入れてイベントハンドラ 'Workbook_BeforeSave()' –

+0

@JohnColeman上記のエラーが発生しました – Sparkler

+2

'ThisWorkbook'モジュールには、' Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean、Boolean as Cancel) 'という呼び出すことができるスタブが必要です。これは:https://www.exceldemy.com/how-to-enter-event-handler-vba-code/ –

答えて

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 
関連する問題