snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Sub Import()
Dim fileToOpen As Variant
Dim fileFilterPattern As String
Dim wsMaster As Worksheet
Dim wbTextImport As Workbook
'
Application.ScreenUpdating = False
If MsgBox("คุณต้องการนำเข้าผลการเรียน ใช่หรือไม่?", 36, "ยืนยันการนำเข้าผลการเรียน") = 6 Then
fileToOpen = Application.GetOpenFilename(Title:="เปิดไฟล์ .csv เพื่อนำเข้าข้อมูล", FileFilter:="Text Files (*.txt; *.csv),*.txt;*.csv")
End If
If fileToOpen = False Then
MsgBox "คุณไม่ได้เลือกไฟล์ที่จะนำเข้า", vbOKOnly + vbInformation, "ยกเลิกการนำเข้าข้อมูล"
Exit Sub
Else
Workbooks.Open Filename:=fileToOpen, UpdateLinks:=0, local:=True
Set wbTextImport = ActiveWorkbook
Set wsMaster = ThisWorkbook.ActiveSheet
wbTextImport.Worksheets(1).Range("A1:N45").Copy
Range("F" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
wbTextImport.Worksheets(1).Range("O1:P45").Copy
Range("U" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
wbTextImport.Worksheets(1).Range("Q1:AD45").Copy
Range("Z" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
wbTextImport.Worksheets(1).Range("AE1:AF45").Copy
Range("AO" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = False
wbTextImport.Close False
Range("F6").Select
MsgBox "นำเข้าคะแนนเรียบร้อยแล้ว"
End If
Application.ScreenUpdating = True
End Sub
You do not have the required permissions to view the files attached to this post.
ขอบคุณครับได้ผลตามต้องการแล้วครับ
ขอสอบถามเพิ่มเติมในกระทู้นี้
กรณีที่ต้องการเลือกช่วงข้อมูลที่จะคัดลอก จากคลอลัมน์ A ถึง คลอลัมน์ N
โดยให้เลือกถึงแถวสุดท้ายที่มีข้อมูล (ยึดข้อมูลของคลอลัมน์ A)
ต้องปรับโค๊ดนี้อย่างไรครับ
Sub ImPortToLastrows()
Dim fileToOpen As Variant
Dim fileFilterPattern As String
Dim wsMaster As Worksheet
Dim wbTextImport As Workbook
Dim rw As Long
Dim rg As Long
'
Application.ScreenUpdating = False
If MsgBox("คุณต้องการนำผลการเรียนจากห้อง 2 มาต่อท้ายห้อง 1 ใช่หรือไม่?", 36, "ยืนยันการนำผลการเรียนมารวมเป็นห้องเดียว") = 6 Then
fileToOpen = Application.GetOpenFilename(Title:="เปิดไฟล์ .csv เพื่อนำเข้าข้อมูล", FileFilter:="Text Files (*.txt; *.csv),*.txt;*.csv")
End If
If fileToOpen = False Then
MsgBox "คุณไม่ได้เลือกไฟล์ที่จะนำเข้า", vbOKOnly + vbInformation, "ยกเลิกการนำเข้าข้อมูล"
Exit Sub
rg = wsMaster.Range("B" & Rows.Count).End(xlUp).Row
If Range("B" & rg).Value = "" Then
MsgBox "ไม่มีนักเรียนให้นำเข้าคะแนน", vbOKOnly + vbInformation, "ยกเลิกการนำเข้าข้อมูล"
Exit Sub
End If
Else
Workbooks.Open Filename:=fileToOpen, UpdateLinks:=0, local:=True
Set wbTextImport = ActiveWorkbook
Set wsMaster = ThisWorkbook.ActiveSheet
With wbTextImport.Worksheets(1)
rw = .Range("a" & .Rows.Count).End(xlUp).Row
.Range("A1:N" & rw).Copy
wsMaster.Range("F" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
.Range("O1:P" & rw).Copy
wsMaster.Range("U" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
.Range("Q1:AD" & rw).Copy
wsMaster.Range("Z" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
.Range("AE1:AF" & rw).Copy
wsMaster.Range("AO" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
wbTextImport.Close False
Range("F6").Select
End If
Application.ScreenUpdating = True
MsgBox "นำเข้าคะแนนเรียบร้อยแล้ว"
End Sub
You do not have the required permissions to view the files attached to this post.