NeOmega
October 22nd, 2001, 10:50 AM
I need some code for saving one file in all the folders under a certain directory. I need it to save it in all the folders without me having to name those folders. Any help would be appreciated.
|
Click to See Complete Forum and Search --> : Saving Files NeOmega October 22nd, 2001, 10:50 AM I need some code for saving one file in all the folders under a certain directory. I need it to save it in all the folders without me having to name those folders. Any help would be appreciated. John G Duffy October 22nd, 2001, 11:20 AM Here is a simple routine that will find all the subFolders under a main folder. Assuming you know the starting point, this routine allow you to store your file in all its subfolders. THis routine does not take into account subfolders under the subfolders option Explicit private Sub Command1_Click() Dim strFolder as string Dim strtPoint as string strtPoint = "C:\VB Stuff" strFolder = Dir(strtPoint & "\*.*", vbDirectory) Do If strFolder <> "." And strFolder <> ".." then ' bypass system folders If GetAttr(strtPoint & "\" & strFolder) And vbDirectory = vbDirectory then ' This a Directory Debug.print strtPoint & "\" & strFolder & "\" ' print folder path and name End If End If strFolder = Dir ' get next in chain Loop Until strFolder = "" ' do it again End Sub John G michi October 22nd, 2001, 12:50 PM Please try this: In a new form, add one CommandButton. Then: ==== Option Explicit Private Const FO_COPY = &H2& 'Copies the files specified 'in the pFrom member to the 'location specified in the 'pTo member. Private Const FO_DELETE = &H3& 'Deletes the files specified 'in pFrom (pTo is ignored.) Private Const FO_MOVE = &H1& 'Moves the files specified 'in pFrom to the location 'specified in pTo. Private Const FO_RENAME = &H4& 'Renames the files 'specified in pFrom. Private Const FOF_ALLOWUNDO = &H40& 'Preserve Undo information. Private Const FOF_CONFIRMMOUSE = &H2& 'Not currently implemented. Private Const FOF_CREATEPROGRESSDLG = &H0& 'handle to the parent 'window for the 'progress dialog box. Private Const FOF_FILESONLY = &H80& 'Perform the operation 'on files only if a 'wildcard file name '(*.*) is specified. Private Const FOF_MULTIDESTFILES = &H1& 'The pTo member 'specifies multiple 'destination files (one 'for each source file) 'rather than one 'directory where all 'source files are 'to be deposited. Private Const FOF_NOCONFIRMATION = &H10& 'Respond with Yes to 'All for any dialog box 'that is displayed. Private Const FOF_NOCONFIRMMKDIR = &H200& 'Does not confirm the 'creation of a new 'directory if the 'operation requires one 'to be created. Private Const FOF_RENAMEONCOLLISION = &H8& 'Give the file being 'operated on a new name 'in a move, copy, or 'rename operation if a 'file with the target 'name already exists. Private Const FOF_SILENT = &H4& 'Does not display a 'progress dialog box. Private Const FOF_SIMPLEPROGRESS = &H100& 'Displays a progress 'dialog box but does 'not show the 'file names. Private Const FOF_WANTMAPPINGHANDLE = &H20& 'If FOF_RENAMEONCOLLISION is specified, 'the hNameMappings member will be filled 'in if any files were renamed. ' The SHFILOPSTRUCT is not double-word aligned. If no steps are ' taken, the last 3 variables will not be passed correctly. This ' has no impact unless the progress title needs to be changed. Private Type SHFILEOPSTRUCT hwnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAnyOperationsAborted As Long hNameMappings As Long lpszProgressTitle As String End Type Private Declare Sub CopyMemory Lib "KERNEL32" _ Alias "RtlMoveMemory" _ (hpvDest As Any, _ hpvSource As Any, _ ByVal cbCopy As Long) Private Declare Function SHFileOperation Lib "Shell32.dll" _ Alias "SHFileOperationA" _ (lpFileOp As Any) As Long Private Sub Form_Load() Command1.Caption = "Copy Files" End Sub Private Sub Command1_Click() Call CopyFiles("c:\samples\*.*", "C:\testfolder\") End Sub Private Sub CopyFiles(strFrom As String, strTo As String) Dim result As Long Dim lenFileop As Long Dim foBuf() As Byte Dim fileop As SHFILEOPSTRUCT lenFileop = LenB(fileop) ' double word alignment increase ReDim foBuf(1 To lenFileop) ' the size of the structure. With fileop .hwnd = Me.hwnd .wFunc = FO_COPY ' The files to copy separated by Nulls and terminated by two ' nulls .pFrom = strFrom .fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY .pTo = strTo & vbNullChar & vbNullChar .fFlags = FOF_SIMPLEPROGRESS Or FOF_NOCONFIRMATION Or _ FOF_NOCONFIRMMKDIR .lpszProgressTitle = "Your custom dialog string " & _ "appears here." & vbNullChar _ & vbNullChar End With ' Now we need to copy the structure into a byte array Call CopyMemory(foBuf(1), fileop, lenFileop) ' Next we move the last 12 bytes by 2 to byte align the data Call CopyMemory(foBuf(19), foBuf(21), 12) result = SHFileOperation(foBuf(1)) If result <> 0 Then ' Operation failed MsgBox Err.LastDllError 'Show the error returned from 'the API. Else If fileop.fAnyOperationsAborted <> 0 Then MsgBox "Operation Failed" End If End If End Sub ==== This function(CopyFiles) can automatically make a destination folder if there isn't. And, copy all the files and subfolders from the source folder. You will see the animation only if the source folder is heavy. HTH Regards, Michi codeguru.com
Copyright Internet.com Inc., All Rights Reserved. |