ファイル関連:プログレスバーを表示させファイルのコピー(CopyFile)

VB2008でプログレスバーを表示させながらコピーする実行例サンプルです。

ファイル関連へ



My.Computer.FileSystem.CopyFile を使うとプログレスバーを表示させながらコピーできます。
コピー中の「キャンセル」も実行可能です。
同じファイルが既に存在する場合は、メッセージダイアログが表示されます。

■実行画面
コピー元ファイルとコピー先フォルダーを指定しコピーボタンをクリックします。
コピーソフト画面

「コピーしています」のプログレスバー
「キャンセル」ボタンで中止できます。
コピー実行中のプログレスバー

既に同名のファイルが存在する場合、「ファイルの上書き確認」ダイアログが表示されます。
それぞれのファイルのサイズと更新日時も表示されています。
このフォルダには既にファイルが存在します

■実行コード

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ofd As New OpenFileDialog

With ofd
'タイトル
.Title = "開くファイルを選択してください"
'初期のファイル名
.FileName = ""
End With

'「ファイルを開く」ダイアログを表示。
If ofd.ShowDialog() = DialogResult.OK Then
'選択されたファイル名を表示
Label1.Text = ofd.FileName
End If

ofd.Dispose()

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim path As String
Dim fbd As New FolderBrowserDialog

fbd.Description = "フォルダ選択"
fbd.RootFolder = System.Environment.SpecialFolder.MyComputer
'初期フォルダ
path = Label2.Text
fbd.SelectedPath = path

If fbd.ShowDialog() = DialogResult.OK Then
Label2.Text = fbd.SelectedPath
End If

fbd.Dispose()

End Sub

Private Function MyCheck() As Boolean
MyCheck = False
If Label1.Text = "" Then
MsgBox("コピー元のファイルを指定してください。")
Exit Function
End If
If Label2.Text = "" Then
MsgBox("コピー先のフォルダを指定してください。")
Exit Function
End If
MyCheck = True
End Function

'コピー
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim sdir As String
Dim sfina As String

If MyCheck() = False Then
Exit Sub
End If
'コピー先フォルダ
sdir = Label2.Text
If Strings.Right(sdir, 1) <> "\" Then
sdir &= "\"
End If
'ファイル名のみの取り出し
sfina = IO.Path.GetFileName(Label1.Text)

On Error GoTo errexit

My.Computer.FileSystem.CopyFile(Label1.Text, sdir & sfina, FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing)

Exit Sub
ErrExit:
MsgBox("エラーが発生しました。" & vbNewLine & Err.Description)
End Sub


End Class


Visual Basic 2008 Express Edition実践入門