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