タイトル ファイルをコピー・移動する
対象言語 VB4.0, Access95以降
動作確認OS Windows95,98,NT4.0
使用関数 SHFileOpration
改築日 1999/04/21(1998/01/05)
Source Download

ファイル・フォルダをコピー・移動をします。


フォルダの場合、コピー元のフォルダ内のサブフォルダも全て
コピー・移動出来ます。
設定によっては処理中のダイアログ表示や上書き確認
等も表示ができます。

また、この関数はファイル削除やごみ箱移動、ファイル名
変更などの機能をもった高機能関数です。

1. フォームを作成しテキストボックス(Text1,Text2)とコマンドボタン(Command1)を貼り付けてください。


Private Sub Command1_Click()

'ファイルをコピーします

   Call Y_FileCopy(Me.hWnd, Text1, Text2, FO_COPY)

End Sub

Private Sub Form_Load()

   Open App.Path & "\test.txt" For Output As #1
   Close #1
   Text1 = App.Path & "\test.txt"
   Text2 = App.Path & "\Folder\test.txt"

End Sub



3.モジュールウインドウを作成し、下のソースを入力してください。


'ファイル操作
Declare Function SHFileOperation Lib "shell32.dll" (lpFileOp As SHFILEOP) As Long

Type SHFILEOP
   hWnd As Long 'オナーウィンドウのハンドル
   wFunc As Long '実行コマンド
   pFrom As String '操作元ファイル名等
   pTo As String '操作先ファイル名等
   fFlags As Integer '処理フラグ
   fAnyOperationsAborted As Long '処理中にキャンセルした時1がセットされる
   hNameMappings As Long 'ファイル名マッピングオブジェクトハンドル
   lpszProgressTitle As String 'ダイアログのタイトル名(FOF_SIMPLEPROGRESS指定時)
End Type

'WFuncの設定値
Public Const FO_COPY = &H2 'コピー
Public Const FO_MOVE = &H1 '移動

'fFlagsの設定値
Public Const FOF_ALLOWUNDO = &H40 'ごみ箱へ
Public Const FOF_NOCONFIRMATION = &H10 '上書き確認せずに実行
Public Const FOF_SILENT = &H4 '進行状況ダイアログを表示しない
Public Const FOF_RENAMEONCOLLISION = &H8 'コピー〜をつけてコピー
Public Const FOF_SIMPLEPROGRESS = &H100 'ダイアログにファイル名を表示しない
Public Const FOF_FILESONLY = &H80 'ワイルドカード使用時ディレクトリを含めない
Public Const FOF_MULTIDESTFILES = &H1 '複数の異なるディレクトリを指定する
Public Const FOF_NOCONFIRMMKDIR = &H200 'ディレクトリ作成時確認しない
Public Const FOF_NOERRORUI = &H400 'エラー時ダイアログを表示しない
'Public Const FOF_WANTMAPPINGHANDLE = &H20
'Public Const FOF_CONFIRMMOUSE = &H2


Public Sub Y_FileCopy(hWnd As Long, FromFile As String, ToPath As String, Sw As Integer)

'*******************************************************************
'機能 : SHFileOperation関数を呼び出し、ファイルのコピー・移動をする
'引数 : hWnd = オーナーウインドウのハンドル
'    FromFile = コピー・移動元のフルパス名
'    ToPath = コピー・移動先のフルパス名
'    Sw    = 1:移動
'         = 2:コピー
'備考 : FromFileにフォルダを指定すると、その階層下のサブフォルダ
'     も処理対象になります。
'*******************************************************************

   Dim ShellOp As SHFILEOP
   Dim longret As Long
   Dim Func As Long
   Dim Flg As Integer

   If FromFile = vbNullString Or FromFile = vbNullString Then
     Exit Sub
   End If

   If Sw = 1 Then
     Func = FO_MOVE '移動
   Else
     Func = FO_COPY 'ファイルコピー
   End If
   Flg = 0
  ' flg = flg + FOF_SILENT '進行状況ダイアログを表示しない
  ' flg = flg + FOF_NOCONFIRMATION '上書き確認しない
  ' flg = flg + FOF_RENAMEONCOLLISION 'ファイル名に"コピー〜"を付ける

   With ShellOp
     .hWnd = hWnd
     .wFunc = Func
     .pFrom = FromFile
     .pTo = ToPath
     .fFlags = Flg
     .fAnyOperationsAborted = 0
   End With

'ファイル操作
   longret = SHFileOperation(ShellOp)

End Sub





Copyright (C)1997-2001 空耳工房 MY2Project All rights reserved.