2017-10-27 19 views
0

これらの問題を数日間修正しようとしましたが、私たちは別のフォーラムに投稿しましたが、答えはまだありません。ユーザー終了後にExcelを終了するユーザーフォーム

Userformが閉じられた後にExcelの実行に問題がありますが、私はアプリケーションを終了するはずだと思いますが、そうではありません。バックグラウンドでExcelを実行し続け、タスクを終了する必要がありますマネージャー。 ファイルをtempフォルダにコピーし、excelとuserformを開くマクロを実行するためのvbaファイルを作成しました。 何か助けていただければ幸いです。

これは、コピーして、マクロを開くVBAスクリプトです:

Dim FSO 
    Set FSO = CreateObject("Scripting.FileSystemObject") 
    FSO.CopyFile "C:\pdfv6.xlsm", "C:\Windows\Temp\" 
    Set objExcel = CreateObject("Excel.Application") 
    objExcel.Application.Run "'C:\Windows\Temp\pdfv6.xlsm'!module1.macro1" 
    objExcel.DisplayAlerts = False 
    Set objExcel = Nothing 
    objExcel.Application.Quit 

そして、これは、VBAモジュールの一部です:

Sub Macro1() 
    Application.Visible = False 
    UserForm1.Show 
    End Sub 
    Set objExcel = Nothing 

そして、これがユーザーフォームを閉じるを扱うサブですアプリケーション。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
If CloseMode = 0 Then 
    Unload Me 
    ThisWorkbook.Close savechanges = False 
    Application.Quit 
    End 
    End If 
    End Sub 
+1

Excelで新しいインスタンスを作成していますか?どうしてそんなことをするのか? – braX

+0

あなたはアドオンを試したことがありますか? (XLAMファイル)それはより論理的なアプローチになるようです。 – braX

+0

コンポーネントがどのように相互作用しているかは不明ですが、まだ回答が得られていない理由と関連があるかもしれません。 ** [edit] **をクリアしてください。また、 'UserForm.Show'について[** this blog post **](https://rubberduckvba.wordpress.com/2017/10/25/userform1-show/)を読む必要があります(完全免責条項:私はそれを所有していますブログ)。 –

答えて

2

この問題が見つかりました。 私はApplication.Quitを2回使用していました 一度vbsスクリプトを実行してから、フォームを閉じていました。 私はvbsスクリプトのものを取り除きました。 ご協力いただきありがとうございます。

+0

また、objExcel = Nothing before objExcel.Application.Quitを設定することはできません。エラーが発生します... – stefan

+0

欠陥のあるアーキテクチャを頑強に保持することは、いつか崩壊するでしょう。時間をかけて、あなたが与えられた助言に耳を傾け、物事を正しく*行います。 "うまくいく"コードは、必ずしも*良いコード*であるとは限りません。 –

関連する問題