Page 1 of 1
copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Sat Jul 07, 2012 11:08 pm
by Tawatnan
อาจารย์ครับผมเป็นน้องใหม่ครับ อยากรบสอบถามอาจารย์เรื่องการ copy file ไปลงที่ folder ที่ต้องการครับ ผมมีตัวอย่างที่ทำไว้แล้วแต่ยังไม่สำเร็จมาของคำแนะนำด้วยครับ
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Sun Jul 08, 2012 9:23 am
by snasui
ควร
Insert Module ขึ้นมาใหม่เพื่อวาง Code แทนการวางลงในชีท Line List Index
การ Copy ไฟล์จำเป็นจะต้องบอกตำแหน่งที่อยู่เดิมด้วยไม่เช่นนั้นโปรแกรมก็ไม่ทราบว่าไฟล์ต้นทางอยู่ที่ไหน ลองดูตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Sub TestFolder()
Dim tPath As String
Dim r As Range
Dim sPath As String
On Error Resume Next
tPath = "C:\Legacy\A\Package issued\PP\" '<== Target path
If Dir(tPath, vbDirectory) = vbNullString Then
MkDir "C:\Legacy\"
MkDir "C:\Legacy\A\"
MkDir "C:\Legacy\A\Package issued\"
MkDir "C:\Legacy\A\Package issued\pp\"
End If
sPath = "C:\" '<== Source path
For Each r In Sheets("line list index").Range("E2:E33")
FileCopy sPath & r & ".PDF", tPath & r & ".PDF"
Next r
End Sub
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Sun Jul 08, 2012 10:36 am
by bank9597
ไม่เคยเห็นโค๊ดแบบนี้เลยครับ
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Sun Jul 08, 2012 10:39 am
by snasui
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Sun Jul 08, 2012 8:16 pm
by Tawatnan
555... ขอคุณครับอาจารย์สำหรับคำแนะนำครับ ผมจะไปปรับปรุงและจะมารายงานผลให้ทราบในภายหลังนะครับผม
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Fri Jul 13, 2012 9:25 pm
by Tawatnan
อาจารย์ครับมาแจ้งผลครับ สามารถ copy ได้แล้วครับมาชื่อครับผมแต่มันมารวมกันอยู่ที่เดียวครับ ไปยอมเข้าไปตาม folderที่สร้างเอาไว้อะครับ ขอรบกวนอาจารญืช่วยดู code ส่วนที่ผมเขียนเพิ่มเติมหน่อยครับว่าผิดตรงใหนหรือเปล่าลองมาทั้งอาทิตย์แล้วครัยไม่ยอมเข้าไปอยู่เลยครับ
Sub Button62_Click()
Dim tPath As String
Dim r As Range
Dim s As Range
Dim sPath As String
On Error Resume Next
tPath = "C:\Legacy\B\Package issued\PP\" '<== Target path
If Dir(tPath, vbDirectory) = vbNullString Then
MkDir "C:\Legacy\"
MkDir "C:\Legacy\B\"
MkDir "C:\Legacy\B\Package issued\"
MkDir "C:\Legacy\B\Package issued\pp\"
End If
tPath = "C:\Legacy\B\Package issued\PP\"
For Each s In Sheets("line list index").Range("h2:h33")
MkDir tPath & s ' ChDir "C:\Legacy\b\Package issued\pp\"
Next s
sPath = "C:\Legacy\Marked up\P&ID\Copy of Piping EMC\" '<== Source path
For Each r In Sheets("line list index").Range("e2:ee")
FileCopy sPath & r, tPath & r
Next r
End Sub
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Fri Jul 13, 2012 10:25 pm
by snasui
ลองอธิบายมาใหม่ว่าต้องการจะทำอะไรครับ จากที่ดู Code
Code: Select all
For Each s In Sheets("line list index").Range("h2:h33")
MkDir tPath & s ' ChDir "C:\Legacy\b\Package issued\pp\"
Next s
เหมือนจะต้องการจะสร้าง Folder ตามค่าที่อยู่ในคอลัมน์ H แต่ในเมื่อคอลัมน์ H มีค่าเดียว (แต่ซ้ำ ๆ กัน) จึง
ไม่ควรสร้างซ้ำ ๆ สร้างแค่ครั้งเดียวก็เพียงพอ
ส่วน Code ด้านล่างอ้างอิง Range ไม่ถูกต้อง
Code: Select all
sPath = "C:\Legacy\Marked up\P&ID\Copy of Piping EMC\" '<== Source path
For Each r In Sheets("line list index").Range("e2:ee")
FileCopy sPath & r, tPath & r
Next r
เท่าที่ดูข้อมูลน่าจะเป็น Range("E2:E33") ครับ
สำหรับการวาง Code ให้เป็น Code จะได้อ่านง่าย ๆ ดูที่นี่ครับ
viewtopic.php?f=3&t=1187
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Sat Jul 14, 2012 8:26 pm
by Tawatnan
ครับอาจารย์คือผมต้องการที่จะ สร้าง folder จาก Column H(จิงๆแล้วมีหลาย folder) แล้ว copy file PDF จาก Column E ไปลงที่ folder h ที่สร้างเอาไว้ครับ จากโค้ดที่อาจารย์แนะนำผมสามารถสร้าง folder ได้แล้วครับและ สามารถ copy fileไปที่ targetได้แล้วครับ แต่อยากขอคำแนะนำเพิ่มเติมดังนี้ครับ
1. จะให้มันไปลงที่ folder ที่สร้างจาก คอลั่ม Hได้ไม่ครับ
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Sat Jul 14, 2012 8:50 pm
by snasui
ตัวอย่างด้านล่างเป็นการสร้าง Path แล้ว Copy File ไปวางเลย กรณีไม่ตรงกับความต้องการควรสร้างตัวอย่างมาให้เป็นตัวแทนของการใช้งานจริงครับ
Code: Select all
Sub Button62_Click()
Dim tPath As String
Dim s As Range
Dim sPath As String
On Error Resume Next
tPath = "C:\Legacy\B\Package issued\PP\" '<== Target path
If Dir(tPath, vbDirectory) = vbNullString Then
MkDir "C:\Legacy\"
MkDir "C:\Legacy\B\"
MkDir "C:\Legacy\B\Package issued\"
MkDir "C:\Legacy\B\Package issued\pp\"
End If
sPath = "C:\Legacy\Marked up\P&ID\Copy of Piping EMC\" '<== Source path
For Each s In Sheets("line list index").Range("h2:h33")
MkDir tPath & s
FileCopy sPath & s.Offset(0, -3), tPath & s & s.Offset(0, -3)
Next s
End Sub
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Sun Jul 22, 2012 9:01 pm
by Tawatnan
ครับอาจารย์....เดี่ยวผมจะแนบตัวอย่างไปให้ดูครับ ขอบคุณครับอาจาย์
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Sun Jul 22, 2012 11:09 pm
by Tawatnan
อาจารย์ครับผมเอาตัวอย่างที่ใช้งานจิรงมาให้อาจารย์ได้ดูครับผม I ตอนนี้จากที่อาจารย์ได้แนะนำครับ ผมสามารถสร้าง Folder ตามคอลัมน์ I และสามารถ copy มาไฟล์มาวางได้แล้วครับ แต่ไม่ทราบว่าเราสามารถ copy file ไปวางไว้ใน folder ที่เราสร้างขึ้นมาจากคอลัมน์ I ได้หรือไม่ครับ.
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Mon Jul 23, 2012 5:17 pm
by snasui
ลองปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Sub Button2_Click()
Dim tPath As String
Dim s As Range
Dim sPath As String
On Error Resume Next
sPath = "D:\New Folder\" '<== Source path
tPath = "C:\Legacy\B\Package issued\PP\" '<== Target path
For Each s In Sheets("Sheet1").Range("I2:I250")
If Dir(tPath & s, vbDirectory) = vbNullString Then
MkDir "C:\Legacy\"
MkDir "C:\Legacy\B\"
MkDir "C:\Legacy\B\Package issued\"
MkDir "C:\Legacy\B\Package issued\pp\"
MkDir "C:\Legacy\B\Package issued\pp\" & s
End If
FileCopy sPath & s.Offset(0, -3), tPath & s & "\" & s.Offset(0, -3)
Next s
End Sub
Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ
Posted: Sat Jul 28, 2012 11:01 pm
by Tawatnan
อาจารย์ครับได้สมความตั้งใจแล้วครับ ขอบคุณครับผม