VBからCreateObjectで作成したExcelのプロセスを終了させたいと考えています。
困っている点として、CreateObjectで作成したときにプロセスIDをどのように取得すれいいのかという点です。
宜しくお願いします。

環境
VB6.0+SP5
Windows2000+SP2
Excel2000

A 回答 (1件)

VB5では、これでいいはずです。

VB6でも同じでは?!

Dim ExcelObj As Excel.Application
:
:
Set ExcelObj = CreateObject("Excel.Application")
:
:
ExcelObj.ActiveWorkbook.Close (False)
ExcelObj.Quit
Set ExcelObj = Nothing

この回答への補足

回答ありがとうございます。
VBからExcelを起動する場合、SUZUYUUさんが書かれた記述が基本的な書き方です。
私のしたいことは
Set ExcelObj = CreateObject("Excel.Application")
の後にWorkbookをopenあるいはaddしたときに発行されるPID(プロセスID)を取得したいのです。
Shell起動をしたとき、戻り値を利用したPIDの獲得はわかったのですが、、この記述でしたときにどのようにPIDを獲得すれば良いのか調査中です。
もしご存知であればご教授ください。

補足日時:2002/04/10 08:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVB6(SP5)+OO4OでCreateObjectが失敗する

上記の環境でプログラムを作成しています。
Windows2000ではうまくいきました。
WindowsXP(Professional)で失敗します。

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase(C_ORACLE_TNS, C_ORACLE_USER & "/" & C_ORACLE_PASS, 0)

のようなコーディングでCreateObjectのところで失敗しエラーとして429 ActiveX コンポーネントはオブジェクトを作成できません。
というのが発生します。

Oracleのバージョンは9iでそのクライアントパック9.2.0.1.0を管理者モードでインストールしています。
もちろんOO4Oはインストールされていますし、VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。

何度か再インストールなどしましたが全く同じです。何がいけないのでしょうか?直接回答でなくてもヒントでも何でも教えてください。

なおSQL Plusでテーブルの参照はできています。

上記の環境でプログラムを作成しています。
Windows2000ではうまくいきました。
WindowsXP(Professional)で失敗します。

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase(C_ORACLE_TNS, C_ORACLE_USER & "/" & C_ORACLE_PASS, 0)

のようなコーディングでCreateObjectのところで失敗しエラーとして429 ActiveX コンポーネントはオブジェクトを作成できません。
というのが発生します。

Oracleのバージョンは9iでそのクライアントパッ...続きを読む

Aベストアンサー

通常は正しく削除されてしかるべきなのでしょうが、レジストリにキーが残った状態になることもありますので
・・・
完全削除についてはリリースノートにも記載されております。

Oracle9i Client for Windows インストレーション・ガイド リリース2 (9.2.0.1.0)(2002/8/7)
「オラクルコンポーネントのインストール」「oracleコンポーネントとサービスの削除」

参考URL:http://otn.oracle.co.jp/document/products/oracle9i/920/windows.html

QVB6.0 CreateObject以外のファイルI/O

以前CreateObject("Scripting.FileSystemObject")を使用してファイルを読込む方法、一行ずつ書込む方法を教えていただいたのですが。
環境によってはウイルスチェックに引っかかってしまうようで、別な手段を取らなければならなくなりました。
読込み:
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTxtSt = objFso.OpenTextFile(strFilePass, 1)
strData = CStr(objTxtSt.ReadAll())
書込み:
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTxtSt = objFso.OpenTextFile(strFilePass, 2, False)
Call objTxtSt.WriteLine(strData)
現在の処理は以上です。
上記と同じ処理をCreateObjectを使用せずに作成するにはどのようにすればよろしいでしょうか。

以前CreateObject("Scripting.FileSystemObject")を使用してファイルを読込む方法、一行ずつ書込む方法を教えていただいたのですが。
環境によってはウイルスチェックに引っかかってしまうようで、別な手段を取らなければならなくなりました。
読込み:
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTxtSt = objFso.OpenTextFile(strFilePass, 1)
strData = CStr(objTxtSt.ReadAll())
書込み:
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTxtSt = ob...続きを読む

Aベストアンサー

基本的な命令ならまずマニュアルで調べるのが妥当な方法だと思いますよ
VB付属のMSDNや Webの http://msdn.microsoft.com/ja-jp/library/default.aspx
などで ・・・

ファイルの削除なら『Kill』、存在の確認には『Dir』で出来ると思いますよ

QImage型のバイナリデータを表示したい

こんにちは。
VB6.0+SQLServer2000で開発を行っています。
Image型の項目を用意して、PictureBoxなりなんなりに表示したいのですが、バイナリデータの変換方法がわかりません。
どなたか教えてください。

とりあえず、今はこんなかんじでPG書いてます。
===============================================
Private Sub Command1_Click()
Dim rs As adodb.Recordset
Dim mstream As adodb.Stream
Dim strSql As String
On Error GoTo Err_Command1_Click

strSql = "select * from 車体画像 where 整理番号='00000001'"

Set rs = New adodb.Recordset
rs.Open strSql, cn, adOpenKeyset, adLockOptimistic

Set mstream = New adodb.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.Write rs.Fields("画像データ").Value
'ここからどうすればいいのか分かりません…
Exit Sub

Err_Command1_Click:
MsgBox Error
End Sub

こんにちは。
VB6.0+SQLServer2000で開発を行っています。
Image型の項目を用意して、PictureBoxなりなんなりに表示したいのですが、バイナリデータの変換方法がわかりません。
どなたか教えてください。

とりあえず、今はこんなかんじでPG書いてます。
===============================================
Private Sub Command1_Click()
Dim rs As adodb.Recordset
Dim mstream As adodb.Stream
Dim strSql As String
On Error GoTo Err_Command1_Click

strSql = "select * fro...続きを読む

Aベストアンサー

http://oshiete1.goo.ne.jp/kotaeru.php3?q=472113

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=472113

QVB6.0(SP5)で作成したアプリの配布について

”VB6.0(SP5)” で作成したアプリケーションの配布にあたって、お伺いしたいことがあります。

客先から「今回のアプリのインストール後に、既存のVBシステム等に障害が発生しないように」と厳しく通達されています。(当然ですが…)
しかし、インストールするPCは千差万別。
どのようなシステムが既存しているかはそれぞれに違いますし
すべてのPCに完璧な動作保障は無理なのでは?と考えます。
(こんなことは言ってはいけないんですけど…)


そこで「このファイルがある場合はインストールしないように」という制限事項を付けられれば、とは思うのですが
そのような判断は可能でしょうか?
”○○.DLLがあるからこれはVB4.0のシステムが入ってる!”等と
判断できるものなのでしょうか?

なにかご存知の方、良い案をお持ちの方
いらっしゃいましたらご教示いただけないでしょうか?
よろしくお願いいたします。

Aベストアンサー

>すべてのPCに完璧な動作保障は無理なのでは?と考えます。

おっしゃる通りだと思います。

ただ、極力既存のVBシステムに影響を与えない方向でインストールすることは可能かもしれません。
(ただし、今回インストールするアプリケーションの動作は保証されないでしょうけど)

配布メディアをディストリビューションウィザードで作る場合は、setup.lstを弄ったりディストリビューションウィザード自体を弄ったりすることでカスタマイズが可能です。
...\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1
がディストリビューションウィザードの本体です。
(カスタマイズする時はフォルダごとバックアップを取った上でやりましょう)

>”○○.DLLがあるからこれはVB4.0のシステムが入ってる!”等と判断できるものなのでしょうか?

も(やろうと思えば)可能ですし、所謂"DLL Hell"を極力避けるなら、必要なDLLを全てEXEと同じフォルダ(アプリケーションフォルダ)に配置すればいいだけですね。
これは、DLLの検索順がアプリケーションフォルダ→システムフォルダとなっているためで、これを利用してパッチを当てているソフトも多いのです。
詳しくはLoadLibrary()のヘルプを読んでみてください。

問題はActiveX DLLやOCXなどレジストリに登録する必要があり、かつ下位やバージョン違いのモジュールを配布する必要がある場合ですね。

とにかく、配布メディアのsetup.lstを見て配布される予定のファイルとその種類、レジストリ登録の有無を調査してからになると思います。

>すべてのPCに完璧な動作保障は無理なのでは?と考えます。

おっしゃる通りだと思います。

ただ、極力既存のVBシステムに影響を与えない方向でインストールすることは可能かもしれません。
(ただし、今回インストールするアプリケーションの動作は保証されないでしょうけど)

配布メディアをディストリビューションウィザードで作る場合は、setup.lstを弄ったりディストリビューションウィザード自体を弄ったりすることでカスタマイズが可能です。
...\Microsoft Visual Studio\VB98\Wizards\PDWizard...続きを読む

QVB6.0+MyODBC5.0+MySQL4.1にてインサートデータが0になる

VB初心者です。
上記の条件でVB上からDBへインサート文を実行させたのですがMyadminを開いてデータを確認するとデータがすべて0になってしまいます。
因みにインサート文に直接データを代入するとちゃんとDBに登録されます。
OS:WinXP

Dim a AS Integer
Dim b AS Integer
Dim c AS Integer
Private Sub form_load()
Set cn = CreateObject("ADODB.Connection")
cn.Open "dsn=MySQL;uid=root;Pwd="
cn.CursorLocation = 3
a = 1
b = 2
c = 3
cn.BeginTrans
cn.Execute "insert into test values (a, b, c)"
cn.CommitTrans
cn.Close
インサートを変数指定ではなく直接(1, 2, 3)と入れると登録できます。
単純な勘違いを犯しているだけだと思うのですが、どちら様かお知恵を拝借できませんでしょうか?
よろしくお願いいたします。

VB初心者です。
上記の条件でVB上からDBへインサート文を実行させたのですがMyadminを開いてデータを確認するとデータがすべて0になってしまいます。
因みにインサート文に直接データを代入するとちゃんとDBに登録されます。
OS:WinXP

Dim a AS Integer
Dim b AS Integer
Dim c AS Integer
Private Sub form_load()
Set cn = CreateObject("ADODB.Connection")
cn.Open "dsn=MySQL;uid=root;Pwd="
cn.CursorLocation = 3
a = 1
b = 2
c = 3
cn.BeginTrans
cn.Execute "insert into test values (...続きを読む

Aベストアンサー

"insert into test values (a, b, c)"
は文字列なので、変数a,b,cを指定したことにはなりません。
"insert into test values (aaaa, bbbb, cccc)"
でも同じ結果になるはず。

"insert into test values (" & a & "," & b & "," & c & ")"
としてみて下さい。


人気Q&Aランキング

おすすめ情報