掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Excel VBA のサブルーチンを呼び出す? (ID:5621)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんばんわ。 Delphiを最近始めたばかりの駆け出しです。 プログラミング自体がビギナーなのですが、Excel VBAで作成したマクロブックを起動するための起動ファイル(EXE)を、以前どこかで教えていただいた以下のコードで作成して動作させています。 *********************************************** program OpenExcel; uses Windows, SysUtils, ComObj, Variants; {$R *.RES} var objExcel: OleVariant; FileName: String; begin if InitProc <> nil then TProcedure(InitProc); //以下の行のブック名を記述/変更します。 FileName := ExtractFilePath(ParamStr(0)) + 'startup.xls'; if FileExists(FileName) then begin try objExcel := CreateOleObject('Excel.Application'); objExcel.Visible := False; objExcel.Workbooks.Open(FileName); objExcel.Visible := False; finally objExcel := Unassigned; end; end; end. *********************************************** objExcel.Visible := False; から、 objExcel.Visible := True; にしているのは、ユーザーフォームのスプラッシュを起動時に表示 させているので、スプラッシュが3秒間表示し終わったら、Excel アプリケーションをVisible = True するようになっています。 そこで、起動ファイル(EXE)を使用せず、マクロブックを直接起動 させていたときは、起動時に他のブックが起動していたら、「他の ブックが起動しています。終了させてから起動してください。」と いうMsgBoxを表示させるようにし、起動できないような仕様にして いました。 しかし、起動ファイルを使用するようにしてから、その起動中の他 ブックのチェックをするサブルーチンを読まなくなってしまい、す んなり起動してしまいます。 推測ですが、上記の起動ファイルの中から、そのルーチンを読み込む ようにしないとダメなのではないかと考えています。 あるいは、そのルーチンのコードそのものを起動ファイルにコーディング しないといけないのではないかと。 お手数をかけますが、ご教示いただけると大変助かります。 以下に、起動中のブックをチェックするコードを掲載しておきます。 *********************************************** Sub WBCheck() Dim i As Long Dim 一覧 As String Dim Result As Long If Workbooks.Count = 1 Then Exit Sub For i = 1 To Workbooks.Count If Workbooks(i).Name <> ThisWorkbook.Name Then 一覧 = 一覧 & Chr(13) & Workbooks(i).Name End If Next i Result = MsgBox("以下のブックが起動中です。終了させて下さい。" & Chr(13) & _ "本ブックは単独起動で操作して下さい。" & Chr(13) & "" & 一覧, vbOKOnly, "ブック同時起動警告") If Result = vbOK Then On Error Resume Next Application.CommandBars("User Menu Bar").Delete On Error GoTo 0 End If ActiveWorkbook.Close End Sub ***********************************************
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.