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
:D ควร 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
:shock: ไม่เคยเห็นโค๊ดแบบนี้เลยครับ

Re: copy file ไปลงที่ folder ที่สร้างไว้ครับ

Posted: Sun Jul 08, 2012 10:39 am
by snasui
:D ดูเพิ่มเติมได้ที่นี่ครับ http://snasui.blogspot.com/2011/01/folder-vba.html

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
:lol: ลองอธิบายมาใหม่ว่าต้องการจะทำอะไรครับ จากที่ดู 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
:D ตัวอย่างด้านล่างเป็นการสร้าง 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
:D ลองปรับ 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
อาจารย์ครับได้สมความตั้งใจแล้วครับ ขอบคุณครับผม