前提・実現したいこと
お世話になります。
ユーザーフォームを呼び出し、外部アプリ(捺印アプリ)を呼び出して使いたい。
ソースコードのどこに問題があるでしょうか?
発生している問題・エラーメッセージ
パソコン起動したあと、最初の1度目のみに発生します。
2回目以降は大丈夫です。
Private Sub UserForm_Initialize内のrc = Shell(Targetprogram, vbNormalFocus)
で、外部アプリを呼び出すのですが、1度目は何故かここで立ち上がっていないようです。特にエラーメッセージも表示されません。
そこで、
Private Sub UserForm_Activate()
内に、
AppActivate "職印くん32", True
とし、外部アプリをアクティブに指定していますが、立ち上がっていない時は、エラーを返すので、エラー5を返す場合は、立ち上がっていないようなので、再度呼び出して立ち上げます。
If Err.Number = 5 Then
rc = Shell(Targetprogram)
で、ここで呼び出すことができるのですが、その後、ユーザーフォームを操作しようとすると、ユーザーフォームが消えてしまいます。操作するまでは、存在しています。
(一度この該当Excelファイルを閉じて再度立ち上げ直したとしても)パソコンを起動して2回目以降に実行する場合であれば、最初のPrivate Sub UserForm_Initialize内のrc = Shell(Targetprogram, vbNormalFocus)で、外部アプリが立ち上がりその後のユーザーフォームもそのまま使えます。
Err.Number = 5 ```(パソコン起動後、最初の一回目の実行時のみ発生)
該当のソースコード
Private Sub UserForm_Initialize()
On Error GoTo myError
Targetprogram = "C:\Program Files\Hashi's Tools\職印くん32\Shokuin.exe"
rc = Shell(Targetprogram, vbNormalFocus)
DoEvents
If rc = 0 Then
MsgBox "職印くん32の起動に失敗しました。" & vbCrLf & _
"お手数ですが、再度実行して下さい。"
Exit Sub
End If
Exit Sub
myError:
If Err.Number = 53 Then
MsgBox "指定した場所に捺印アプリがみつかりません。" & vbCrLf & _
"UserForm1のUserForm_Initialize内に記述してあるファイルの指定場所(Targetprogram)を変更して下さい。", vbExclamation
Else
MsgBox "エラーが発生しました" & vbCrLf & _
Err.Description, vbExclamation
End If
End
End Sub
VBA
1 2 3 4 5 6### 試したこと 7 8 9 10### 補足情報(FW/ツールのバージョンなど) 11Excel2013 32ピット、64ビットパソコンのどちらでも発生することを確認 12上記2台のPCで試しましたが、再現率100%です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/25 16:01
2020/08/25 23:59