เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Results 1 to 4 of 4

Thread: macro ใช้ for...next

  1. #1
    noong101
    Guest

    macro ใช้ for...next

    สวัสดี ท่านอาจารย์ และทุก ๆ คนคะ

    คือว่าหนูจะทำให้ macro import ไฟล์ที่อยู่ใน D:\data ไฟล์นามสกุล .FMT คะ โดยที่แต่ละไฟล์ Import มาไว้ในแต่ละ sheets โดยตั้งชื่อ sheets = P1...P30

    รบกวนสอบถามเกี่ยวกับ macro ข้างล่างนี้คะ คือ ลองทำดู record macro และลองแก้ใช้ for...next ลองรันแล้วไม่สำเร็จ ไม่ทราบว่าหนูจะต้องแก้ยังไงคะ ช่วยหนูหน่อยนะคะ


    Enddata = Range("BB30").End(xlUp).Row

    For I = 1 To 30
    For J = 1 To Enddata

    Sheets("PI").Select
    Range("A1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;D:\data\" & Sheets("AIS_FTP").Cells(J, 53) & ".FMT", _
    Destination:=Range("A1"))
    .Name = ""
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = flase
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 1252
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
    End With

    Range("BB1").Select
    Columns("P:P").advancefilter Action:=xlFilterCopy, copytorange:=Range( _
    "BB1"), Unique:=True
    Range("BF1").Select
    Columns("Q:Q").AdvancedFilter Action:=xlFilterCopy, copytorange:=Range( _
    "BF1"), Unique:=True

    Next

    ขอรบกวนอีกอย่างได้ไหมคะ คือ อาจารย์พอจะมีวิธีให้เปิดไฟล์ มา import ใน excel เลยได้ไหมคะ (เพราะตอนนี้ใช้วิธี Copy ชื่อไฟล์ทีละไฟล์มาไว้ใน excel คะ)

    ช่วยหนูทีนะคะ

    ขอบพระคุณคะ

  2. #2
    noong101
    Guest

    ทำอะไรผิดกติกาหรือเปล่าคะ

    ขอโทษนะคะ คือหนูทำอะไรผิดกฎหรือเปล่าคะ หรืออธิบายโจทย์ไม่ละเอียดหรือเปล่าคะ

    คือตอนนี้ลองแก้แล้ว รู้สึกว่าจะติดที่ For J คะ

    With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;D:\data\
    " & Sheets("AIS_FTP").Cells(J, 53) & ".FMT", _

    Destination:=Range("A1"))
    ....................
    ...................
    ...................


    .Refresh BackgroundQuery:=False

    ที่ลองรันดูมันไม่เปิดไฟล์มา import คะ

    ขอบคุณกระทู้ข้างล่างนี้
    http://www.excelexperttraining.com/forums/showthread.php?t=2368
    พอดีทำงานคล้าย ๆ กัน ได้ลองนำ Code ในกระทู้มาลองปรับใช้

    ช่วยหน่อยค่ะ

  3. #3
    สมเกียรติ
    Guest
    ไม่ผิดกฏหรอกครับ เพียงแต่อ่านแล้วไม่เข้าใจว่า ต้องการอะไรจาก For next ว่าจากเดิมที่ว่าไม่สำเร็จนั้น อาการเป็นอย่างไร และที่ต้องการใหม่นั้นเป็นอย่างไร

    แฟ้ม fmt เพิ่งเคยเห็นคราวนี้เอง มาจากโปรแกรมอะไรครับ ควรแนบแฟ้มที่ทำแล้วมาด้วย จะได้ช่วยให้คนอื่นเขาเข้าใจง่ายขึ้น

    นอกจากนั้นควรแยกปัญหาเป็นข้อๆให้ชัดเจน อ่านแล้วสงสัยว่าติดปัญหา For next แล้วปัญหาเปิดแฟ้มล่ะ

  4. #4
    noong101
    Guest
    รายละเอียดคะ
    1. มีชีท P(1) ถึง P(30) คะ (จริง ๆ แล้วตอนแรกตั้งชื่อชีทเป็น P001.......P030 ทำไม่ได้ เลยนำของคุณอรวีร์มาใช้ ตามกระทู้ที่อ้างถึง) และชีทสุดท้าย AIS_FTP เป็นชีทที่ใส่ชื่อไฟล์ที่จะนำมา import คะ
    2. ต้องการ import ไฟล์ ใน D:\export\***.FMT (เป็น .txt ก็ได้คะ) มาไว้ในชีท ทีละชีทจนครบคะ โดยเปลี่ยนโค้ดตรงนี้ (สีแดง)
    With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;D:\data\" & Sheets("AIS_FTP").Cells(J, 53) & ".FMT", _
    Destination:=Range("A1"))
    เพื่อให้เปิดชื่อไฟล์ที่เรา Copyไว้ใน ชีท AIS_FTP คะ อยู่ที่ "BB1"
    3.แต่ละชีทต้องการดึงค่าที่ซ้ำ ๆ กันในคอลัมน์ P:P มาไว้ที่ BB1 และคอลัมน์ Q:Q มาไว้ที่ BF1
    ครั้งแรกลองแล้วรันไม่ได้เลย เข้าใจว่าติดตรงโค้ดที่ไม่ได้จัดย่อหน้า (ไม่แน่ใจว่าเข้าใจถูกหรือป่าวนะคะ เพราะลองแก้แล้วมาโครก็ยอมรันให้คะ)
    ลองครั้งที่สองใช้ For I โดยที่กำหนดชื่อไฟล์ตายตัว โอเคผ่าน มันก็ Import File ให้ครบทุกชีทโดยเป็นชื่อไฟล์เดียวกัน
    ลองครั้งที่สามใช้ For J ตัวนี้แหละ คือต้องการให้เปลี่ยนชื่อไฟล์
    ปัญหาคือ
    1. ไม่มีไฟล์ที่ import ทุก ๆ ชีทเลย
    2. ติด .Refresh BackgroundQuery:=False ไม่ทราบว่าเป็นเพราะอะไร
    3. ต้องการดึงค่าที่ซ้ำ ๆ กัน โค้ดนี้ก็ไม่ผ่านคะ
    ส่วนไฟล์ .FMT เป็นโปรแกรมของบริษัทฯ คะ นำมาให้ดูไม่ได้คะ เป็นความลับของบริษัทฯ ขอโทษด้วยนะคะอาจารย์ แต่สามารถเปลี่ยนใช้ไฟล์ .txt แทนก็ได้คะ

    ได้แนบไฟล์มาไว้พิจารณาด้วยคะ

Similar Threads

  1. Replies: 8
    Last Post: 19 Aug 2009, 14:08
  2. Personal Macro หาย
    By Krid in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 4 Jun 2008, 10:59
  3. สอบถามเรื่องสูตรใน macro
    By webtoo in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 18 Mar 2008, 13:03
  4. Security Macro
    By tung268173 in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 23 Nov 2007, 09:59
  5. ลบ Macro ไม่ได้ครับ
    By chinimon in forum Excel Expert Forum Library 2012 - 2007
    Replies: 3
    Last Post: 19 Oct 2007, 22:12

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •