Board logo

標題: [發問] 用EXCEL匯集各檔案 [打印本頁]

作者: li_hsien    時間: 2013-12-8 19:35     標題: 用EXCEL匯集各檔案

請問各位大大

主要是不知這是否可行?

上來詢問一下


小弟想用一個EXCEL輸入檔案名稱
(附檔是.pdf)

就能將符合這些檔名的pdf檔匯集起來,放在同一個資料夾裡


EX:
有個資料夾F裡面全部都是pdf檔的資料夾

我只要在EXCEL輸入檔名AAA、BBB、CCC

就能將F資料夾裡檔名為AAA、BBB、CCC的檔案選取起來另外放在同一個資料夾裡


不確定是否超出EXCEL的能力範圍

小弟想問問可行性  

謝謝各位大大  :  )
作者: wl02353427    時間: 2013-12-8 23:45

回復 1# li_hsien


    應該是可以的,只是為什麼我一直失敗...:'(

有前輩可以幫忙一下嗎 ....
[attach]17016[/attach]

Dim i As Long
    With Worksheets("工作表1")
        For i = 1 To 4
            
            On Error Resume Next
            .Cells(i, 1).Hyperlinks.Delete
            On Error GoTo 0
            
            .Hyperlinks.Add Anchor:=.Cells(i, 1), Address:="EXAMPLE" & "\" & Left(Cells(i).Text, 11), TextToDisplay:=Left(.Cells(i, 1).Text, 1)

為什麼後面>>>Left(Cells(i).Text, 11)<<<都沒有顯示...
作者: Hsieh    時間: 2013-12-9 11:00

回復 1# li_hsien
樓主應該是想要將某些指定檔名的檔案移動到特定目錄內
假設檔名(不加副檔名)放置於工作表A欄
  1. Sub ex()
  2. Dim A As Range
  3. Set fds = CreateObject("Scripting.FileSystemObject")
  4. With Application.FileDialog(msoFileDialogFolderPicker)
  5. .Title = "選擇PDF原先資料夾"
  6. .Show
  7. ofd = .SelectedItems(1) & "\"
  8. End With
  9. With Application.FileDialog(msoFileDialogFolderPicker)
  10. .Title = "選擇PDF目的資料夾"
  11. .Show
  12. fd = .SelectedItems(1) & "\"
  13. End With
  14. With 工作表1 '輸入檔名的工作表
  15.   For Each A In .Range(.[A1], .[A1].End(xlDown))
  16.     fs = Dir(ofd & A & ".pdf")
  17.     If fs <> "" Then fds.movefile ofd & fs, fd & fs '移動檔案
  18.   Next
  19. End With
  20. End Sub
複製代碼

作者: li_hsien    時間: 2013-12-9 11:27

回復 3# Hsieh

是的 這是我想要的  呵呵

我也想到解決辦法
  1. Private Sub Add_Attachement_Click()

  2.     Dim path As String
  3.     Dim i As Integer, j As Integer
  4.         
  5.     path = ThisWorkbook.path + "\Report整理\"
  6.     i = 2
  7.     j = 2
  8.         
  9.     'On Error GoTo handlerr
  10.     On Error Resume Next
  11.    
  12.     While ActiveSheet.Cells(i, 1) <> ""
  13.         
  14.         
  15.         Call FileSystem.FileCopy _
  16.         (ThisWorkbook.path + "\Report\" & Cells(i, 1) & ".pdf" _
  17.         , path & Cells(i, 1) & ".pdf")
  18.         
  19.         If Err.Number = 53 Then
  20.             Cells(j, 3) = Cells(i, 1)
  21.             j = j + 1
  22.             Err.Number = ""
  23.         End If
  24.         
  25.         i = i + 1
  26.         
  27.     Wend

  28.     Exit Sub

  29. 'handlerr:
  30. '
  31. '    MsgBox Err.Number & vbCrLf & Err.Description

  32. End Sub
複製代碼
不過跟板大的語法相比 相距甚遠 哈哈

板大你的好深@@

我再來研究一下

謝謝  :  )
作者: li_hsien    時間: 2013-12-9 15:31

回復 3# Hsieh

想請問一下板大

fd = .SelectedItems(1) & "\"
這個用途是???

For Each A In .Range(.[A1], .[A1].End(xlDown))
這個是跑A欄裡面所以的儲存格吧?

fs = Dir(ofd & A & ".pdf")
If fs <> "" Then fds.movefile ofd & fs, fd & fs '移動檔案
這兩行我也就看不太懂了
是移動檔案的制式寫法嗎?
作者: Hsieh    時間: 2013-12-9 16:13

回復  Hsieh

想請問一下板大

fd = .SelectedItems(1) & "\"
這個用途是???

For Each A In .Ran ...
li_hsien 發表於 2013-12-9 15:31

fd = .SelectedItems(1) & "\"
會得到對話方塊中所選擇的資料夾目錄路徑字串,因為此字串要在後續使用時會連接檔名,所以要加上反斜線
A是對工作表中的儲存格做迴圈,就是取得檔名
fs = Dir(ofd & A & ".pdf")'完整檔名若不存在fs將會得到空白字串,否則fs就會傳回檔案名稱(有加副檔名)
If fs <> "" Then fds.movefile ofd & fs, fd & fs '利用FileSystemObject的MoveFile方法移動檔案(相關用法請參考Excel的CreateObject說明)
作者: li_hsien    時間: 2013-12-9 16:49

回復 7# Hsieh


    謝謝板大的解釋
   
   經過幾番測試

   清楚多了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)