VBA와 함께 Excel 자동화를 위해 Excel COM 추가 기능을 C++로 작성했습니다. 추가 기능에 대한 몇 가지 일반 정보를 보여주는 대화 상자가 있습니다. 이제 Excel에서 대화 상자를 여는 버튼을 만듭니다. 대화 상자를 이스케이프 키로 유지하면 대화 상자를 닫는 대신 스크립트가 중단된다는 Excel 메시지가 표시됩니다. 다음과 같이 중단 메시지를 표시하지 않을 수 있습니다.Excel COM 추가 기능 대화 상자가 스크립트를 중단합니다.
Application.EnableCancelKey = xlDisabled
그러나이 스크립트는 더 이상 중단 될 수 없으므로 해결책이 아닙니다.
여기에 내가 대화 상자를 엽니 다 VBA를 사용하는 방법 예는 다음과 같습니다
Private Sub ShowAboutDialog_Click()
Dim oComAddIn As COMAddIn
Set oComAddIn = Application.COMAddIns.Item("MyComAddIn.Example")
oComAddIn.Connect = True
Call oComAddIn.Object.ShowAboutDlg
End Sub
내 생각 엔 문제가 대화의 메시지 처리기 어딘가에 있다는 것이다 :
INT_PTR CALLBACK CAboutDialog::AboutDlg(
HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
...
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
// Here, the ESCAPE key should also be trapped?
EndDialog(hwndDlg, LOWORD(wParam));
return TRUE;
}
...
}
return FALSE;
}
대화 상자가 생성됩니다 :
DialogBox(g_hModule, MAKEINTRESOURCE(IDD_ABOUT), hWndParent, (DLGPROC)AboutDlg)
감사합니다.