返回列表 上一主題 發帖

[發問] 自動產生資料夾

回復 1# PJChen
試試看
  1. Sub Ex()
  2. Set fdo = CreateObject("Scripting.FilesystemObject")
  3. With Workbooks.Open("P:\PJ-Home\NEDoc.xlsx")
  4.     With .Sheets("INV")
  5.        fs = Right(.[S8], 5) & "_" & .[Q8] & "_" & .[I8]
  6.        fd = "P:\Shipping Doc\NE-Logistics\" & fs
  7.        k = fdo.folderexists(fd)
  8.        ar = Split(fd, "\")
  9.        fn = ar(0)
  10.        For i = 1 To UBound(ar)
  11.        fn = fn & "\" & ar(i)
  12.           If fdo.folderexists(fn) = False Then fdo.createfolder fn
  13.        Next
  14.     End With
  15.     .SaveCopyAs fd & "\" & fs & ".xlsx"
  16.     .Close
  17. End With
  18. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 5# PJChen

1)  Excel的檔案名稱要用以下的方式存檔,請問該怎麼修改程式? (例:即:CI12-182_PO#4500055767)
       產生資料夾後,要原本的"NEDoc"以儲存格I8_PO#S8另存一個新的檔案名稱(即:CI12-182_PO#4500055767)置於資料夾"55767_TE_CI12-182"中
ANS1:這只是檔名規則問題,原本fs = Right(.[S8], 5) & "_" & .[Q8] & "_" & .[I8]檔名會是55767_TE_CI12-182
           fs = .[I8] & "-PO#" & "_" & .[S8]檔名就是CI12-182_PO#4500055767

2)  我若想將NEDoc打開後(因有時還要修改文件)再執行上述的巨集,請問要如何改? 是否改以下的程式:With Workbooks.Open("P:\PJ-Home\NEDoc.xlsx")
       改成 With Workbooks("P:\PJ-Home\NEDoc.xlsx") ,但它不能執行,請問問題出在哪裡?
ANS2:檔案已經開啟狀態只需使用視窗的Caption指定,改成With Windows("NEDoc.xlsx") 即可。

3)  若原"NEDoc"文件的存放位置及檔名為P:\PJ-Home\NEDoc,在執行後我不想覆蓋原檔名,
       只要它執行後儲存在新資料夾名稱及路徑為P:\Shipping Doc\NE-Logistics\55767_TE_CI12-182中,又該更改哪個部份?
ANS3:同目錄下不可有重複檔名,所以這部分無法了解你的邏輯。
學海無涯_不恥下問

TOP

回復 8# PJChen
這關乎到你的開檔動作
假設程式碼是在TEST.xlsm檔案內
如果以TEST.xlsm的程式碼開啟NEDoc.xlsx
NEDoc.xlsx與程式碼所在的檔案是同一個專案(Application)下的2個視窗
那麼,With Windows("NEDoc.xlsx")應該可以執行
如果,NEDoc.xlsx是以手動開啟後做修改
那麼要看你的TEST.xlsm開啟後是兩個EXCEL專案或是同一個專案
如果同一個專案With Workbooks("NEDoc.xlsx")應可成立
若非同一個專案那麼程式碼並無法跨專案取得EXCEL的活頁簿物件
學海無涯_不恥下問

TOP

        靜思自在 : 每天無所事事,是人生的消費者,積極、有用才是人生的創造者。
返回列表 上一主題