Page 1 of 1

With Application.FileSearch

Posted: Fri Sep 20, 2013 11:45 am
by ratthasart
ปัจจุบัน ผมใช้ Excel version 2010 โดยติดปัญหาที่ไม่สามารถใช้คำสั่งนี้ ตอน run macro ใน version นี้ได้ครับ ติดปัญหาตรง
With Application.FileSearch ครับ จะขึ้น Error

ผมเป็นไม่ใช่มืออาชีพ ด้าน VBA ครับ อาศัย ไฟล์ เก่า ที่ทำไว้แล้วปรับปรุงเอาครับ ยังไม่มีความรู้เรื่อง code มากนักครับ

ขอบคุณครับ
Sub Auto_open()

'
' IP IF Macro
' Macro edited 28/0813 by Ratthasart
' Saves for Infinity Import

Dim Y As Integer
Dim LotNo
Dim new_filename
Dim save_filename
LotNo = InputBox("What is the Lot Number?")
ChDrive "L:"
ChDir "L:\DATA_infinity_import\IF\"
With Application.FileSearch
.Filename = "i" & LotNo & ".xls"
.LookIn = CurDir()
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) = 0 Then
MsgBox prompt:="Lot was not found. You will be returned to InfinityQS.", Buttons:=vbExclamation
Application.Quit
Exit Sub
End If
Workbooks.OpenText Filename:=.Filename, _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1))
End With
ChDir "L:\DATA_infinity_import\IF\in process\"
save_filename = "L:\DATA_infinity_import\IF\in process\" & "i" & LotNo & ".xls"
With Application.FileSearch
.Filename = "L:\DATA_infinity_import\IF\in process\" & "i" & LotNo & ".xls"
.LookIn = CurDir()
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
Kill "L:\DATA_infinity_import\IF\in process\" & LotNo & ".xls"
End If

ActiveWorkbook.SaveAs Filename:=save_filename, FileFormat:=xlTextWindows
ChDir "L:\DATA_infinity_import\IF\"
Kill "i" & LotNo & ".xls"
Kill "IF_ip.xls"
save_filename = "L:\DATA_infinity_import\IF\IF_ip.xls"
ActiveWorkbook.SaveAs Filename:=save_filename, FileFormat:=xlTextWindows
ActiveWorkbook.Close SaveChanges:=False
Application.Quit
End With



End Sub

Re: With Application.FileSearch

Posted: Fri Sep 20, 2013 12:48 pm
by bank9597
:D ลองแนบไฟล์และระบุที่อยู่ของโค๊ดมาด้วยได้ไหมครับ เพื่อที่ท่านอื่นๆสามารถดาวน์โหลดไปทดสอบดูได้ จะสะดวกต่อการตอบคำถามมากขึ้นครับ

Re: With Application.FileSearch

Posted: Fri Sep 20, 2013 1:15 pm
by ratthasart
ขั้นตอนการทำงานคือ

1. ผมจะเตรียม data ไว้ใน folder ที่กำหนดไว้ เป็น ไฟล์ .xls ครับ
2. run macro โปรแกรม excel จะถูกเปิดโดยอัตโนมัติ ให้ระบุ ชื่อไฟล์ ที่เรา save ไว้ในข้อ 1 และ enter
3. macro จะทำการค้นหาข้อมูลใน folder ดังกล่าว ถ้าพบ ไฟล์ excel จะถูกปิด และ ไฟล์ ดังกล่าวจะถูก copy ไปไว้ในไฟล์ ที่เตรียมไว้ สำหรับ upload data ส่วนตัว ไฟล์ ต้นฉบับ จะถูกย้ายไปเก็บไว้ยังอีก folder นึง
4. ขั้นตอนจะจบเพียงเท่านี้ครับ แต่ติดปัญหา ตรง with Application.FileSearch ครับ มัน Error (แต่เป็นเฉพาะ Office 2007 ขึ้นไปครับ 2003 ยังคงใช้งานได้ปรกติดครับ

ขอบคุณครับ
IF_macro_ip.xls

Re: With Application.FileSearch

Posted: Fri Sep 20, 2013 9:01 pm
by snasui
:D ดูตัวอย่างที่นี่ครับ http://www.snasui.com/viewtopic.php?f=3&t=4645

สำหรับตัวอย่างอื่น ๆ ดูที่นี่ครับ :arrow: File Search

Re: With Application.FileSearch

Posted: Sat Sep 21, 2013 9:08 am
by ratthasart
ขอบคุณมากครับ อาจารย์ ผมลองนำไป run แล้ว ใช้ได้ แต่ผมไม่ทราบว่า จะนำไปแทนคำสั่ง with Application.FileSearch ตรงไหนครับ ถ้าสามารถแนะนำได้ ขอความกรุณาด้วยครับ

Re: With Application.FileSearch

Posted: Sat Sep 21, 2013 9:40 am
by snasui
:D สำหรับการใช้ Code VBA จำเป็นต้องปรับเองได้บ้าง (ดูกฎข้อ 5 ด้านบน :roll: ) ปรับแล้วติดตรงไหนอย่างไรค่อยสอบถามกันต่อครับ

Re: With Application.FileSearch

Posted: Mon Sep 23, 2013 11:10 am
by ratthasart
ขอบคุณสำหรับคำแนะนำครับอาจารย์
ตอนนี้ผมสามารถค้นหา และเปิดไฟล์ที่ต้องการได้แล้วครับตาม code ด้านล่าง

แล้วผมจะลองให้ macro สามารถทำในขั้นต่อไปได้ต่อไป ครับ

Code: Select all

Private Sub CommandButton1_Click()
'
'macro modify by ratthasart 23/09/2013
'
    Dim FilePath As String
    Dim FileName As String
    Dim wbFound As Workbook
        LotNo = InputBox("What is the Lot Number?")
        FilePath = "L:\Data_Infinity_Import\IF" 'add \IF
        FileName = Dir(FilePath & "\" & "i" & LotNo & ".xls") 'add & LotNo
    Do Until FileName = ""
        Set wbFound = Workbooks.Open( _
            FileName:=FilePath & "\" & FileName)
        FileName = Dir()
    Loop