VBA ส่งข้อมูลเข้า Workbook อื่น ใน sheet "คะแนน1" ซึ่งลงข้อมูลไม่ครบ
Posted: Fri Feb 26, 2021 3:33 pm
เรียน อาจารย์ครับ ผมมีโค๊ด VBA แล้วเกิดปัญหาคือ ไฟล์ ดึงจปส.-2-2563-ม.4-1-SendMarkToPP5 - TEST.xlsm ข้อมูลในชีท จปสคะแนนสอบกลางภาค ส่งข้อมูลจากปุ่ม ส่งคะแนน Miterm2 เข้า ปพ.5 แล้วข้อมูลก็เข้า Workbook อื่น ใน Drive D:\ปพ.5\ปีการศึกษา2563\มัธยม\เทอม2\ม.4-1 ของ sheet "คะแนน1" ในแต่ละไฟล์ ซึ่งลงข้อมูลไม่ครบตามไฟล์ที่มีปัญหาคือ ไฟล์ ส31103-1.xlsm ในไฟล์นี้ ถ้าเราต้องการแก้ปัญหาโดยให้เช็คว่า ถ้า คอลัมภ์ AJ7 ได้ลงคะแนนไปแล้ว ก็ให้ข้ามมาคอลัมภ์มา AK7 โดยให้เช็ค Match ที่กำหนด แถว G3:AF3 ในชีท จปสคะแนนสอบกลางภาค ด้วย กระผมต้องปรับโค๊ดอย่างไรครับ
Module18
Module18
Code: Select all
Sub SendMarkMitterm2ToPP5_Click()
Dim p, directory As String, fileName As String
Dim sheet As Worksheet, j As Integer
Dim tempBook As Workbook, thsBook As Workbook
Dim bookStr As String, rw As Integer
Application.ScreenUpdating = False
p = Range("R1")
directory = Sheets(p).Range("D1").Value
fileName = Dir(directory & "*.xl??")
Set thsBook = ThisWorkbook
j = 7
Do While fileName <> ""
Set tempBook = Workbooks.Open(directory & fileName)
bookStr = VBA.Left(tempBook.Name, 6)
On Error Resume Next
With thsBook.Sheets(p)
rw = Application.Match(bookStr, .Range("G2:AF2"), 0) - 1
If Err <> 0 Then
MsgBox "File " & tempBook.Name & " not found in Rows 5."
Err = 0
Else
With tempBook.Sheets("คะแนน1")
.Range("AJ7:AJ62").Value = _
thsBook.Worksheets("จปสคะแนนสอบกลางภาค").Cells(6, j + rw).Resize(55, 1).Value
End With
End If
End With
'r = r + 1
'j = j + 1
tempBook.Close True
' tempBook.Close False
fileName = Dir()
Loop
Application.ScreenUpdating = True
MsgBox ("ส่งคะแนนเข้า ปพ.5 Directory " & Sheets(p).Range("D1").Value & " เรียบร้อยแล้วค่ะ")
End Sub