• 締切済み
  • 困ってます

フォルダ名称の取得の仕方

コモンダイアログコントロールを使用してフォルダ名称のみを取得する方法を教えてください(WORDなどで規定のフォルダを指定するときのような機能です)。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数67
  • ありがとう数5

みんなの回答

  • 回答No.1
  • ARC
  • ベストアンサー率46% (643/1383)

あんまり自信ないんですが、VBの範囲ではできないんじゃないかなぁ。APIとか、使ってやる必要があるかも… ちなみに、同様の機能を持ったフォームなら、すぐに出来ますよ(最近作った)。 フォーム上にドライブリストボックス(Drive1)と、ディレクトリリストボックス(Dir1)、そして、ボタンを二つ(決定ボタン,キャンセルボタン)を配置して、以下のようなコードを記述します。 -+-+-+-+ Option Explicit Dim mResult As FolderSelectResultEnum Public Enum FolderSelectResultEnum   Canceled = 0   Selected = 1 End Enum '最後に押されたボタンを返す。 Property Get Result() As FolderSelectResultEnum   Result = mResult End Property '選択されたフォルダを取得、設定する Property Let Path(strPath As String)   Me.Dir1.Path = strPath End Property Property Get Path() As String   Path = Me.Dir1.Path End Property 'ドライブ変更時の処理 Private Sub Drive1_Change()   Me.Dir1 = Me.Drive1 End Sub Private Sub Form_Unload(Cancel As Integer)   '×ボタンで終わる時は、キャンセル   If Me.Visible = True Then     Cancel = True   End If   Me.Visible = False End Sub Private Sub キャンセルボタン_Click()   mResult = Canceled   Me.Visible = False End Sub Private Sub 決定ボタン_Click()   mResult = Selected   Me.Visible = False End Sub -+-+-+-+ そして、こんな感じで呼び出します。 Private Sub フォルダ選択_Click()   Dim FSel As New frmFolderSelect   '表示されるフォルダの初期値   FSel.Path=Curdir()   'モーダルフォームとして表示   FSel.Show 1   '結果を取得   If FSel.Result = Selected Then     MsgBox FSel.Path   Else     MsgBox "キャンセルされました"   End If End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

この件はご存知の方がいないようなので締めきろうと思います。 今後のVBの新しいバージョンかSPに期待したいと思います。 回答ありがとうございました。

質問者からの補足

回答ありがとうございます。 ただ、その方法は私も知っていまして... 見た目などを考えて標準のものを使用したいんです。 APIなどを使用する必要があるのでしたらご存知の方は教えていただけないでしょうか。

関連するQ&A

  • フォルダ名だけを取得するVBA

    VBAを使ったエクセルテンプレート適用ツールを作成しているのですが そのVBAのことで教えてください。 現在自作のフォーム上にあるテキストボックスにフルパスが入っているとします(添付図参照)。 *この前提は必須と考えてください。 次に作成ボタンをクリックすると Step1 新しいブックが開かれ行幅や書式などが自動で調整されます。 Step2 ブックの保存ダイアログが自動で開きます。     ただし、保存ダイアログが開いた時点で自作フォーム中の     テキストボックスで指定したフルパスに移動しており、     且つ移動先のフォルダ名(<-注意!!フルパス名ではありません!!)と     同じ文字列をファイル名入力欄に自動で入力されるようにします。    ex) D:\MyProject\Project01\TaskA\にブックを作成し保存する場合、      保存ダイアログのファイル名欄にTaskAとだけ書く。 マクロ自体はここでストップし、これ以降はユーザーがそのファイルメモで 保存してよいかどうかを判断し、問題なければ手動でダイアログ上の「保存」ボタンを押します。 問題はStep2で、保存先のフォルダ名と同じ文字列を保存ダイアログのファイル名に記入するには どのようなコードを書いたらよいでしょうか。 私自身としては下記の二案を考えているのですがそれぞれについて疑問があるので教えてください。 案1 作成ボタンを押した時点でテキストボックスに書かれているフルパスの文字列から   末尾にあるフォルダ名だけを取得して変数に代入し、これを保存ダイアログの   ファイル名欄に反映させる。   疑問:テキストボックスのValue値に書かれているフルパスを示す文字列から      末尾のフォルダ名だけを取得するためのコードは何と書けばよいのでしょうか? 案2 ブックの保存ダイアログが開いて保存先のパスに移動してから今保存ダイアログで    開いているフォルダ名を取得する。    疑問:今アクティブになっているブックが保存されているフォルダ名だけを取得する    方法なら確かあったような気がしています。    しかし今保存ダイアログで表示されているフォルダ名を取得するコードは何と    書けばよいのでしょうか?    そもそもそういったコードや操作自体VBAにあるのでしょうか?

  • フォルダのファイル名の取得

    指定したフォルダにあるファイル名をデータで取得することは可能でしょうか?ファイル名をラベルに印刷してインデックスを作ったりしたいのです。データ形式は何でもよいのですが、プログラミングはできないので、windowsの機能かフリーソフトがあれば教えてください。 よろしくお願いします。

  • コピーした名称でフォルダの作成

    フォルダ名にしたい名称をコピー後、そのコピーした名称で指定フォルダ(例えばデスクトップ上に)にフォルダ作成できるシェアウェア/フリーソフトってご存じありませんか? (ブラウザ上の文字をコピーしてその名称でフォルダをデスクトップに作成することが多い為mいちいちコピー⇒新規フォルダ作成→リネームするのが面倒なんです。。。)

  • フォルダを開くダイアログ

    C++ Builder6を使用しています。 ファイルを開くダイアログと同じように、フォルダを開くダイアログがほしいのですが、自作するしかないのでしょうか? 指定されたフォルダにファイルを書き出したりする為に、ユーザーがフォルダの位置を指定出来る様にしたいのです。 Builder初心者なので、回答お願い致します。

  • フォルダ内のファイル名の取得

    開発環境 VB2008 少し前にVB始めたばかりです。 簡単なプログラム作成を行っているのですが フォルダ指定のダイアログで指定した、フォルダの中にあるファイル名のリストをリストボックスなどに出力したいのですが、コードがわかりません。 色々似たような質問などがあったのですが、理解不足か知識不足なのか使いこなせなさそうなので、新しく質問させていただきました。 わかりやすく教えていただけるとうれしいです。 よろしくおねがいいたします。

  • フォルダ名の取得方法

    タイトルの件、方法が判らず困っています。やりたいのは、 1.あるシートの一覧表に、項目を追加する。 2.その項目を記入したセルを選択し、マクロ起動。 3.セル内の文字をそのままフォルダ名とした新しいフォルダを、指定したパスで作成。 この時、既に同名のフォルダが有る場合にマクロが起動しないようにしたいのですが、指定したパスの先にあるフォルダ一覧をデータとして取得することはできるのでしょうか?良い方法があれば、ご教授願います。

  • フォルダ容量取得について

    こんにちは。質問させて下さい。 同じサーバ内にあるフォルダの容量を取得したいと考えております。フォルダサイズを取得する関数はあるのでしょうか?調べたのですが見当たりませんでした。 もしロジックで行う場合、 その指定のフォルダ内に含まれているファイル一覧を取得して各ファイルサイズを合算することで対応するしかないでしょうか? ちなみにフォルダ内にはフォルダは存在しないものとします。どなたかご存知の方いらっしゃいましたらご教示お願い致します。

    • ベストアンサー
    • PHP
  • フォルダ内にさらにフォルダがあるか知りたい

    Windows2000 VB6 で開発をしています。 フォルダ内にあるフォルダ名称だけを取得することって出来るのでしょうか? フォルダ内のファイル数が多く、一つずつ確認するのでは時間がかかりそうなので、 もっと簡単に早くできる方法がないか模索中です。 よろしくお願いします。

  • Excelで名称からコードを取得する方法

    Excelで名称からコードを取得する方法 vlookupはコードから名称を取得しますが、その逆のことをするためには どのようにしたらよいでしょうか? 具体的にいうと、 1 おおおお 2 ええええ 3 うううう 4 いいいい 5 ああああ となっている表を使用して ああああ 5 いいいい 4 うううう 3 ええええ 2 おおおお 1 という表を作成したいのですが、よろしくお願いします。

  • ダイアログでフォルダ名を取得したい。

    VC++6 で簡単なプログラムを作成しており、その入力として、ダイアログで任意のフォルダパスをユーザに指定させます。 ここで、Win32 API の GetOpenFilename() は、ユーザにフォルダを指定させることができるでしょうか? 色々組んではみたのですが、上記関数ではどうしてもフォルダの指定ができなかったため、フリーで簡単ライブラリと評判の(?) http://www.fox-toolkit.org/ FOX Toolkit を試してはいます。 一応それなりに FXFileDialog::getOpenDirectory() は動作してくれるのですが、パスの中に日本語があると、返却される文字列がおかしくなります。これはどうも UTF-8 でエンコーディングされているようで、自前で UTF-16 に変換し更に wcstombs() などを使用して Shift_JIS (Windows-31J) に変換したら通るようになったのですが、半角カナはダイアログ内の処理自体が通してくれないようで、ダイアログの「OK」ボタンが押せなくなります。これは何か対処方法があるでしょうか。 そのほか、何かほかに良い方法があったら教えてください。