Imports file in1tableไม่ต้องเปลี่ยนชื่อ ทำอย่างไรค
กระทู้เก่าบอร์ด อ.Yeadram

 1,037   3
URL.หัวข้อ / URL
Imports file in1tableไม่ต้องเปลี่ยนชื่อ ทำอย่างไรค

สวัสดีครับ รบกวนสอบถามผู้รู้หน่อยครับ

ปกติ ผมใช้ คำสั่งด้านล่าง รัน modules ใน access แต่ว่า มันต้องเปลี่ยนชื่อไฟล์ ใน directory เสียก่อน เป็นค่า "1" ถึง "จำนวนไฟล์สุดท้ายที่มี"
แต่ว่าถ้าหากอยากจะให้มันดูดไฟล์ เข้า access โดยไม่ต้องเปลี่ยนชื่อเลยทำได้ไหมครับ โดยที่ดาต้าจากไฟล์ที่ import เข้ามาจะต้องอยู่ใน table เดียวกันทั้งหมด เหมือนอย่าง Code ด้านล่าง
ยกตัวอย่างเช่น
ไฟล์แรก ชื่อ CQ0006_DisputeReport_20130213083143.xls
ไฟล์สอง ชื่อ CQ0006_DisputeReport_20130625161514.xls
(YYYYMMDD)

(ตัวเลขแปดหลักแรกจะเป็นวันที่ ส่วนที่เหลือ จะเป็นเลขSerial ที่ทางระบบมัน gen ขึ้นมาเองเป็นค่าไม่ซ้ำกัน)
--------
Function Macro1()
On Error GoTo Macro1_Err

    ' 213.csv I'm bring this report to test running loop command.
    DoCmd.SetWarnings False
    'close warnings.
    DoCmd.OpenQuery "Query213D", acViewNormal, acEdit
    'delete data in table.
    
    Dim N As Integer
    'declare variable.
    For N = 1 To 6
    ' file name start with 01 till 06.
    
    DoCmd.TransferText acImportDelim, "213", "213X", "D:\Documents and Settings\KittipongB\Desktop\test\" & Format(N, "00") & ".CSV", False, ""
    'import csv file form file directory.
    DoCmd.TransferSpreadsheet acExport, 8, "QUERY213", "C:\DAILY\RESULT\213Q_TISCO_VALUE_" & Format(Date, "YYYYMMDD") & ".XLS", False, ""
    'export file form access to excle.
    Next N
    'run next value.
    
    
    DoCmd.OpenQuery "Query213D", acViewNormal, acEdit
    'delete data in table again.

Macro1_Exit:
    Exit Function

Macro1_Err:
    MsgBox Error$
    Resume Macro1_Exit

3 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R16475
วนลูปไฟล์ในโฟลเดอร์เลยดีไหมครับ ไม่จำเป็นต้องเปลี่ยนชื่อไฟล์ด้วย
อย่าลืมว่าต้องมีไลบรารี่ก่อนนะครับ microsoft scripting runtime

dim `FSO as filesystemobjects
dim fo as folder
dim fi as file

set fo = fso.getfolder("D:\Documents and Settings\.....")

for each fi in fo.file
if left(ucase(fi.name),6)="CQ0006" and right(ucase(fi.name),4)=".XLS" then

DoCmd.TransferText acImportDelim, "213", "213X", fi.name, ...
DoCmd.TransferSpreadsheet acExport, 8, "QUERY213", "C:\DAILY\RESULT\213Q_TISCO_VALUE_" & Format(Date, "YYYYMMDD") & ".XLS", False, ""
end if
next

set fo = nothing
set fso = nothing
2 @R16478
รบกวนช่วยอธิบายเพิ่มเติมหน่อยครับ
1.อย่าลืมว่าต้องมีไลบรารี่ก่อนนะครับ microsoft scripting runtime
(ผมต้องไปหาโปรแกมนี้มาลงก่อนหรือครับ)
1.1 ไลบรารี่ คืออะไรครับ

2.รบกวนช่วยอธิบาย คำสั่งนี้เป็นภาษาพูดได้ไหมครับ

for each fi in fo.file
if left(ucase(fi.name),6)="CQ0006" and right(ucase(fi.name),4)=".XLS" then

ปล.ขอบคุณมากครับ
3 @R16484
ตอนนี้เปิด library microsoft scripting runtime ได้แล้ว จะลองเขียนคำสั่งดู ขอบคุณครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2517s