Page 1 of 1

การ import ข้อมูลจากไฟล์ที่เปิดล่าสุด

Posted: Thu Dec 27, 2012 12:59 pm
by bank9597
:D สวัสดีเพื่อนสมาชิกทุกท่าน วันนี้ขอรบกวนเรื่องของการเขียนโค๊ด vba

โจทย์คือ

1. ไฟล์ Test จะเป็นไฟล์หลัก ใช้คัดลอกข้อมูลใน Sheet1 ของไฟล์ที่เปิดล่าสุด ตัวอย่างเช่น เปิดไฟล์ Test แล้ว ตามด้วยไฟล์ Book1 คำสั่งจะสั่งบันทึกข้อมูลในไฟล์ Book1 ชีท Sheet1 มาลงในชีท Database ไฟล์ Test

2. ปุ่มสัง Import ข้อมูลอยู่ในชีท Import ไฟล์ Test

ผมได้แนบไฟล์พร้อมโค๊ดมาด้วยแล้ว รบกวนปรับโค๊ดให้หน่อยครับ ขอบคุณครับ

Re: การ import ข้อมูลจากไฟล์ที่เปิดล่าสุด

Posted: Thu Dec 27, 2012 1:08 pm
by snasui
:D จากไฟล์ที่แนบมา ลองดูตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Sub Import_Data()
  Dim strName As String
  Dim rSource As Range
  strName = "Book1.xlsx"
  Windows(strName).Activate
  With Sheets("Sheet1")
  Set rSource = .Range("A2", .Range("F" & Rows.Count))
  End With
  rSource.Copy
  Windows("Test.xlsm").Activate
  Sheets("Database").Activate
  Range("A2").Select
  Selection.PasteSpecial Paste:=xlPasteValues
  Application.CutCopyMode = False
End Sub

Re: การ import ข้อมูลจากไฟล์ที่เปิดล่าสุด

Posted: Thu Dec 27, 2012 1:30 pm
by snasui
bank9597 wrote:ไฟล์ Test จะเป็นไฟล์หลัก ใช้คัดลอกข้อมูลใน Sheet1 ของไฟล์ที่เปิดล่าสุด ตัวอย่างเช่น เปิดไฟล์ Test แล้ว ตามด้วยไฟล์ Book1 คำสั่งจะสั่งบันทึกข้อมูลในไฟล์ Book1 ชีท Sheet1 มาลงในชีท Database ไฟล์ Test
สามารถปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub Import_Data0()
    With Workbooks(Workbooks.Count).Sheets("Sheet1")
            .Range("A2", .Range("F" & Rows.Count).End(xlUp)).Copy _
                Workbooks("Test.xlsm").Sheets("Database").Range("A2")
    End With
End Sub

Re: การ import ข้อมูลจากไฟล์ที่เปิดล่าสุด

Posted: Thu Dec 27, 2012 1:48 pm
by bank9597
snasui wrote:
bank9597 wrote:ไฟล์ Test จะเป็นไฟล์หลัก ใช้คัดลอกข้อมูลใน Sheet1 ของไฟล์ที่เปิดล่าสุด ตัวอย่างเช่น เปิดไฟล์ Test แล้ว ตามด้วยไฟล์ Book1 คำสั่งจะสั่งบันทึกข้อมูลในไฟล์ Book1 ชีท Sheet1 มาลงในชีท Database ไฟล์ Test
สามารถปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub Import_Data0()
    With Workbooks(Workbooks.Count).Sheets("Sheet1")
            .Range("A2", .Range("F" & Rows.Count).End(xlUp)).Copy _
                Workbooks("Test.xlsm").Sheets("Database").Range("A2")
    End With
End Sub
:shock: ทำไมโค๊ดถึงสั้นได้ขนาดนี้ ผมเขียนมาเสียยาวเลย

:thup: แสดงผลได้รวดเร็วมากครับ ขอบคุณอาจารย์มากครับ ผมจะเอาไปปรับใช้ต่อไปครับ