タイトル | ファイルをコピー・移動する |
対象言語 | 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. |