Page 1 of 1

ขอรบกวน สอบถามเรื่องการใช้ excel หลายไฟล์ มาทำรายงานประจำวัน

Posted: Mon Aug 22, 2011 9:18 am
by moo_oun
พอดีหนูมาฝึกงาน แล้วหนูเพิ่งจะมาใช้ excel ค่ะ ที่เคยใช้มาเป็นแค่พื้นฐานทั่วไป
งานที่หนูต้องทำนี้ เหมือนจะต้องเขียน VBA ซึ่งหนูเคยเขียนมาบ้างแล้ว แต่เขียนใน access
รายละเอียดของที่หนูต้องทำนะค่ะ คือจะมีไฟล์ excel ทั้งหมด 3 ไฟล์ ซึ่งเป็นรายงานที่ดึงมาจาก SAP
แล้วหนูจะต้องทำรายงานวัตถุดิบที่ยังไม่ส่งมา(PO) โดยนำข้อมูลทั้ง 3 ไฟล์นี้มารวมกัน
ยกตัวอย่างชื่อไฟล์นะค่ะ A_22.8.2001.xls ทุกไฟล์จะเป็นชื่อรายงานพร้อมกับวันที่ ที่ดึงรายงานออกมาจาก SAP
และไฟล์ที่นำมาใช้จะมี
master.xls (ไฟล์นี้จะเก็บข้อมูลวัตถุดิบทั้งหมด ซึ่งนานๆครั้งจะดึงออกมา เพราะไม่ค่อยมีการเปลี่ยนแปลง ถ้าเปลี่ยนแปลงรายละเอียดค่อยดึงออกมาใหม่)
PR_22.8.2011.xls (ไฟล์นี้จะเก็บข้อมูลวัตถุดิบที่ได้สั่งซื้อไป มีข้อมูลต่างๆเช่นวันสั่งซื้อ จะดึงรายงานนี้ออกมาทุกวัน)
PO_22.8.2011.xls (ไฟล์นี้จะเป็นข้อมูลของวัตถุดิบที่ยังไม่ส่งมา จะดึงเป็นรายงานออกมาทุกวันค่ะ)

ทั้งสามไฟล์นี้มีข้อมูลที่เหมือนกันคือ รหัสวัตถุดิบ ซึ่งจะเป็นตัวเชื่อมข้อมูล
รายงานที่จะทำออกมาคือ ใช้รหัสวัตถุดิบ ในไฟล์ PO_22.8.2011 เป็นหลัก แล้วดึงข้อมูลคอลัมน์ต่างๆจากไฟล์อื่น
และรายงานนี้จะต้องทำทุกวัน สิ่งที่หนูคิดจะทำคือ

1. สร้าง POReport.xls เพื่อออกรายงานประจำวัน
2. เมื่อเลือกวันที่ที่ต้องการออกรายงาน โดยดึงข้อมูลมาจากชื่อไฟล์ที่มีวันที่ตรงกับที่เลือกไว้(ไฟล์ทั้งหมดเก็บไว้ที่ folder เดียวกัน)
3. แสดงข้อมูลรายงาน เช่น วัตถุดิบที่ยังไม่ส่งมามีทั้งหมด 5 ตัว (PO) ก็แสดงข้อมูลต่างๆแค่ 5 ตัวนี้

หนูคิดว่ามันจะต้องเขียน ด้วย VBA โดยอับดับแรกเขียนเพื่อให้ดึงข้อมูลจาก 3 ไปนี้มาเก็บไว้ที่ตัวแปรก่อน
จากนั้นก็ค่อยกำหนดว่าต้องการให้แสดงข้อมูลอะไร จึงอยากขอคำแนะนำว่าจะเขียนประมาณไหนได้บ้าง

ขอขอบคุณล่วงหน้านะค่ะ

Re: ขอรบกวน สอบถามเรื่องการใช้ excel หลายไฟล์ มาทำรายงานประจ

Posted: Mon Aug 22, 2011 5:44 pm
by snasui
:D เป็นการแนะนำที่ยากพอสมควรครับ ถ้าเคยเขียน VBA มาแล้วก็ลองเขียนมาก่อนตามที่เขียนมาเป็นข้อ ๆ นั่นแหละครับ ติดตรงไหนก็ค่อยมาถามกันต่อ

จะแนะนำได้ตรงประเด็นก็ต่อเมื่อเห็นไฟล์ เห็นการวางตำแหน่งข้อมูล เห็นสิ่งที่ต้องการจะทำ การบอกอย่างกว้าง ๆ ว่าให้ดึงข้อมูลจากไฟล์ A ยังไฟล์ B ตามเงื่อนไข C ไม่น่าจะเกิดประโยชน์อะไรสักเท่าไรครับ

Re: ขอรบกวน สอบถามเรื่องการใช้ excel หลายไฟล์ มาทำรายงานประจ

Posted: Tue Aug 23, 2011 9:25 am
by moo_oun
หนูเริ่มไม่ถูกค่ะ ขอเป็นการแนะนำการเขียนโค๊ด เรียกใช้ไฟล์ทั้งสามไฟล์ได้มั๊ยค่ะ
ที่หนูลองหาในอินเตอร์เน็ตดู ก็เป็นการเปิดไฟล์มาใช้งาน จากนั้นก็ปิด
แต่ปัญหามันอยู่ที่ว่า หนูไม่สามารถเขียนคำสั่งให้มันทำงานได้
ตัวอย่างโค๊ดนะค่ะ

Sub Button5_Click()
Dim cur As Integer
Dim actWBName As String
actWBName = ActiveWorkbook.Name
With Application.FileDialog(msoFileDialogOpen)
.Title = "Select File"
.AllowMultiSelect = False
.Show
Workbooks.Open (.SelectedItems(1))
cur = Workbooks.Count
Workbooks(cur).Activate

ในส่วนนี้คือต้องการ copy ข้อมูลในไฟล์ที่เปิดมาใส่ไว้
เช่น copy คอลัม A ทั้งหมดในไฟล์ที่เพิ่งเปิดนี้ มาใส่ไว้ในไฟล์ปัจจุบันค่ะ


Workbooks(cur).Close
Workbooks(actWBName).Activate
End With
End Sub

Re: ขอรบกวน สอบถามเรื่องการใช้ excel หลายไฟล์ มาทำรายงานประจ

Posted: Tue Aug 23, 2011 1:32 pm
by snasui
:D ส่งไฟล์มาด้วยครับจะได้ทดสอบได้ อีกอย่างการเขียน Code มันต้องอ้างอิง Object ต้องทดสอบ เขียนลอย ๆ ไม่ได้ครับ

Re: ขอรบกวน สอบถามเรื่องการใช้ excel หลายไฟล์ มาทำรายงานประจ

Posted: Tue Aug 23, 2011 8:10 pm
by snasui
:D อันนี้เป็นตัวอย่างการนำข้อมูลใน Sheet1 ของทุกไฟล์ที่เปิดขึ้นมาพร้อมกันมาวางใน Sheet1 ของ Book1

Code: Select all

Sub CopyValue()
Dim r As Range, lng As Long, rAll As Range
Dim i As Integer
lng = Rows.Count
For i = 2 To Workbooks.Count
    With Workbooks(i).Worksheets(1)
         Set rAll = .Range("A1", .Range("A" & lng).End(xlUp))
         Set r = Workbooks("Book1").Worksheets("Sheet1") _
            .Range("A" & lng).End(xlUp).Offset(1, 0)
        rAll.Copy
        r.PasteSpecial xlPasteValues
    End With
Next
Application.CutCopyMode = False
End Sub

Re: ขอรบกวน สอบถามเรื่องการใช้ excel หลายไฟล์ มาทำรายงานประจ

Posted: Wed Aug 24, 2011 8:39 am
by moo_oun
ขอบคุณค่ะ ^_^
หนูมีปัญหาใหม่แล้วตอนนี้ คือหนูเขียน code เพื่อcopy ข้อมูลจากคอลัมน์ A I K และ O
หนูต้องการแค่ 4 คอลัม แต่ว่ามันมาหมดเลยตั้งแต่คอลัม A ถึง O หนู กำหนด range ไม่ถูกรึป่าวค่ะ


Sub Openfile_Click()
Dim cur As Integer
Dim actWBName, a, b As String
actWBName = ActiveWorkbook.Name
With Application.FileDialog(msoFileDialogOpen)
.Title = "Select File"
.AllowMultiSelect = False
.Show
Workbooks.Open (.SelectedItems(1))
cur = Workbooks.Count
Workbooks(cur).Activate


a = Cells(1, 3).Value

Range("A:A,I:I,K:K,O:O").Select
Selection.Copy

Workbooks(cur).Close
Workbooks(actWBName).Activate
End With

Cells(4, 2).Value = a

Sheets("PO_overdue").Select
Columns("A:A").Select
ActiveSheet.Paste

End Sub

Re: ขอรบกวน สอบถามเรื่องการใช้ excel หลายไฟล์ มาทำรายงานประจ

Posted: Wed Aug 24, 2011 9:06 am
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub Openfile_Click()
Dim cur As Integer
Dim actWBName, a, b As String

actWBName = ActiveWorkbook.Name

With Application.FileDialog(msoFileDialogOpen)
    .Title = "Select File"
    .AllowMultiSelect = False
    .Show
    Workbooks.Open (.SelectedItems(1))
End With

cur = Workbooks.Count
Workbooks(cur).Activate

a = Cells(1, 3).Value

Range("A:A,I:I,K:K,O:O").Select
Selection.Copy

Workbooks(actWBName).Activate

Cells(4, 2).Value = a

Sheets("PO_overdue").Select
Columns("A:A").Select
ActiveSheet.Paste
Workbooks(cur).Close
End Sub

Re: ขอรบกวน สอบถามเรื่องการใช้ excel หลายไฟล์ มาทำรายงานประจ

Posted: Wed Aug 24, 2011 9:10 am
by moo_oun
ขอบคณมากค่ะ ได้แล้ว ^______^
เดี๋ยวเจอปัญหาจะมาขอรบกวนใหม่นะค่ะ

Re: ขอรบกวน สอบถามเรื่องการใช้ excel หลายไฟล์ มาทำรายงานประจ

Posted: Thu Aug 25, 2011 11:14 am
by moo_oun
หนูใสโค๊ดนี้ตอนที่ vlookup ไม่ได้ค่ะ มันไม่ให้ใส่
=If(Isna(Formula),"",Formula)

ตอนนี้หนูเลย ใช้ vlook up ธรรมดา
แต่ถ้าหาข้อมูลไม่เจอมันจะขึ้น #n/a แล้วหนูต้องการเปลี่ยนให้เป็นช่องว่างค่ะ

หนูแนบไฟล์ตัวอย่างไปด้วยนะค่ะ Vlookup อยู่ใน sheet report
การทำงานของ report คือคลิ๊กที่ปุ่มเพื่อเลือกไฟล์ แล้ว เขียน code copy ข้อมูลมาไว้ใน sheet ต่างๆ

ในsheet report จะเป็นคำสั่ง vlookup เพื่อแสดงข้อมูลจาก sheet ต่างๆค่ะ แต่หนูติดปัญหาตรงที่ว่าใส่เงื่อไข If ให้แสดงช่องว่าง
รบกวนช่วยดูหน่อยนะค่ะ

ขอบคุณค่ะ ^ ^

Re: ขอรบกวน สอบถามเรื่องการใช้ excel หลายไฟล์ มาทำรายงานประจ

Posted: Thu Aug 25, 2011 11:44 am
by moo_oun
ตอนนี้ได้แล้วนะค่ะ พอดีตอนแรกไม่ได้สังเกตว่า หน้า vlookup ไม่ต้องใส่ =