掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB6でExcelを制御するには? (ID:112896)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ハナクソースさまご確認ありがとうございます. >>思うように処理が出来ませんでした.(2004/04/20(火) 13:27:45) >↑↑↑具体的に、意図する動きと現状の動きはどのようなものでしょうか?↑↑↑ というのは, このアプリケーションを実行している際は,他のエクセルが起動しない. 画面を移動させると残像(?)が残ってしまう. といった点です. 結局Shell関数を使用して以下のように修正しようと思います.(すみません) 同じような起動方法なのに,エクセルの立ち上がり状態が違うのはなぜなのでしょうか? ・・・とかいた時点で気づいたのですが,ウィンドウハンドラの解放って結構重要なことですよね? Public Function FileReadForExcel(ByVal pSelectFile As String, ByRef pCaptionTitle As String) As Boolean Dim xlApp As Excel.Application Dim xlPath As String Dim wkProcID As Long Dim wkHandle As Long Dim wkStatus As Long Dim Buffer As String On Error GoTo ErrFileReadForExcel FileReadForExcel = False Set xlApp = CreateObject("Excel.Application") ' オブジェクトの作成 pCaptionTitle = xlApp.Caption xlPath = xlApp.Path & "\" & m_Excel_Name ' Excel実行ファイル名取得 Set xlApp = Nothing ' オブジェクトの解放 xlPath = xlPath & " " & pSelectFile ' 起動させたいファイルを追加 wkProcID = Shell(xlPath, vbNormalFocus) ' プロセス実行,ID取得 If wkProcID = 0 Then ' IDが取得できない Call CmLog(g_SystemName, "modViewr(FileReadForExcel)", _ "以下のコマンドが実行できませんでした。" & xlPath, _ "", CmGetFilePath(g_LogDir, g_LogFileName)) Exit Function End If ' ハンドル取得 wkHandle = OpenProcess(SYNCHRONIZE, True, wkProcID) If wkHandle = Null Then Buffer = Space(300) FormatMessage FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, GetLastError(), LANG_NEUTRAL, Buffer, 300, ByVal 0& Buffer = Left$(Buffer, InStr(1, Buffer, vbNullChar & vbNullChar) - 1) Call MsgBox("エラーが発生しました。Err:" & Buffer, vbCritical, App.Title) End If ' プロセス待機 wkStatus = WaitForSingleObject(wkHandle, INFINITE) If wkStatus <> WAIT_OBJECT_0 Then Buffer = Space(300) FormatMessage FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, GetLastError(), LANG_NEUTRAL, Buffer, 300, ByVal 0& Buffer = Left$(Buffer, InStr(1, Buffer, vbNullChar & vbNullChar) - 1) Call MsgBox("エラーが発生しました。Err:" & Buffer, vbCritical, App.Title) End If ' ハンドルの解放 If wkHandle <> 0 Then CloseHandle (wkHandle) wkHandle = 0 FileReadForExcel = True Exit Function ErrFileReadForExcel: If Err.Number <> 0 Then Call MsgBox("エラーが発生しました。Err:" & Err.Description, vbCritical, App.Title) End If Exit Function End Function 最後に,ハナクソースさま,回答どうもありがとうございました. また何か行き詰まったときはよろしくお願いします.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.