2017-07-21 17 views
0

元のシートを保存するたびに、このシートをコピーします。Excel VBA aftersaveイベントが機能しません

これを達成するために、モジュール上でマクロを呼び出すにAfterSaveを使用しようとしていました。

コードは以下の通りです:

Private Sub Workbook_AfterSave(ByVal Success As Boolean) 

If Success Then 
Application.EnableEvents = False 

Call CopiarNovaPlanilha 

Application.EnableEvents = True 
End If 
End Sub 

Application.EnableEventsは私がHEREを学んだとしてだけでループを回避することです。ここではモジュール内のマクロです:

Sub CopiarNovaPlanilha() 

ActiveWorkbook.SaveCopyAs "I:\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\ALOCACAO TECNICOS.xlsx" 

End Sub 

AfterSaveではないので、私は私の元のファイルを保存するときにそれが必要として、それは私のサブを呼び出していないが、このコードは完璧に働いています。

このイベントでは何が起こっているのですか?

+1

どのような面がうまくいきませんか? 'Workbook_AfterSave'イベントが呼び出されていますか? –

+0

これは私のために働いていますが、xlsx拡張子を付けてファイルを保存すると、そのファイルを開くと開くことができなくなります。イベントを設定するためにサブルーチンを実行しようとしましたが、書き込みやデバッグ中に誤って無効にしてしまったのですか? – wrslphil

+0

これは違いがあるのか​​どうか分かりませんが、あなたは '.xlsx'として保存しているようです。マクロ対応の 'xlsm'で保存します。 –

答えて

1

あなたは条件をテストしていませんでしたので、それはだと思う、これを試してみてください成功の価値のそれが真実か偽かをチェックする必要があります

Private Sub Workbook_AfterSave(ByVal Success As Boolean) 

If Success = True Then 

    Application.EnableEvents = False 

    Call CopiarNovaPlanilha 

    Application.EnableEvents = True 

End If 

End Sub 
+0

私の悪い!それは動作しましたか? – wrslphil

+0

私はたくさんのことをテストしましたので、それが問題なのかどうかは本当に分かりませんが、今はうまくいきます...ありがとう:) – paulinhax

+0

ハハ、少なくとも今はうまくいきます。心配ない! – wrslphil

0

ブックをブックブックから直接呼び出すと、問題が発生することがあります。私は何をしようとするあなたをお勧めしますが、単にそのようAfterSaveイベントにあなたのサブの内容を入れている:

Private Sub Workbook_AfterSave(ByVal Success As Boolean) 

Application.EnableEvents = False 

ActiveWorkbook.SaveCopyAs "I:\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\ALOCACAO TECNICOS.xlsx" 

Application.EnableEvents = True 

End Sub 

はあなたのサブの内部の任意の変数を使用していない考慮すると、私はなぜこれがないだろう見ていけません作業!

+0

私はこれが前にやっていたことだから同じ考えを共有していて、うまくいきませんでした。 – paulinhax

0

場所:CopiarNovaPlanilhaで偽application.events =()の代わりに:

Private Sub Workbook_AfterSave(ByVal Success As Boolean) 

Call CopiarNovaPlanilha 

End Sub 

とモジュール用:

Sub CopiarNovaPlanilha() 

    Application.EnableEvents = False 

    ActiveWorkbook.SaveCopyAs "file location" 
    Application.EnableEvents = True 
    End Sub 
+0

モジュールを呼び出す前にapplication.enableイベントをfalseに設定してサブコピーを禁止します – TJYen

+0

'Application.EnableEvents'は私の' AfterSave'が再入力するのを妨げているだけで、実行を停止しません。私はこの解決策を試したが、うまくいかなかった。 – paulinhax

+0

それは私のために働いています。いくつか確認する必要があります:ファイル名が正しいことを確認し、最後に名前を付けます。それ以外の場合は、フォルダの名前として前のフォルダに保存されます。 – TJYen

関連する問題