hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
ファイルOpenDialogの起動
« 投稿日: 2004/05/26 - 20:34:49 » |
|
お世話になっております。Hiroponです ファイルOpenDialogの起動方法どなたかご存知ないでしょうか? ファイル->開く と選択すると出るファイル選択のためのDialogです。 エクセルのマクロなら Application.Dialogs(xlDialogOpen).Show で表示させることができますが SolidWorksは???
エクセルベースで Set swApp = CreateObject("SldWorks.Application") を使ってSolidWorksを制御することもできますが、途中まで SolidWorksベースで作成してしまって機能追加でつけたいので エクセルベースでは作らない方向です。
どなたか ご存知の方いらっしゃればご指南の程よろしくお願いします。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ファイルOpenDialogの起動
« 返信 #1 投稿日: 2004/05/27 - 08:25:13 » |
|
まともに動作するかわかりませんが、以下のスクリプトでダイアログが表示されます。 一応ダイアログの表示・ファイルのオープンは確認しました。 (新規のダイアログのメソッドも書いておきます。)
'----------------------------------------------------- Sub main() Dim swHTMLCtrl As Object Set swHTMLCtrl = CreateObject("SwHtmlControl.SwHtmlInterface.12") 'ファイル−開くのダイアログ swHTMLCtrl.FileOpenDialog 'ファイル−新規のダイアログ swHTMLCtrl.FileNewDialog End Sub '-----------------------------------------------------
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ファイルOpenDialogの起動
« 返信 #2 投稿日: 2004/05/27 - 09:15:49 » |
|
Makoronさん 早速の御返答ありがとうございます。 まだ動作確認はしていませんが SwHtmlControl.SwHtmlInterfaceオブジェクトの生成 ですかーーー。 これってヘルプに載ってましたか? まだ、なにも確認していませんがまずは御礼が先かと・・・・ 本当にありがとうございました。 また、動作確認等の確認が終わったら報告しますね。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ファイルOpenDialogの起動
« 返信 #3 投稿日: 2004/05/27 - 10:03:26 » |
|
' 引用元: hiropon 投稿日 '.timeformat('1085616949').' ' Makoronさん 早速の御返答ありがとうございます。 まだ動作確認はしていませんが SwHtmlControl.SwHtmlInterfaceオブジェクトの生成 ですかーーー。 これってヘルプに載ってましたか? まだ、なにも確認していませんがまずは御礼が先かと・・・・ 本当にありがとうございました。 また、動作確認等の確認が終わったら報告しますね。
|
ヘルプに載ってないと思います。
SWのライブラリをいろいろと調べていたら、このオブジェクトにメソッドを見つけたのです。 この様な使用方法が正しいかはわかりませんが、VBの参照設定にライブラリーとして表示されるので、使えるものは使っています。
ちなみに、SDMLibライブラリーの smBitMap クラスの extractBitMap2File メソッドで、 プレビュー画像を取得する方法があります。 (たしか、SWが正式に方法として公開していたような気がします。)
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ファイルOpenDialogの起動
« 返信 #4 投稿日: 2004/05/27 - 12:40:34 » |
|
Makornさん 補足でいろいろ教えていただきありがとうございます。
SDMLibライブラリーって現状使っているSolidworks(SolidWorks2004 SP2.1)に入っています?それとも、SWのホームページで公開されて いてそれをダウンロードって感じになるんですか? :- VBの参照設定にライブラリーには検索してもなかったんですが・・・ (検索のしかたがわるいのかもしれません)
また質問になってしまいますが もしよろしければ教えてください。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ファイルOpenDialogの起動
« 返信 #5 投稿日: 2004/05/27 - 17:21:02 » |
|
' 引用元: hiropon 投稿日 '.timeformat('1085629234').' ' Makornさん 補足でいろいろ教えていただきありがとうございます。
SDMLibライブラリーって現状使っているSolidworks(SolidWorks2004 SP2.1)に入っています?それとも、SWのホームページで公開されて いてそれをダウンロードって感じになるんですか? :- VBの参照設定にライブラリーには検索してもなかったんですが・・・ (検索のしかたがわるいのかもしれません)
また質問になってしまいますが もしよろしければ教えてください。
|
たぶんSolidWorks2004から追加されたライブラリーだと思っているのでSP2.1でも入っていると思います。
VBの参照設定の画面では「sdm 1.0 Type Library」と表示されているはずです。 なければSolidworksのインストールフォルダ(通常はC:Program FilesSolidWorks)にある「sdm.dll」のファイルです。
またまた、ちなみに。 VBやVBAの参照設定で設定したライブラリーは、 オブジェクトブラウザで表示すると、プロパティやメッソッドが確認できるので いろいろと試してみるとSWAPIマニュアルにはない機能が使える...かも知れません。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ファイルOpenDialogの起動
« 返信 #6 投稿日: 2004/05/27 - 18:24:47 » |
|
extractBitMap2Fileを使ったサンプルプログラムを作ってみました。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ファイルOpenDialogの起動
« 返信 #7 投稿日: 2004/05/27 - 18:51:23 » |
|
どこかで Bitmap を取得するサンプルを見たことがあって、この方法を使っていたのですが、場所がわかりました!
SWUSのLinkにも載っている「SolidWorks Tools」と言うページです。 http://swtools.cad.de/ でいけると思います。
このページのDownloadにあるPreview Bitmapが、そのもののサンプルです。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ファイルOpenDialogの起動
« 返信 #8 投稿日: 2004/05/27 - 19:22:11 » |
|
Makoronさん 本当にいろいろありがとうございます Makoronさんの返答内容は私にとってはまさに宝の やまになりそうです といいながら、時間がなくてまだFileOpenDialogも試せていませんが
>>VBやVBAの参照設定で設定したライブラリーは、 >>オブジェクトブラウザで表示すると、プロパティやメッソッドが確認できるので やっぱり手探りで動作確認をしていくということですかーー Referanceもつけてほしいですよねーーー
>>どこかで Bitmap を取得するサンプルを見たことがあって というのは画像をスケッチ画像としてSWに取り込むってやつではない んですか?それなら私 InsertSketchPicture(pass名称 as string)メソッド で使ってるんですが Preview Bitmapメソッドだと違うようですね。 InsertSketchPicture(pass名称 as string)メソッド実行したあと 尺度の変更まで自動で行いたいんですけど,これまたヘルプには載ってない んですよねーー。でも,Makoronさんの方法でいろんなDLLを取り込んでいけば 見つかるかもしれませんねーー
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ファイルOpenDialogの起動
« 返信 #9 投稿日: 2004/05/27 - 19:57:04 » |
|
' 引用元: hiropon 投稿日 '.timeformat('1085653331').' '>>どこかで Bitmap を取得するサンプルを見たことがあって というのは画像をスケッチ画像としてSWに取り込むってやつではない んですか? |
ちょっと説明が悪かったみたいです。 extractBitMap2Fileを使ったサンプルと言う意味です。 僕がパクッたサンプルの本家サンプルと言うことです。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ファイルOpenDialogの起動
« 返信 #10 投稿日: 2004/05/31 - 12:59:22 » |
|
Makoronさん お世話になっています 試してみました。。。有難かったのですが私のおもっているような 動作ではありませんでした。 というのも、返り値や(C風にゆう)ポインタ参照等でパスを返してきて ほしかったのです。 エクセルの私が記述した Application.Dialogs(xlDialogOpen).Show という表現が悪かったです。勘違いしてました Application.GetOpenFilename(ffilter, 1, title, "選択", a) でした。これならパス名称が返り値でかえってきます。 オブジェクトブラウザでザっと見た感じパスがかえってくるような関数はないと 思いました。 もしご存知ならよろしければご指南いただけませんでしょうか。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ファイルOpenDialogの起動
« 返信 #11 投稿日: 2004/05/31 - 13:40:07 » |
|
VBであれば、コモンダイアログ(CommonDialog)コントロールを使うとWindowsの開くダイアログが表示され[OK]ボタンでパスが帰ってきたと思います。 (VBAでもOKだと思いますが...)
もし、SWファイルのみのフィルターをかけたければ、このコントロールのプロパティ値に拡張子を指定してあげれば可能なはずです。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ファイルOpenDialogの起動
« 返信 #12 投稿日: 2004/05/31 - 14:36:02 » |
|
Makoronさん お世話になっています 素早い返信ありがとうございます。 >>(VBAでもOKだと思いますが...) 実はVBAにはコモンダイアログコントロール使えないんです。。。 とほほです。。。私もこれでExellでVBAを組んでいるときに苦労して やっとGetOpenFilename関数を見つけた次第です。 私の知識不足かも知れませんが・・・・
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ファイルOpenDialogの起動
« 返信 #13 投稿日: 2004/05/31 - 19:44:07 » |
|
SWのマクロで開くダイアログを表示するサンプルを作ってみました。 Macro1.swp
また、こんなページも見つけましたので見てみてはどうでしょう。 http://www.amy.hi-ho.ne.jp/banchan/sw/vba/v4.html
1つ目は、VBAでフォームを作り、そこにコモンダイアログをのっけて実行しています。 2つ目は、チラッと見ただけで詳細はわかりませんが、WindowsAPIからコモンダイアログを使用している感じです。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ファイルOpenDialogの起動
« 返信 #14 投稿日: 2004/06/01 - 13:29:14 » |
|
Makoronさん お世話になっております。 WindowsAPIまで見つけて頂いたなんて感謝のしようも ありません。本当にありがとうございます 例によってまだ試せてませんが・・・
Makoronさんのご指南で、”そしたら、ExcellのDll取り込んでGetOpenFilename 関数使ったらできるやん”と思って以下のような感じで使ったところ見事にretに パス名が返ってきました。 Set exApp = CreateObject("Excel.Application") ret = exApp.GetOpenFilename(ffilter, 1, "ファイル選択", "選択", a) よかったよかった。。。でも、ちょっと挙動不信なので MakoronさんのAPIためしてみます。 あと、私の作成しているマクロはもうひとつ難問があって上記の方法でパスが 返ってきたらそのファイルをOpenしなくてはいけません(エクセルファイルをOpen)。 そこで、 Set exbook = exApp.WorkBooks exbook.OpenText(ret) 'OpenTextはWorkBooksクラスのメソッド とやっても起動しないのです。タスクマネージャーのプロセスをみるとEXCELがあるの でPCは起動していると、認識しているようです(もう一回おなじパス名をいれると ”現在使用中なので読み取り専用で開きます”というようなメッセージがでます。) でも、表示がされないのでほとほと困り果てております。シェル関数を使用して エクセルを起動させてもやっぱりOpenTextのところで目的のファイルはOpenして くれません。 WindowsAPIにいいのがあるのかなーー。とも思ったりするのですが、実は私 ソフトの人間ではありませんのであまり詳しくないというのが実情です。
また質問みたいになってしまいますがご存知で、もしよろしかったらご指南いただけま せんでしょうか?お願いいたします。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ファイルOpenDialogの起動
« 返信 #15 投稿日: 2004/06/01 - 13:38:53 » |
|
あと、VBAでもコモンコントロール使えるんですねーー 私の知識不足でした。みごとにFileNameプロパティにパスが 入っていました。でもどこにコントロールあるんでしょうか 結構探したつもりだったんですが・・・・
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ファイルOpenDialogの起動
« 返信 #16 投稿日: 2004/06/01 - 14:24:30 » |
|
引用:あと、私の作成しているマクロはもうひとつ難問があって上記の方法でパスが返ってきたらそのファイルをOpenしなくてはいけません(エクセルファイルをOpen)。 そこで、 Set exbook = exApp.WorkBooks exbook.OpenText(ret) 'OpenTextはWorkBooksクラスのメソッド とやっても起動しないのです。タスクマネージャーのプロセスをみるとEXCELがあるのでPCは起動していると、認識しているようです(もう一回おなじパス名をいれると”現在使用中なので読み取り専用で開きます”というようなメッセージがでます。) でも、表示がされないのでほとほと困り果てております。シェル関数を使用して エクセルを起動させてもやっぱりOpenTextのところで目的のファイルはOpenしてくれません。 |
ExcelのAPIに関してはあまり詳しくないので、正しい解答になっているかは?ですが、SWの様にバックグラウンド起動しているのではないでしょうか。
SolidWorksの例で言うとこんな感じです。 SolidWorksをVBから起動しただけでは画面に表示されず、プロセスだけが起動したようになります。 画面に表示しての対話操作を行いたい場合は「表示する」と言う指示を与えなければいけません。 以下の様にするとSWが起動し、画面に表示されます。 Set swApp = CreateObject("SldWorks.Application") swApp.Visible = True swApp.UserControl = True
引用:でもどこにコントロールあるんでしょうか 結構探したつもりだったんですが・・・・ |
以下の手順で、出来ると思います。 (VB6ランタイムなどがインストールされてないとダメなのかも...?) 1.VBAでユーザフォームを挿入する。 2.ユーザフォームがアクティブになっている状態で、メニュー[ツール]の[そのたコントロール]を選択する。 3.「コントロールの追加」ダイアログが表示されるので、「Microsoft Common Dialog Control」にチェックを付ける。 (このコントロールの実態は「COMDLG32.OCX」となります。) 4.これでユーザフォームを表示した時に表示される「ツールボックス」にコモンダイアログのコントロールが追加されます。 5.後はこのコントロールをフォームにのっければOKです。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ファイルOpenDialogの起動
« 返信 #17 投稿日: 2004/06/01 - 14:31:04 » |
|
書いた後に、エクセルのヘルプを見て気づいたのですが、 エクセルのApplication オブジェクトに 「Visible プロパティ」と「UserControl プロパティ」 がありますね。
もしかして、SolidWorks同じように Set exApp = CreateObject("Excel.Application") exApp.Visible = True exApp.UserControl = Ture でいけるのではないでしょうか?
テストもせずに、適当に書きましたが試してみる価値はあるかも。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ファイルOpenDialogの起動
« 返信 #18 投稿日: 2004/06/01 - 15:58:44 » |
|
またまた早速のご返信本当にありがとうございます。 >SolidWorksをVBから起動しただけでは画面に表示されず、プロセスだけが起動し >たようになります。 ありがとうございます。私の作った他のマクロでSolidWorksを自動起動して作業していくというのがるのですが、Makoronさんがおっしゃるようにバックグランドで動いていて 原因がわからなかったのでほったらかしになっています。これで解決しました。 もっと早くMakoronさんに聞いていれば・・・ Exellもおなじなんですねーー多分 ちょっと試してみます。 ありがとうございます。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ファイルOpenDialogの起動
« 返信 #19 投稿日: 2004/06/01 - 17:28:06 » |
|
Makoronさんできちゃいました いままで苦労していたのがバカらしくなるぐらいすんなりいきました。 うれしいやらかなしいやら。 試したのはExcell自動起動のほうなので、SolidWorks自動起動も やってみます。 本当にお世話になりました。万事解決です。ありがとう御座いました。
|
|
|
|