• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB ファイルの検索について)

VBファイルの検索について

このQ&Aのポイント
  • VB2008で指定したフォルダ内の特定のファイル種類を検索するプログラムを作成中です。
  • 現在はフォルダの指定ができていますが、ファイル種類の検索とコピーについての実装方法が分かりません。
  • どうすれば指定したファイル種類のファイルを見つけてディスクトップにコピーできるのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

下のような作りになっていますか???? サンプルコードが Class Form1 End Class の中にありますか???? 「VB 名前空間のステートメントが無効です」でWeb検索した結果 http://msdn.microsoft.com/ja-jp/library/5ycdx874(VS.80).aspx あと文字制限で書ききれなかったけど、 ・ボタン2 ・ラベル1 が必要になります。 Public Class Form1   Private Sub Button1_Click(...   End Sub   Private Sub Button2_Click(...   End Sub   'ファイルの検索コピー   Private Sub CopyFile(...   End Sub   'フォルダパスの取得   Function GetFolderPath(...   End Function End Class

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

System.Webの参照設定が必要 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click  Static l_blnFlg As Boolean = False  If l_blnFlg Then   MsgBox("実行中!")   Return  End If  l_blnFlg = True  Dim l_intCount As Integer  Try   Dim l_strRoot As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "検索結果")   Dim l_dirSch As New IO.DirectoryInfo(TextBox1.Text)   Call CopyFile(l_strRoot, l_dirSch.FullName, "*.txt", l_dirSch, l_intCount)   Me.Label1.Text = ""   Call MsgBox(String.Format("{0}件の処理が終了!", l_intCount))   Process.Start(l_strRoot)  Catch ex As Exception   Me.Label1.Text = ex.Message   Call MsgBox("エラー発生")  Finally   l_blnFlg = False  End Try End Sub 'ファイルの検索コピー Private Sub CopyFile(ByVal p_strCopyRoot As String, ByVal p_strSchRoot As String, ByVal p_strSchFile As String, ByVal p_dSch As IO.DirectoryInfo, ByRef p_intCount As Integer)  Application.DoEvents()  Me.Label1.Text = String.Format("[{0}]を検索中...", p_dSch.FullName)  For Each l_fInf As IO.FileInfo In p_dSch.GetFiles(p_strSchFile)   p_intCount += 1   'フォルダを作成   Dim l_strDir As String = GetFolderPath(p_strCopyRoot, p_strSchRoot, l_fInf.DirectoryName)   Call IO.Directory.CreateDirectory(l_strDir)   'ファイルのコピー(上書き=TRUE)   Dim l_strFile As String = IO.Path.Combine(l_strDir, l_fInf.Name)   Dim l_finfCopy As IO.FileInfo = l_fInf.CopyTo(l_strFile, True)   '二回目の実行用のために、読取専用を外す   l_finfCopy.IsReadOnly = False  Next  'ファイルの検索コピーを再帰  For Each l_dSubInf As IO.DirectoryInfo In p_dSch.GetDirectories   Call CopyFile(p_strCopyRoot, p_strSchRoot, p_strSchFile, l_dSubInf, p_intCount)  Next End Sub 'フォルダパスの取得 Function GetFolderPath(ByVal p_strCopyRoot As String, ByVal p_strSchRoot As String, ByVal p_strSchPath As String) As String  Dim l_uri As New Uri(p_strSchRoot)  Dim l_strPath相対 As String = System.Web.HttpUtility.UrlDecode(l_uri.MakeRelative(New Uri(p_strSchPath)))  Return IO.Path.Combine(p_strCopyRoot, l_strPath相対) End Function

xlhjp
質問者

補足

ご回答頂きありがとうございました。 早速試してみたところ、下記の行からエラーが出ていますが、よろしくご指導お願いいたします。 エラーは同じで”VB 名前空間のステートメントが無効です”となります。 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Private Sub CopyFile(ByVal p_strCopyRoot As String, ByVal p_strSchRoot As String, ByVal p_strSchFile As String, ByVal p_dSch As IO.DirectoryInfo, ByRef p_intCount As Integer) Function GetFolderPath(ByVal p_strCopyRoot As String, ByVal p_strSchRoot As String, ByVal p_strSchPath As String) As String

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB初心者です。コードの書き方が分かりません。

    VB初心者です。 VBで(zのn乗)-(xのn乗+yのn乗)の計算が出来るようにしたいのですが、答えが必ず-1になってしまいます。 Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) End Sub End Class 正しいコードの書き方を教えて下さい。 また特定の答えのときにメッセージを表示したいのですが、どうすればいいですか?

  • VBのテキスト書き込み読み出し

    VB初心者です。 VBのテキスト書き込み読み出しについて質問させていただきます。 ~使用オブジェクト~ textbox1 textbox2 button1 button2 現在下記の通りtextbox1とtextbox2に書いた文字(length 10まで)をbutton1 clickで C:\test.txtに書き出し、 button2 clickでtextbox1 と textbox2に戻すプログラムを書いてみました。 読み込みのところが現在は2個ですが、実用的には膨大な数にしたいと思っています。 単純に沢山書けばいいのでしょうが現実的ではないのでスッキリと書く書き方はないでしょうか? さらに、例としてtextbox1にAさんの名前textbox2にAさんの年齢をいれたとします。 その際、Bさん以降を登録したいのですがその場合テキストへの書き込みを次行に書き込み 次行を読み込むにはどのように書けばよろしいでしょうか? ご教授お願い致します。 Public Class Form1 '##################################################### '"C:\test.txt"へ書き込み '##################################################### Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim write_data As New System.IO.StreamWriter("C:\test.txt", False, _ System.Text.Encoding.Default) Dim str As String Dim str1 As String str = String.Format("{0, -10}", TextBox1.Text) str1 = String.Format("{0, -10}", TextBox2.Text) write_data.Write(str & str1) write_data.Close() End Sub '##################################################### '"C:\test.txt"の読み込み '##################################################### Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim Reader As New IO.StreamReader("C:\test.txt", System.Text.Encoding.GetEncoding("Shift-JIS")) While Reader.Peek() > -1 '10文字取得 Dim c(9) As Char Dim d(9) As Char Reader.ReadBlock(c, 0, c.Length) Reader.ReadBlock(d, 0, d.Length) TextBox1.Text = c TextBox2.Text = d End While Reader.Close() End Sub End Class

  • vbのsavefiledialogについて

    vbで、テキストボックスに、文字を入力し、ボタン2をクリックすると、ユーザーが指定したところに、指定した名前で、txt形式、html形式、doc形式(このうち、txtと、htmlは必須。)で保存するプログラムを作りたいと思っております。 サイトを見てみますが、なかなかよいものが見つかりません。どなたか教えてください。 書きかけのプログラムと、フォーム図を載せておきます。 また、変更した方がよければ、そちらもおしえてください。 Public Class Form1 Dim texta As String Dim a Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Button1.Text = "リセット" Button2.Text = "保存" texta = TextBox1.Text End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged texta = TextBox1.Text End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = "" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click a = DialogResult SaveFileDialog1.OverwritePrompt = True SaveFileDialog1.FileName = "" SaveFileDialog1.Filter = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*" a = SaveFileDialog1.ShowDialog If a = Windows.Forms.DialogResult.OK Then Label1.Text = IO.Path.GetDirectoryName(SaveFileDialog1.FileName) Label2.Text = IO.Path.GetFileName(SaveFileDialog1.FileName) Else Label1.Text = "キャンセルされました。" Label2.Text = "" End If End Sub End Class

  • VBで倍数を出したい

    VBで倍数を出したい よろしくお願いします。 おそらく基本なんだと思うのですが、さっぱりわかりません。 TextBox Label Buttonと並んでいて、 TextBoxに入った整数に対し、 Buttonを1度押すたびに、 Labelに倍数が表記されていく、 という趣旨なのですが。 まず、前段階として下記を作らされました。 Public Class Form1 Dim i As Integer Dim m As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click i = TextBox1.Text lblmessage.Text = i + m m = lblmessage.Text End Sub End Class このように、labelの数字がどんどん変わっていくのはできたのですが、問題は、 Text…10 Label…10    20    30    40    50    60    70    80    90    100 となり、しかも一度に出るのではなく、Buttonひと押しにつき一つの解が出ね 次の一押しで改行され解が出る。 かつ、100で打ち止めにすること…だそうです。 いちおうめちゃくちゃですが、みんな風に作りました。 Public Class Form1 Dim a As Integer Dim b As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim b As Integer = 10 a = TextBox1.Text lblMessage.Text = a & ControlChars.CrLf & a + b End Sub End Class どうかヒントだけでもお願いします。

  • sub プロシージャを呼び出すにはどうればいいんですか?in vb 2005

    恐れ入ります。 vb2005にて、sub プロシージャをよびだしたいんですけどどうすればよろしいでしょうか?教えて下さい。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click load ike 'vb6ではこれでいけたのに・・・ End Sub Public Sub ike() textbox1.text="イケメン" end sub End Class

  • VBで選択したフォルダにフォルダをコピーしたい

    VBで、選択したフォルダに、中身の入ったフォルダを上書きしてコピーするプログラムを作りたいと思い、フォルダを選択し、選択したフォルダをラベルに表示させるというところまではできました。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim fbd As New FolderBrowserDialog fbd.Description = "フォルダを指定してください。" fbd.RootFolder = Environment.SpecialFolder.Desktop fbd.SelectedPath = "C:\Windows" fbd.ShowNewFolderButton = True If fbd.ShowDialog(Me) = DialogResult.OK Then Console.WriteLine(fbd.SelectedPath) Label3.Text = fbd.SelectedPath End If End Sub ですが、ここから試行錯誤を繰り返してみるも、FolderBrowserDialogで選択したフォルダにフォルダを上書きすることができないのです。アドバイスよろしくお願いします。

  • VB2010 テキスト書き出し位置

    VisualBasic初心者です。 VB2010でフォームでフォームから複数のTextBoxに入力したものを Buttonクリックイベントでテキストファイルに書き込みを行おうと思っています。 その際、テキストファイルへの書き込み位置を指定したいと思っています。 TextBox1の内容はテキストファイルの1文字目から10文字目 TextBox2の内容は11文字目から20文字目という感じにしたいです。 現在下記のプログラムです。 どなたかご教授ください。 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim write_data As New System.IO.StreamWriter("C:\test.txt", False, _ System.Text.Encoding.Default) write_data.Write(Textbox1.text) write_data.Close() End Sub

  • VBのパスワードに関して

    VBのパスワードについて質問です。 今ソースに書いたパスワードを認証させて、Form2に移動させようと思っています。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text = "1234" Then MsgBox("パスワードが正しく入力さました") Dim frm2 As New Form2 frm2.Show() Else MsgBox("パスワードが正しくありません") Me.close() End If End Sub End Class 上記で質問があります。 まずForm1には TextBox1 .. 5 まで設置しています。 上記のソースだと"TextBox1"の"指定文字"が正しければ、 MsgBox("パスワードが正しく入力さました")と表示しますが、 これを増設したいのです。 例えば [TextBox1] - [TextBox2] - [TextBox3] - [TextBox4] - [TextBox5] [Button1] にしたいのですが、ソースコードはどの様になりますか? 順番としては1から5の小さい値でOKであれば認証する。 あと何処かで見たのですが、 これに起動の回数制限を設けたいと思っています。 その方法も教えて頂ければありがたいです。 また外部者から逆コンパされない様に暗号化方法も教えて欲しい! 私は一切、Web系の認証はしないので・

  • VB.netでパスワード変更

    下記のようなパスワードを変更するフォームをVB.netで作成したのですが、 実行すると、いつも異なるretValの値がかえってきて変更できません。 retValの値もよくわからない大きな数値がかえってくるのでどのようなエラーかも 判断つかず。 どこが間違っているかお分かりになる方いらっしゃいますでしょうか。 Public Class Form1 Private Declare Function NetUserChangePassword Lib "netapi32.dll" (ByVal Domain As String, ByVal User As String, ByVal OldPass As String, ByVal NewPass As String) As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim retVal As Long Dim sDomain As String Dim sUser As String Dim sOldPass As String Dim sNewPass As String sDomain = "xxxxxxx" ←ここはサーバのIPアドレス sUser = TextBox1.Text sOldPass = TextBox2.Text sNewPass = TextBox3.Text retVal = NetUserChangePassword(sDomain, sUser, sOldPass, sNewPass) MsgBox(retVal) End Sub End Class

  • VBの添削をお願いします。

    VBの添削をお願いします。 先日 http://okwave.jp/qa/q5919602.html で質問した者です。 (textboxの値の倍数が改行されながら表示されるようにするには?という主旨です。) リンク先にもありますが下記の回答をいただきました。 Public Class Form1 Dim a As Integer Dim b As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim b As Integer = 10 a = TextBox1.Text lblMessage.Text = a & ControlChars.CrLf & a + b End Sub End Class それで今度は下記の問いが出ました。 「表示されるのは最新の5行のみ」 Textbox内が10の場合、「60が表示された時点で10は消え、70が出た時点で20が消える」というものです。 このまま続けてもよし、Labelを5つ並べてもよし、とのことです。 で今回は前者で作ってみました。 lblmessage.textの上にlblmessage2.textを被せて隠しちゃえ、というやつなんですが、 模範解答とは程遠いんでしょうね。。。。 どなたか添削お願いできませんか。

このQ&Aのポイント
  • EPSONプリンターEW-M752Tを購入して1年程度経過しました。印刷が部分的なことや紙詰まりが頻繁に起きるなどの問題が発生しています。ノズルクリーニングやローラーの掃除などの対処法が一時的な解決策として有効ですが、最近は解決しなくなっています。紙詰まりの解決方法について教えてください。
  • EPSONプリンターEW-M752Tの印刷不良と紙詰まりに悩まされています。使用頻度が高く、メンテナンスボックスの交換回数も多いです。印刷が部分的なことが増えたり、紙詰まりが頻繁に起きるようになりました。ノズルクリーニングやローラーの掃除を行うことで一時的に解決していましたが、最近はうまくいかない状況です。紙詰まりの解決方法についてアドバイスをお願いします。
  • EPSONプリンターEW-M752Tを1年以上使用しており、印刷が部分的なことや紙詰まりの問題に悩まされています。ノズルクリーニングやローラーの掃除をすることで一時的に解決できることがありますが、最近は解決策が効果を発揮しなくなりました。紙詰まりの解決方法や印刷不良の対処法について教えてください。
回答を見る

専門家に質問してみよう