C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: フォルダの参照」ダイアログを表示する


(過去ログ 111 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■65946 / inTopicNo.1)  フォルダの参照」ダイアログを表示する
  
□投稿者/ さくら (1回)-(2013/03/26(Tue) 12:49:40)

分類:[その他の言語] 

2013/03/26(Tue) 13:11:49 編集(投稿者)

次のサンプルコードを
Windows7(Excel2010)-VBA…標準モジュールに張付けて
コンパイルしたのですがエラーが発生しました。
VBAで実行するにはどのように書き替えればよいかご教授ください。
宜しくお願いします。
追記:言語「VBA」サンプルコードのページを用意していただけると
VB6等の開発環境を持たない初心者には願ったり叶ったりなのですが^^;

http://jeanne.wankuma.com/tips/vb6/dialog/folderbrowser.html
トップ
サンプル
Visual Basic 6.0 (VB6)
MDI フォーム (Dialog)
「フォルダの参照」ダイアログを表示する

以上
引用返信 編集キー/
■65947 / inTopicNo.2)  Re[1]: フォルダの参照」ダイアログを表示する
□投稿者/ kiku (6回)-(2013/03/26(Tue) 13:53:04)
Excel上で動作する言語はVBA(マクロ)であり、
さくらさんが参照している先はVB6になりますので
実行環境や言語が違います。
Excel上で動作させたいのであるならば
たとえば下のサイトなんかで勉強してみてください。
ttp://www.asahi-net.or.jp/~ef2o-inue/top01.html#

引用返信 編集キー/
■65954 / inTopicNo.3)  Re[1]: フォルダの参照」ダイアログを表示する
□投稿者/ 魔界の仮面弁士 (184回)-(2013/03/26(Tue) 19:38:25)
No65946 (さくら さん) に返信
> フォルダの参照」ダイアログを表示する
目的が上記だけであれば、API に頼らずとも
 Dim f As Object
 Const BIF_RETURNNONLYFSDIRS As Long = &H1&
 Const BIF_EDITBOX As Long = &H10&
 With CreateObject("Shell.Application")
  Set f = .BrowseForFolder(Application.Hwnd, "タイトル", BIF_RETURNNONLYFSDIRS Or BIF_EDITBOX, RootFolder:=Empty)
 End With
 If Not f Is Nothing Then
  MsgBox f.Self.Path, vbInformation
  Set f = Nothing
 End If
だけで良いかと。


> 標準モジュールに張付けて
何故、そのようなことをされたのでしょうか?

参考にされたサイトには、
>> '/* FolderBrowserDialog クラス モジュール */
と書かれていますよね。

本来の貼り付け先は [挿入]-[標準モジュール]などで追加した Module1 等では無く、
[挿入]-[クラス モジュール]などで追加した 『クラス モジュール』ですので、
最初のコードをクラスモジュール Class1 に貼り付けた上で、そのモジュールの名前を
FolderBrowserDialog に変更してみてください。


それから呼び出し側のコードにある「Me.Hwnd」は、Excel VBA だと使えません。
この部分は「Application.Hwnd」に変更しておくのが手っ取り早いかと思います。


> 次のサンプルコードを
> Windows7(Excel2010)-VBA…標準モジュールに張付けて
> コンパイルしたのですがエラーが発生しました。
どの行で何というエラーが出たのかぐらいは書きましょう。

もし、お使いの Excel が 64bit 版だった場合には、API 宣言が多少異なります。
64bit 版にも 32bit 版にも対応させたい場合は、「#If」を併用しましょう。
引用返信 編集キー/
■65967 / inTopicNo.4)  Re[2]: フォルダの参照」ダイアログを表示する
□投稿者/ さくら (2回)-(2013/03/27(Wed) 14:54:40)
No65954 (魔界の仮面弁士 さん) に返信
>>フォルダの参照」ダイアログを表示する
> 目的が上記だけであれば、API に頼らずとも
>  Dim f As Object
>  Const BIF_RETURNNONLYFSDIRS As Long = &H1&
>  Const BIF_EDITBOX As Long = &H10&
>  With CreateObject("Shell.Application")
>   Set f = .BrowseForFolder(Application.Hwnd, "タイトル", BIF_RETURNNONLYFSDIRS Or BIF_EDITBOX, RootFolder:=Empty)
>  End With
>  If Not f Is Nothing Then
>   MsgBox f.Self.Path, vbInformation
>   Set f = Nothing
>  End If
> だけで良いかと。
 ↓↓
★Excel2010-VBAで動作しました…感謝
APIを使わなくてすめばそれにこしたことはありません。
目的は、フォルダ参照ダイアログを開いた時、
前回参照したフォルダにポイントさせたいのですが方法が分かりません。
ご教授宜しくお願い致します。


>>標準モジュールに張付けて
> 何故、そのようなことをされたのでしょうか?
 ↓↓
★クラス モジュール
初心者にて理解できなかった…とにかくやってみました^^
ご教授いただいたとおりに修正してみました…ちゃんと動作しました…感謝・感謝
[定数]
ShellSpecialFolderConstants
BROWSEINFO
の意味は少し理解できましたので試行してみます。


> もし、お使いの Excel が 64bit 版だった場合には、API 宣言が多少異なります。
> 64bit 版にも 32bit 版にも対応させたい場合は、「#If」を併用しましょう。
 ↓↓
★Excel-64bit版で試行錯誤を繰返しましたが、
非力な私にはハードルが高くてギブアップです。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -