質問ですが、

'フォルダセット
Dim fbd As New FolderBrowserDialog
fbd.Description = "フォルダを指定して下さい。"
fbd.RootFolder = Environment.SpecialFolder.Desktop
fbd.SelectedPath = Environment.SpecialFolder.Desktop
'コピー
System.IO.File.Copy(fbd.SelectedPath & "\test.pak", System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) & "\test.pak")

フォルダを選択した後、
そのフォルダ内の「test.pak」をコピーして、
プログラムファイルを取得して、取得した先の場所に保存したいのですが、
これをデバッグすると、怒られてしまいます。
"(C:\Program File\test.pak) の一部が見つかりませんでした"
という怒られ内容です。
ドコモ間違ってないのに、この様なエラーが出てしまうのですが
何処が悪いのでしょうか?どの様な改善をすれば良いでしょうか?

A 回答 (4件)

補足に貼り付けられているコードでは当然そうなります。


ShowDialog()の戻り値の意味を理解してください。
----------------------------------------------
Dim fbd As New FolderBrowserDialog
fbd.Description = "フォルダを指定して下さい。"
fbd.RootFolder = Environment.SpecialFolder.Desktop
If (fbd.ShowDialog() <> Windows.Forms.DialogResult.OK) Then
MsgBox("キャンセルされたよ")
Return
End If
MsgBox(fbd.SelectedPath)'選択されたフォルダの確認が目的なので実際は不要
System.IO.File.Copy(fbd.SelectedPath & "\test.txt", "c:\test\test1.txt", True)'ここでコピーを実行
----------------------------------------------
又は
----------------------------------------------
Dim fbd As New FolderBrowserDialog
fbd.Description = "フォルダを指定して下さい。"
fbd.RootFolder = Environment.SpecialFolder.Desktop
If (fbd.ShowDialog() = Windows.Forms.DialogResult.OK) Then
MsgBox(fbd.SelectedPath)'選択されたフォルダの確認が目的なので実際は不要
System.IO.File.Copy(fbd.SelectedPath & "\test.txt", "c:\test\test1.txt", True)'ここでコピーを実行
Else
MsgBox("キャンセルされたよ")
End If
----------------------------------------------
Copyの3番目の引数は、コピー先に同じファイル(test1.txt)がある時に上書きする指定です。
    • good
    • 0

フォルダ選択するダイアログが表示されていないためです。


fbd.ShowDialog()が必要。
fbd.SelectedPath には、ダイアログでOKを押した時に選択されたパスが設定されます。

こんな感じです
Dim fbd As New FolderBrowserDialog
fbd.Description = "フォルダを指定して下さい。"
fbd.RootFolder = Environment.SpecialFolder.Desktop
If (fbd.ShowDialog() <> Windows.Forms.DialogResult.OK) Then
MsgBox("キャンセルされたよ")
Return
End If

MsgBox(fbd.SelectedPath)

この回答への補足

ありがとうございます。
申し訳無いのですが、やはり同じ事をしても認識されません。
http://deai.mokuren.ne.jp/up/src/up0495.jpg

上記の様にわざと "test.txt"or"test1.txt"で作ってみましたが、
「キャンセルされたよ」しか返ってこない・・。
なぜなんでしょうか?

お手数おかけします・・。

補足日時:2009/05/19 23:52
    • good
    • 0

>fbd.SelectedPath & "\test.pak"


をPath.Combineを使ってパスを組立て、File.Existsで存在を確認してから
Copyするようにしてみては?

Dim sorcePath As String
Dim destPath As String

sorcePath = System.IO.Path.Combine(fbd.SelectedPath, "test.pak")
If Not System.IO.File.Exists(sorcePath) Then
  MessageBox.Show("ファイルがネーヨ")
End If

この回答への補足

ご回答有難うございます。
確実にそこにはファイルがあるので、存在確認は必要ありません。
一応内容を試してみましたが、同じ様なエラーがおきます。

一番問題にしているのが、
copyです。存在確認済なのに必ず
System.IO.File.Copy(fbd.SelectedPath & "\test.pak", (ここの文字がC:\)以外の記載だとパスが認識されない という事です))

恐れ入りますが、教えて下さい。><

補足日時:2009/05/19 23:21
    • good
    • 0

OSはWindows Vistaでしょうか?



Vistaである場合、ユーザアカウント制御(UAC)のため、
管理者権限で実行していないアプリケーションから
>System.Environment.SpecialFolder.ProgramFiles
のようなディレクトリを容易に変更できないようになっています。

本当にそこに置くべきか検討した方が良いでしょう。
一般的なアプリケーションではそのようなディレクトリにファイルを作ったりしませんし。

この回答への補足

補足です。

環境は
・WinXP SP3
だけです。

Dim fbd As New FolderBrowserDialog
fbd.Description = "フォルダを指定して下さい。"
fbd.RootFolder = Environment.SpecialFolder.Desktop
fbd.SelectedPath = Environment.SpecialFolder.Desktop

Dim Down As New FolderBrowserDialog
Down.Description = "保存するフォルダを指定して下さい。"
Down.RootFolder = Environment.SpecialFolder.Desktop
Down.SelectedPath = Environment.SpecialFolder.Desktop
'コピー
System.IO.File.Copy(fbd.SelectedPath & "\test.pak", Down.SelectedPath & "\test.pak")


この様に別でまた作って保存する場所を指定して、
そこに保存したいのですが、これだと質問内容と同じく
怒られてしまいます。
どうか教えて下さい。

補足日時:2009/05/19 13:50
    • good
    • 0

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

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

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

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

Qのイベントについて

<input type="file">でファイルを選択した時点にイベントを追加する方法を教えてもらえませんか?
セキュリティの観点から無理なのでしょうか?

Aベストアンサー

ファイルを選択した時点で、
onchange イベントが起こりますので、
それを利用すればいいです。
例:
<form name="File">
<input type="file" name="UPLOADFILE" onchange="alert(document.File.UPLOADFILE.value)">
</form>

QDataTableに特定のフィールドが存在するかどうか調べるには?

DataTableに登録されているフィールドに、特定のフィールドが存在しているかどうか調べるには、どのようにすればよいでしょうか?

dtTable.Columns.Add("TEST1")
dtTable.Columns.Add("TEST2")

dtTableにTEST1とTEST2のフィールドが登録されていたとして、

Dim tmp As String = dtTable.Rows(0).Item("TEST3"),ToString

TEST3のフィールド名で値を取得しようとすると、TEST3の列が登録されていない為、エラーとなります。

そこで、事前にTEST3というフィールドが、DataTableに存在するかどうか調べたいのです。
(ハッシュテーブルのContainsKeyメソッド等のようなものを求めています)
お分かりになる方がいましたら、宜しくお願いします。

Aベストアンサー

DataColumnCollection.Contains メソッド
http://msdn2.microsoft.com/ja-jp/library/system.data.datacolumncollection.contains(VS.80).aspx
を使用すればよいと思います。

ちなみに、DataTable.Columns が DatacolumnCollection クラスです。

QVisual Stadio2008 Releaseビルドで作成される<アセンブリ名.xml>とは?

Visual Stadio2008 にてビルドすると
exeの同階層に<アセンブリ名.xml>が作成されます。
内容はクラスや関数、変数が定義されているように思われます。
そこで以下の2点、質問です。
 ・具体的にどのような機能なのでしょうか。
 ・ユーザにexeインストールの際、必要でしょうか。

環境は
 ・VisualStadio2008 SP1 Standard Edition
 ・VB.NET
です。

よろしくお願いします。

Aベストアンサー

ビルドしたアセンブリのソースコードに含まれるXmlコメント(<summary>~など)を集約したものです。出力されたXmlからAPIリファレンスなどを作成するために使用します。

・具体的にどのような機能なのでしょうか。
インテリセンスがこのXmlファイルを使っているような記述がMSDNにありました。
[ MSDNより ]
生成した XML ファイルを Visual Studio の IntelliSense 機能で使用するには、XML ファイルの名前をサポートするアセンブリの名前と同じにします。XML ファイルをアセンブリと同じディレクトリに格納して、アセンブリが Visual Studio プロジェクトで参照されるとき、.xml ファイルも同時に見つかるようにしてください。IntelliSense がプロジェクト内のコード、またはプロジェクトによって参照されるプロジェクト内のコードを処理するために、XML ドキュメント ファイルは必要ありません。
[ /MSDNより ]
(-"-;) 結局必要なのか不要なのか・・・

・ユーザにexeインストールの際、必要でしょうか。
クラスライブラリとして配布するのであれば有用かもしれませんが、exeなら不要だと思います。

@ITに具体的な活用例が載っているので参考になれば。

参考URL:http://www.atmarkit.co.jp/fdotnet/teamdev/teamdev02/teamdev02_01.html

ビルドしたアセンブリのソースコードに含まれるXmlコメント(<summary>~など)を集約したものです。出力されたXmlからAPIリファレンスなどを作成するために使用します。

・具体的にどのような機能なのでしょうか。
インテリセンスがこのXmlファイルを使っているような記述がMSDNにありました。
[ MSDNより ]
生成した XML ファイルを Visual Studio の IntelliSense 機能で使用するには、XML ファイルの名前をサポートするアセンブリの名前と同じにします。XML ファイルをアセンブリと同じディレクトリに格...続きを読む

Q動作を停止しましたと表示され、停止します。

動作を停止しましたと表示され、アプリケーション停止します。

問題の詳細



発生元
怪盗攻略ブラウザ2

概要
動作が停止しました

日付
‎2013/‎08/‎07 0:19

状態
レポートが送信されました

説明
障害が発生しているアプリケーションのパス: C:\Users\******\AppData\Local\Apps\2.0\8B9RETX1.HAB\QDOQORNC.VKJ\kait..tion_8149fee0edf1ff73_0002.0001_5674af9cba542bd5\KaitoBrowser2_1.exe

問題の署名
問題イベント名: APPCRASH
アプリケーション名: KaitoBrowser2_1.exe
アプリケーションのバージョン: 1.0.0.0
アプリケーションのタイムスタンプ: 51ef9c9c
障害モジュールの名前: KERNELBASE.dll
障害モジュールのバージョン: 6.1.7601.18015
障害モジュールのタイムスタンプ: 50b83c8a
例外コード: 4000001f
例外オフセット: 00013219
OS バージョン: 6.1.7601.2.1.0.768.3
ロケール ID: 1041
追加情報 1: 12e5
追加情報 2: 12e5e8e1c146c520e06bac21034ebc4f
追加情報 3: 3670
追加情報 4: 367002d938052abab76c4a26ecb98de3

この問題に関するその他の情報
バケット ID: 3728007683

動作を停止しましたと表示され、アプリケーション停止します。

問題の詳細



発生元
怪盗攻略ブラウザ2

概要
動作が停止しました

日付
‎2013/‎08/‎07 0:19

状態
レポートが送信されました

説明
障害が発生しているアプリケーションのパス: C:\Users\******\AppData\Local\Apps\2.0\8B9RETX1.HAB\QDOQORNC.VKJ\kait..tion_8149fee0edf1ff73_0002.0001_5674af9cba542bd5\KaitoBrowser2_1.exe

問題の署名
問題イベント名: APPCRASH
アプリケーション名: KaitoBrowser2_1.exe
ア...続きを読む

Aベストアンサー

追加
>KERNELBASE.dll

VB***、.NET Framework*関連の場合もあります。
VB PowerPacksSetup.exeを実行インストールして解決した事例
参考URL

参考URL:http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=30385&no=0&KLOG=3

Q日付型のフィールドに空白を入れる方法を教えてください

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。
そのまま、空白を入れる方法はどうやったらよろしいのでしょうか?

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

Aベストアンサー

あとは、プログラムの書き方次第ですね、、、


If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。

QInner join と Left joinの明確な違いは?

Inner join と Left joinの違いがよくわかりません。
教えてください。

Aベストアンサー

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
4               NULL
5               NULL
6               NULL
の6レコードが出力されますが、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
の3レコードしか出力されません。

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3           ...続きを読む

QAccess フォーム上でのテキストボックスとテーブルの連結

フォームヴィザードからフォームを作成すると、
テキストボックスと指定したテーブルを連結させることができるのですが、デザインビューでそれをするときに、テキストボックスのプロパティのコントロールソースにテーブル名を入れれば連結できるのかと思いきや、うまく表示されません。どこを設定すればテキストボックスとテーブルを連結できるのでしょうか?

Aベストアンサー

#2です。
デザインビューの空欄スペース(グレー1色のところ、升目なし)で右クリックをするとプロパティが出てきます。また、フォームウィザードの途中で、そのフォームと連結するテーブルかクエリを選択する画面が出てきます。

QTextBoxに半角数字のみの入力しかできないようにしたい

タイトルどおりです。
フォームに貼り付けた、TextBoxに、半角数字のみしか入力できないようにしたいです。
000000~999999までのコード(数字)を入力させるようにするわけですが、そのままだと半角英数も全角も入力できてしまいます。

GrapeCity社製のカスタムコントロール「InputMan」の“Number”を用いると簡単なのですが、これだとカーソルがボックス内の右端にきて、一の位から入力が始まってしまいます。
数字は、ボックス内の左側から入力されていくようにしたいのですが、“Number”だとなんか出来なさそう・・・?
(“Number”で左側から入力できるならそれがいいのですが)

そこで、TextBoxを使うことにしたのですが、TextBoxだと、半角数字のみしか入力できないような制限がかけるのかが、わかりません。

もし、お分かりの方がいらっしゃいましたら、ご教授下さいませ。

Aベストアンサー

コピペですみません。
VB6だと、

Private Sub TextBox_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyBack, Asc("0") To Asc("9"), Asc("-"), Asc(".")
Case &H1 ' Ctrl + A
TextBox.SelStart = 0
TextBox.SelLength = Len(TextBox.Text)
Case &H3 ' Ctrl + C
Case &H16 ' Ctrl + V
Case &H18 ' Ctrl + X
Case &H1A ' Ctrl + Z
Case Else
KeyAscii = 0
End Select
End Sub

で、いかがでしょうか。

コピペですみません。
VB6だと、

Private Sub TextBox_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyBack, Asc("0") To Asc("9"), Asc("-"), Asc(".")
Case &H1 ' Ctrl + A
TextBox.SelStart = 0
TextBox.SelLength = Len(TextBox.Text)
Case &H3 ' Ctrl + C
Case &H16 ...続きを読む

Qメモリの解放の仕方

恐れ入ります。
メモリを解放するとはどういうことなんでしょうか?
for loopをくりかえしてるうちにどんどんどんどんメモリの使用率があがっちゃって。おそらくメモリを解放すればあがらなくなるとおもうのですがその解放の仕方がよくわかりません。そもそもメモリとvbの関係ってどういう関係なんですか?おしえてください。お願いします。

Aベストアンサー

システム(Windows)から確保したメモリ領域をシステムに返却するということですね。一般的には、変数などで領域を確保したものを解放することを指します。

VBでは、メモリの確保と解放は自動的にされていて、プログラム上で意識することはありません。たとえば、プロシージャレベルの変数だとプロシージャが呼び出されたときに自動的に確保されてプロシージャを抜ける時に解放されています。
V

C言語だと、変数の確保をする命令もありますし解放する命令があります。メモリを確保だけして解放しないと、繰り返し実行させている内にメモリが足りなくなります。これをメモリがリークしている、と言います。

#VC.netだと自動化されているらしい(未確認)

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 で最終フォルダ(またはファイル)の名前を取得。


人気Q&Aランキング