2017-04-06 63 views
1

我已經發現如何使用VBA將文件夾中的所有文件複製到另一個文件夾。僅複製文件夾VBA的第一個文件

我無法找到的唯一的事情是,我只能移動文件夾的前三項。

我每個項目拍攝三張照片,每個項目使用Excel工作表創建另一個文件夾。所以它應該移動(或複製)三張圖片,然後移動到下一張圖片並執行相同的操作(但使用另一個文件夾)。

我找不到的唯一方法是如何從文件夾中僅選擇三個第一項。

我現在使用.copyfile方法。

Dim ESN, FromPath, ToPath, LastRow, PN, FileToCopy, MyFile, i, k,  NumberOfFiles As Integer, Module 
LastRow = ActiveWorkbook.ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row + 1 
NumberOfFiles = InputBox("How many parts do you want to enter?", "# of parts?") 

Dim FSO As Object 
Set FSO = CreateObject("scripting.filesystemobject") 
'Select all files 
FileToCopy = "*.*" 


ESN = ActiveWorkbook.ActiveSheet.Range("A1").Value 
ESN = Right(ESN, 6) 
For k = NumberOfFiles To 1 Step -1 
'path toekennen 
Module = ActiveWorkbook.ActiveSheet.Range("B" & LastRow - k).Value 
PN = ActiveWorkbook.ActiveSheet.Range("G" & LastRow - k).Value 
FromPath = "D:\DCIM\100OLYMP\" 
ToPath = "U:\tmo\Checklist Engine Records\LEAP 1A\PHOTOS\" & Module & _ 
"\" & ESN & "_" & PN & "\" 
MyFile = Dir(FromPath & "\*.JPG") 

'folder creeeren als deze niet bestaat 
If FSO.folderexists(ToPath) = False Then 
FSO.createfolder ToPath 
End If 
    For i = 0 To 2 
    FSO.movefile Source:=FromPath & FileToCopy, Destination:=ToPath 
    MyFile = Dir 
    Next i 
Next k` 

謝謝! KawaRu。

+0

你只需要一個變量計數您添加多少個文件,也許在for循環 – Jbjstam

+0

使用DIR ()函數與文件夾路徑和文件類型循環三次在循環結束時使用空dir() –

+0

@Jbjstam我在想同樣的事情,但我不知道如何計算移動的項目。 – KawaRu

回答

0
myfile=dir("c:\yourpath" & "\*.jpeg") 
i=1 
for i = 1 to 3 
' your commands 
myfile=Dir 
next i 

這可能幫助你...在你的函數或子添加此代碼...

+0

你好,我已經嘗試過,但他一直在把所有的照片移動到第一個文件夾。 – KawaRu

+0

這是我的路徑取決於源文件夾.....你可以使用循環內的任何其他功能來複制....除了dir()函數,因爲它從頂部重置原始目錄() –

+0

我現在得到了這個'FSO.movefile源文件:= FromPath&FileToCopy,目標:= ToPath 後面跟myfile =目錄 – KawaRu