【復活求む!】惜しくも解散してしまったバンド|J-ROCK編 >>

VB.Net(VB 2010 Express)でFolderBrowserDialogでRootFolderにDesktopを指定しています。
そこで表示される[ネットワーク]をSelectPathにするには、どのように記述すればよいのでしょうか?

ご教示よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

なるほど。

了解ですが、ご質問者さんの質問履歴は非公開に設定されていますので、別の質問との関係を示す場合はURL等を貼るなどの工夫をした方がよいかも知れません。

本題です。
ネットワーク内のPCの共有フォルダであれば、パスになりえますので、「\\PC名\共有フォルダ名」のようにSelectedPathに指定します。
    • good
    • 1
この回答へのお礼

VB初心者で自分で使うアプリを悪戦苦闘して作っているところです。

教えて頂きました方法で解決しました。

回答ありがとうございました。助かりました。先が見えてきました。

お礼日時:2012/07/17 20:20

-2ってのがよくわかりませんが、FolderBrowserDialogのSelectPathはパスを指定するものなので、パス以外は設定できないと思います。

RootFolderにネットワークを指定できないか?ということででしょうか。
もしそうならFolderBrowserDialogではできませんが、SHBrowseForFolder APIを使用すれば、指定することはできます。

http://hp.vector.co.jp/authors/VA024411/vbtips01 …

この回答への補足

早速回答頂きありがとうございます。

-2は、FolderBrowserDialogについての質問が、先日に続き2回目だったのでその意味です。「その2」としようとしましたが、字数制限で紛らわしい表記となってしまいすみませんでした。

また、間違いがありましたので次のとおり訂正させて頂きます。
  [誤]SelectPath -> [正]SelectedPath

なお、ネットワーク指定とは、ネットワーク上のPCとその中の共用フォルダを指しています。

よろしくお願い致します。

  

補足日時:2012/07/17 17:37
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qフォルダ選択ダイアログ:ネットワーク上の共有フォルダ初期表示方法について

フォルダ選択ダイアログで、ネットワーク上の共有フォルダを初期表示する
方法についてご教示下さい。

SHBrowsForFolder を用いて
フォルダ選択ダイアログで共有フォルダを初回表示した場合、
指定フォルダを"\\PC名\共有フォルダ名"としても下記のように
ネットワーク全体までしか表示されずに困っています。

 マイネットワーク
 |
 |-ネットワーク全体
    |
    |-Microsoft Terminal Services
    |-Microsoft Windows Network
    |-Web Client Network

BROWSEINFO構造体には、
 ・ルートフォルダにマイネットワークのアイテムIDリスト
 ・コールバック関数のパラメタに指定フォルダパスのポインタ
 ・その他もろもろ
を設定し、フォルダ選択ダイアログを表示しようとしています。

なお、手動で「Microsoft Windows Network→ドメイン名→PC名
→共有フォルダ」を開く動作(フォルダツリーの『+』押下)まで行った後、
再度同じ手順でSHBrowsForFolder()をコールすると下記のように
意図した動作となります。

 マイネットワーク
 |
 |-ネットワーク全体
    |
    |-Microsoft Terminal Services
    |-Microsoft Windows Network
    | |
    | |-ドメイン名
    |   |
    |   |-PC名
    |      |-共有フォルダ
    |
    |-Web Client Network

コールバック関数内では、ダイアログが最初に表示される直前のみ
指定されたフォルダを表示するように処理を行っています(つもりです)。

  // 初期化時にフォルダを選択させます。
  if( uMsg == BFFM_INITIALIZED )
  {
   // lpData=BROWSEINFO構造体で指定したフォルダパス
   // ※文字列のアドレスです。
   ::SendMessage( hwnd, BFFM_SETSELECTION, TRUE, lpData );
  }


ネットワーク上の共有フォルダを初期表示させるには
一度共有フォルダ配下にアクセスが必要なのでしょうか?
ご教示のほどよろしくお願い致します。

フォルダ選択ダイアログで、ネットワーク上の共有フォルダを初期表示する
方法についてご教示下さい。

SHBrowsForFolder を用いて
フォルダ選択ダイアログで共有フォルダを初回表示した場合、
指定フォルダを"\\PC名\共有フォルダ名"としても下記のように
ネットワーク全体までしか表示されずに困っています。

 マイネットワーク
 |
 |-ネットワーク全体
    |
    |-Microsoft Terminal Services
    |-Microsoft Windows Network
    |-Web Client Network

BRO...続きを読む

Aベストアンサー

> 指定フォルダを"\\PC名\共有フォルダ名"としても下記のように

試していないのでできるかどうか自体も分かりませんがひとつだけ
気になったのはCソースの文字列定数内ではバックスラッシュを
エスケープしないとちゃんとバックスラッシュとして認識されませんよ。

\→"\\"、\\→"\\\\"

Qファイルとフォルダのどちらも選択できるダイアログ

環境
 OS:Win2000及びWinXP
 バージョン:VB6.0 SP5

ファイルとフォルダのどちらも選択できるダイアログを使用する為のAPIを探しています。

詳しく言うと、Windowsのエクスプローラ上で右クリックから新規のショートカットを作成した際の、
ウィザードにて参照ボタンを押下した際に表示される使用されているダイアログのようなものです。

フォルダまたはファイルだけのダイアログをAPIにて表示できる方法は調べて分かったのですが、
フォルダとファイルをどちらでも選択できるダイアログが見つかりませんでした。

逆にフォルダまたはファイルだけのダイアログのAPIのオプションの違いなのでしょうか?

ヒント・キーワード・参考サイトだけでも良いので、
よろしくお願いします。

Aベストアンサー

ショートカット作成時にフォルダとファイルの両方選択されるようになっているのは
基本的には、フォルダ選択ダイアログを使えば可能です。
フォルダ選択を呼び出す時に、BrowseInfo構造体の ulFlags に BIF_BROWSEINCLUDEFILES を指定して
呼び出せば可能です。

ただし、BIF_BROWSEINCLUDEFILES フラグは Shellのバージョン依存がありますので気をつけて下さい。
(めんどくさかったら気にせずに結構ですw)

[キーワード]
SHBrowseForFolder フォルダ選択ダイアログ
BrowseInfo フォルダ選択ダイアログへの渡す構造体

参考URLはM$のMSDNのSHBrowseForFolderについて

参考URL:http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/functions/shbrowseforfolder.asp

Qフルパスから最後のディレクトリ名を取得したい。

vb.netなのですが、例えば
c:\aaa\bbb\ccc\ddd\eee\fff.exe
というフルパスがあったとして、
eeeというディレクトリ名を取得したいのですが、
何か良い方法はないでしょうか。
それぞれのディレクトリ名の文字数や階層数は
決まっていないのですが、オススメの方法が
ありましたら、教えて頂けると助かります。

Aベストアンサー

MessageBox.Show(IO.Path.GetFileName(IO.Path.GetDirectoryName(myPath)))

IO.Path の GetDirectoryName でフォルダのフルパスを取得して、さらに IO.Path の GetFileName で最終フォルダ(またはファイル)の名前を取得。

QFolderBrowserDialogの使い方

こんにちは!FolderBrowserDialogについてお教えいただけないでしょうか?
下記のコードを実行しました。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'FolderBrowserDialogクラスのインスタンスを作成
Dim fbd As New FolderBrowserDialog

'上部に表示する説明テキストを指定する
fbd.Description = "フォルダを指定してください。"
'ルートフォルダを指定する
'デフォルトでDesktop
fbd.RootFolder = Environment.SpecialFolder.Desktop
'最初に選択するフォルダを指定する
'RootFolder以下にあるフォルダである必要がある
fbd.SelectedPath = "C:\Windows"
'ユーザーが新しいフォルダを作成できるようにする
'デフォルトでTrue
fbd.ShowNewFolderButton = True

'ダイアログを表示する
If fbd.ShowDialog(Me) = DialogResult.OK Then
'選択されたフォルダを表示する
Console.WriteLine(fbd.SelectedPath)
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
デスクトップを選択すると、「C:\Users\owner\Desktop」、
Cドライブを選択すると、「C:\」となります。

フォルダを選択した後に、「abc.txt」という固定ファイルを出力させようと思っています。とりあえずは、文字列連結をしてフルパスを作成します。

選択したフォルダパスに「"\abc.txt"」と文字列連結すると、「C:\Users\owner\Desktop\abc.txt」になります。
これは、OKです。

しかし、「Cドライブ直下では、「C:\\abc.txt」となってしまい、円マークが2つできてしまいます。
これだと正しいパスにファイルを出力することができないと思います。

これを解決するには、つまり「C:\abc.txt」にするには、どのようにコードを書いたらいいでしょうか?FolderBrowserDialogは使うものと前提でお願い致します!

こんにちは!FolderBrowserDialogについてお教えいただけないでしょうか?
下記のコードを実行しました。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'FolderBrowserDialogクラスのインスタンスを作成
Dim fbd As New FolderBrowserDialog

'上部に表示する説明テキストを指定する
fbd.Description = "フォルダを指定してください。"
'ルートフォルダを指定する
'デフォルトでDesktop
fbd.RootFolder = Environment.SpecialFolder.Desktop
'最初に選択するフォルダを指定する
'RootFold...続きを読む

Aベストアンサー

パスの結合には,文字列を連結するのではなく,System.IO.PathクラスのCombineメソッドを利用します。

※参考URLには.NET 4のMSDNのURLを記述しています。最新版である.NET 4.5のMSDNは解説部分が訳されていないので。

参考URL:http://msdn.microsoft.com/ja-jp/library/fyy7a5kt(v=vs.100).aspx

Qネットワーク上のフォルダにアクセスする

いつもお世話になっております。

Q.ネットワーク上のフォルダにアクセスしたいのですが
ユーザ名、パスワードを入れてアクセスする方法はありますか?
その他別の解決策があればご教授下さい。

今回対象のパス構成は2つ
・ \\hostID\folderA\b\c\d
・ \\hostID\C$\e\f
それぞれエクスプローラのアドレスバーに入力すると
初回のみユーザID、パスワードを求められ入力後はアクセスできる。

今回のアプリからのアクセスはエラーになるが、
上記方法により手動で一度ID,パスワードを入力するとアプリからの
参照も可能になる。

というわけでアプリから初回アクセスの時にID、パスを入力できれば解決するのかな?と思った次第です。

VB.NET2002
host Win2000
server Win Server

Aベストアンサー

VB.NETは詳しくないので他に方法があるかもしれませんが、
VB6.0で過去にAPIの(WNetAddConnection2)を使用して
ネットワークフォルダにIDとパス指定して接続をしていました。

ただし、Windowsで既に別のIDで接続を行っていた場合、
「既存の認証・・・と一致しません」みたいなエラーが出るので
ちょっと注意が必要です。

QVB.NETで他のプロジェクトで作成したフォームを使う方法

こんにちは。
VB.NETのプロジェクトがぐちゃぐちゃで参照設定とかいろんなの呼んでしまっているので、新しく作成しなおしたいのですが、
新しいプロジェクトでプロジェクトを作成し、前のプロジェクトで必要なファイル(.vb、RESX)を新しいプロジェクトのフォルダにコピーしたのですが、
普通のモジュールは追加>新しい項目の追加でなんとか追加できたのですが、フォームの追加の仕方がわかりません><教えてくださいー

P.S. RESXファイルってフォームのデータが入ってるのでしょうか?そんな気がしてコピーしたのですが。

※VB6.0からVB.NETに以降した際にアップデート情報みたいなのがプログラム上にくっついてしまって.vbファイルも参照項目も増えまくってしまった

Aベストアンサー

ドラッグ&ドロップが使いやすい。
Windowsのエクスプローラでvbファイルをドラッグして、VS.NETのソリューションエクスプローラへドロップする。

QSPREAD(GrapeCity)のセルにフォーカスを設定するにはどうしたらいいのでしょうか?

VB.netで作成しています。
SPREAD(GrapeCity)の下記のイベントでSPREADのセルに入力された値をチェックしてエラーが無ければデータベースに登録、または更新をして入力エラーがあった場合、セルにフォーカスを設定するように記述していますがうまくフォーカスを設定する事ができません。

・SPREADのChangeイベント
・SPREADのKeyUpイベント
・SPREADのLeaveイベント
・SPREADのCellLeaveイベント

フォーカスを当てたいセルの行番号とカラム番号をSetActiveCellで指定していますが・・・
フォーカスを設定するにはどうしたらいいのでしょうか?
ご存知の方がいましたらアドバイス宜しくお願いします。
では、失礼します。

Aベストアンサー

サポートページを見ただけなので参考程度にお願いします。
http://file.grapecity.com/patches/SPREADNET25Win_ReleaseNote_2510122002.htm

上記ページの「制限事項と注意点」→「【イベント/メソッド】 」の中に「シート上に表示されていないセルに対してSetActiveCellメソッド呼び出し(またはActiveRowIndex/ActiveColumnIndexプロパティの設定)を行った場合、シートは自動的にスクロールされません。表示させる場合にはFpSpreadクラスのShowActiveCellメソッドを併用してください。 」とあります。
一度試してみては?
また、GrapeCityさんは意外とサポートが優秀ですよ。
以前、SPREADver3.0の頃は何回かバグとってもらいました。(非公開で最新ファイルくれました)
バグでなくても親切に対応してもらった覚えがあるので一度問い合わせをしたほうが近道かもしれませんね。

QCloseとDisposeの違い

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。

これを防ぐために、Me.Dispose() を使います。すると、きれいにプロセスは終了し、イベントは発生しない模様です。

そこで、「フォームを閉じる」意味のMe.Close() をすべてMe.Dispose() に変えてしまいました。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。

ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。Me.Close() に変えるとうまくいきました。

わけわからなくなってきました。。。

ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。

ここで4つの仮説を立ててみました。

1. ShowDialogで呼び出したフォームは、Me.Dispose()、Showで呼び出した、あるいは、スタートアップフォームは、Me.Close() すれば破棄できる

2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

3. 呼び出し方ではなく、別の要因が存在する

4. 併記する必要がある場合がある

Me.Close()
Me.Dispose()

または、

Me.Dispose()
Me.Close()



どれが正しいのでしょうか?どなたがご存じの方がいらっしゃいましたら、ご教授いただけませんでしょうか? どうぞよろしくお願い申し上げます。ありがとうございました。

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、...続きを読む

Aベストアンサー

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。
Me.Close() に変えるとうまくいきました。

通常はどちらでもうまくいきます。

>2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

ShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。

>3. 呼び出し方ではなく、別の要因が存在する

そう思います。

>4. 併記する必要がある場合がある

インスタンスを明示的に破棄したほうがよい場合は多く存在します。
Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。
これらのメンバは、外部とのやり取りを行うものが多くあります。
たとえばSQLClientに含まれるようなメンバです。

外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。

Using構文を使用するのとまったく同じ理由になります。
正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。

ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。
Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。

上記のような理由により、
Me.Close()
Me.Dispose()
は両方書いたほうがよいと思います。

蛇足ですが、
Me.Dispose()
Me.Close()
はエラーになります。
Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。
存在しないMeに対してCloseメソッドを要求することはできないためです。

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリ...続きを読む

Q文字列の後ろから必要分だけ削除したい。

例1 Dim str As String = "あいうえお1234"

文字列の中の1234だけ削除したい場合は、
str = str.Remove(5,4)
という風に、5文字目の後から4文字削除にすればよいのですが、

例の"あいうえお"の部分の長さが毎回処理する度に異なる場合は、
文字列の頭から何文字目という指定ができないので、”後ろから4文字を削除したい”となります。その場合は、どのようなプロパティを使えばいいのでしょうか。

.NET環境です。

Aベストアンサー

Length(str)で文字数を取得できますので、後ろから4文字目は先頭から何文字目かは計算できると思いますが、どうでしょうか?

QVB.netでのExcelデータの読み込み

プログラミング初心者です。VB.net2003を使っています。
エクセルでBの列のセルデータを読み込みたいのですが、Bの列の3行目のセルから同列の最後のデータが入っているセルまでを1つずつ順番に取得して、それを配列に代入するにはどうすれば良いのでしょうか?
初歩的な質問で申し訳ないのですがよろしくお願いします。

Aベストアンサー

n-junです。

Dim v As Object
For Each v In xlWs.Range("B3", xlWs.Range("B" & xlApp.Rows.Count).End(Excel.XlDirection.xlUp)).Value
MsgBox(v)
Next

追加します。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング