【環境と将来の保管・使用方法】
Windows 2000/VB6.0 であるツールを作っています。
このツールは現在自分のPCで、VBAで組んでおりますが、完成後は常に会社の部のサーバーに保存しておき、誰でも使えるようにします。また、このツールで参照するファイルも、同じ場所に保存しています。
ツールファイルの方ですが、各自が各自のPCにコピーして実行できるようにしたいと思っています。各自がコピーする先は、CドライブかDドライブかは任意にしておきたいと思っています。
【現状のプログラミング状況】
さて、本題となるのですが、このコピーしたツールのファイルが、共通サーバーにあるファイルを使ってチェックする際、ドライブ名\ファイル名をセットして使用しています。
例: Gドライブ:部の共通サーバー
Set 参照ファイル = GetObjext(G:\○○サーバー\ツールフォルダ\チェックシート.xls
しかし、それに対し、ツールファイルは自分のPCで作っていることもあって、Cドライブ:自分のPC
Set ツール = GetObject(D:\○○ツール格納フォルダ\ツール.xls
と指定して、
If ツール.Sheet("A").Cells(X,Y) = 参照ファイルSheet("AAA").Cells(x,y) Then
Aの処理
Else
Bの処理
End If
のようにしていますが、共通のサーバーに置いておくツールとなると、Dドライブとか勝手に最初に指定してGetObjectはできません。
良く、フォルダを指定してファイルを開くというダイアログ(?)を開くやり方が載っていますが、このツールには他ファイルを参照してチェックをする以外に、自ブックの中で他シートを参照するだけでチェックをする機能もあるため、こういうダイアログを、ある機能のためだけに使ったりする仕様には作りたくありまあせん。
このような場合に、どうやったら、その各PCにコピーされた”ツール.xls”の現在のアドレスを取得することができるのでしょうか?
よろしくお願いします。
No.1
- 回答日時:
他のクライアントPCにD:\○○ツール格納フォルダ\ツール.xlsが存在しないなら
Dir関数などで『D:\○○ツール格納フォルダ\ツール.xls』を取得してみて ""かどうかをチェックしてみましょう
dim ss as string
ss = Dir("D:\○○ツール格納フォルダ\ツール.xls", vbNormal)
if ss == "" then
' クライアントPC
ss = "G:\○○サーバー\ツールフォルダ\"
else
' 開発PC
ss = "D:\○○ツール格納フォルダ\"
End if
ss = ss & "チェックシート.xls"
Set ツール = GetObject( ss )
といった具合で ・・・
回答ありがとうございます。
質問の仕方が悪かったようなので、補足をしますと、
このツールはサーバーで起動することもできるが、クライアントの任意の場所に移動しても起動できるようにしたい(=サーバー以外の所は、フォルダアドレスを固定にしたくない)
従って、回答を戴いた'開発PC の所は、任意の場所のため、特定のアドレスを設定する仕様にしたくないのです。
もしよろしければ再度ご教示戴きたく。
No.2
- 回答日時:
自身のプロセスが何というディレクトリから起動されたかはApp.Pathで
調べることが出来ます。
回答ありがとうございます。
App.Pathを検索してみたのですが、他のところで似たような質問での回答でもこのマクロを紹介されていましたが、ThisWorkbook.Pathとはどのような違いがあるのでしょう?使い方だけの違いですか?それとも目的によって違うのでしょうか?
いまひとつ、違いを飲み込めません。
もしご教示願えたら幸いです。
No.3ベストアンサー
- 回答日時:
ドライブ割り当てで無く共有リソース名で指示してやればいいのでは
\\サーバー名\ツールフォルダ\ツール.xls でGetObjectする
開発PCかの判断については環境変数などから読み取るとか
COMPUTERNAME=Developer01
UserName=VB60
とかの設定なら
if Environ("COMPUTERNAME")= "Developer01" and Environ("UserName")="VB60" then
などで判断出来ます
または 特定のActiveXオブジェクトがCreateObjectで作成できれば開発環境だ
とか、クライアントと違いを判断出来る材料が必要でしょう
App.Pathは VB6で開発されたアプリのEXEのパスが格納されます
Thisworkbook.Pathは Excelのブックの存在するパスとなります
再度ありがとうございます。
共有リソース名で指示したりする事もできるのですね。実はVBAでできる事は基本的なことしか知らなかったので、新しい発見でした。
App.Path と ThisWorkbook.Pathの違いなるほどです。似ていて、やれることは全然違うのですね。
redfox63さんの案で実行してみようと思います。
ありがとうございました。
No.4
- 回答日時:
VB6のプログラムにおいて、Appとは自身(プロセス)を指す組み込みオブジェクトです。
VB6のプログラムはロードモジュール(EXEファイル)を生成し、単独でプロセスを
形成するため、自プロセスが何処にあるExeファイルから起動されたかという
情報を元に処理先を決めるような対応を取ることができます。
一方、ExcelのVBAマクロは必ずワークブックに含まれ、自身のプロセスは無く、
親のExcelのプロセス内で稼動します。よって、プログラムはVBAを含む
ワークブックから起動されたと考えて良く、ワークブックのPathが、VB6で言うところの
起動元のEXEファイルのパスと同じ意味を持つと言えます。
ExcelのVBAにもAppと同じ意味のApplicationオブジェクトがあります。
これはExcel自体のプロセスを指し、PathはExcelのインストール先です。
回答ありがとうございました。
VBAを自力でやっているだけに、行き当たりばったり開発をしている自分の弱い部分が見えてきたように思います。こういう知識を入れれば、もっと良いのですが、いかんせん、なかなか分かるように書いてある所も少なくて・・・(検索力が低いだけかもしれませんが)。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PDF PDFを自動添付したメールを送信してくれるツールを探しています。 2 2023/02/07 15:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- PDF PDFファイルの圧縮 1 2022/10/04 13:48
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- その他(ソフトウェア) 一太郎付属の”全件検索”ツールの不具合 3 2023/07/25 15:03
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba 実数および実数タイプの変...
-
Excelのマクロについて教えてく...
-
VBA レジストリの値の読み方に...
-
ExcelのVBAコードについて教え...
-
Excel マクロについての相談
-
Excel VBA 定義されたプロージ...
-
Vba SelStart、SelLen教えてく...
-
エクセルのマクロについて教え...
-
VBAに詳しい方教えてください。
-
VBAの質問になります メッセー...
-
ユーザーフォームに別シートか...
-
2つのマクロでチェックボックス...
-
VBA listBoxから
-
VBA初心者 Ctrl+での操作、ボタ...
-
VBA 複数条件の分岐処理の上手...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
左右の表のキー位置を合わせたい
-
VBAの質問になります Userform内で
-
Excelについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報