
質問ばかりでもうしわけないのですが
タイトルにあるようにコピーの状況を
プログレスバーで表示できたらなと思い作成したのですが
うまく動きません。
プログレスバー自身単独では動くのですがコピーと合わせると
フリーズしてしまいます。
プログラミング経験と発想力が乏しいのでご教授いただけたら幸いです
Private Sub Bt_1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_1.Click
Dim fname1 As String = "C:\フォルダ名A"
Dim fname2 As String = "C:\フォルダ名B"
Dim ber1 As Integer
If IO.Directory.Exists(fname1) = True Then
Me.Lb_1.Text = "テキスト文字"
For ber1 = 0 To 20
Me.ProgressBar1.Value = ber1
System.IO.File.Copy("コピー元テキストファイルA", "コピー先テキストファイルA", True)
My.Computer.FileSystem.CopyDirectory("コピー元フォルダA", "コピー先フォルダA", True)
My.Computer.FileSystem.CopyDirectory("コピー元フォルダB", "コピー先フォルダB", True)
Next ber1
If IO.Directory.Exists(fname2) = True Then
System.IO.File.Copy("コピー元ファイルB", "コピー先ファイルB", True)
End If
MessageBox.Show("終了報告テキスト", "タブ名")
' System.IO.Directory.Delete("コピー元", True)
Me.ProgressBar1.Value = 0
Application.Exit()
こんな感じで作成しております。
ファイル自身が1GBぐらいあるので
フリーズしていないかプログレスバーや%表示でしらせたいので
教えていただけると助かります。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
難しいですね・・・ 私は、VBはできませんが読むならって程度ですが。
。。ファイルのコピーを行う処理が重たくて、進度を表示したいというのはわかります。
なぜループと質問者さんのソースでのコピーでは、プログレスバーの動きが違うかというと、ループでは100回転するとしたら100回同じ場所を通るので、何回通ったというのが分かるのですが、コピーだとコピーの処理で1回となります。なのでコピーの場合は、コピーが終了したらプログレスバーがすべて動きます。(説明へたでスミマセン)
そこで、調べたのですがマルチスレッドで処理を行うっていいみたいです。
リンク先で議論?されてるみたいなので参考程度にお願いします。
何もわからなくてすみません。。。 orz
参考URL:http://homepage1.nifty.com/MADIA/vb/vb_bbs2/2005 …
この回答への補足
回答ありがとうございます。
リンク先を読んだのですが
初心者の私にはさっぱりです・・・
PC自体は8割シングルですので作成するのは
時間がかかりそうですね・・・・
情報ありがとうございました。
No.3
- 回答日時:
System.IO周りを探ってみましたが、非同期のファイルコピーは見当たりませんでした。
どうしても自アプリ内でプログレスを動かしたい場合、2つの方法を思いついたので挙げておきます。
方法1:ファイルコピーを自力で行う
コピー元ファイルを開き、コピー先ファイルを空で用意します。
コピー対象のファイルから一定量読み取り、コピー先へ書き込み、プログレスバーを進めます。これを繰り返すことで進捗状況がわかります。
ただし、ファイルの属性や更新日・最終アクセス日がコピーした時点の日時になるなどの自力で調整しないといけない部分があります。
イメージとしては、ファイルをアプリで開き「名前をつけて保存」で別名を指定しているのと同じ。
方法2:WinAPIを使う
CopyFileExというAPIを使うと、APIが進捗状況をコールバック関数に送ってきてくれます。一般的にはこっちの方法が使われていると思います。
VB6.0であれば実行できますが.NETでは試したことがありません。また、コピーを中止する手続きも自分で用意する必要があります。特にコールバック関数を使うあたりが
> まったくの初心者レベル
とおっしゃっているので、かなり敷居が高いかと思われます。
この回答への補足
遅れましてすみません
やはりAPIですか・・・
敷居が高いので自分で能力を高めて
挑戦してみたいと思います。
情報ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのVBAコードと数式につ...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
【VBA】 結合セルに複数画像と...
-
vbsでのwebフォームへの入力制限?
-
算術演算子「¥」の意味について
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vb.net(vs2022)のtextboxのデザ...
-
ダブルクリックで貼り付けた画...
-
VBAの「To」という語句について
-
VBAでユーザーフォームを指定回...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報