snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Sub RecordToDatabase()
Dim sFilename As String
Dim rs As Range
Dim rt As Range
If Worksheets("Incomplete").Range("B14") = "" Then Exit Sub
With Worksheets("Temp")
.Range("A8:H42").Replace What:="#", Replacement:="="
Set rs = .Range("A8", .Range("H7").Offset(.Range("I7").Value, 0))
End With
sFilename = Application.GetOpenFilename("Excel Files (*.xls),*.xls", , _
"Select Excel Data File")
For i = 1 To Len(sFilename)
If Mid(sFilename, i, 1) = "\" Then
k = i + 1
End If
Next i
If Mid(sFilename, k, 8) <> "Database" Then
MsgBox "This file can't paste data. Please check file name."
Exit Sub
End If
Workbooks.Open Filename:=sFilename
Set rt = Workbooks("DatabaseWasteTrack2011.xls").Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
rs.Copy
rt.PasteSpecial xlPasteValues
Worksheets("Temp").Range("A8:H42").Replace What:="=", Replacement:="#"
Application.CutCopyMode = False
MsgBox "OK"
End Sub
มัน error ครับอาจารย์ มันขึ้นว่า COMPILE ERROR VARIABLE NOT DEFINE แล้วสีเหลืองก็ระบายจุดที่ ERROE ครบ คือตรง sub recordTodatabase จะเกี่ยวกับอะไรครับ ผมก็เปิดไฟล์ 2 ไฟล์แล้ว
Sub RecordToDatabase()
Dim sFilename As String
Dim rs As Range
Dim rt As Range
If Worksheets("Incomplete").Range("B14") = "" Then Exit Sub
With Worksheets("Temp")
.Range("A8:H42").Replace What:="#", Replacement:="="
Set rs = .Range("A8", .Range("H7").Offset(.Range("I7").Value, 0))
End With
sFilename = Application.GetOpenFilename("Excel Files (*.xls),*.xls", , _
"Select Excel Data File")
For i = 1 To Len(sFilename)
If Mid(sFilename, i, 1) = "\" Then
k = i + 1
End If
Next i
If Mid(sFilename, k, 8) <> "Database" Then
MsgBox "This file can't paste data. Please check file name."
Exit Sub
End If
Workbooks.Open Filename:=sFilename
Set rt = Workbooks("DatabaseWasteTrack2011.xls").Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
rs.Copy
rt.PasteSpecial xlPasteValues
Worksheets("Temp").Range("A8:H42").Replace What:="=", Replacement:="#"
Application.CutCopyMode = False
Sub RecordToDatabase()
Dim sFilename As String
Dim i As Integer
Dim k As Integer
Dim rs As Range
Dim rt As Range
If Worksheets("Incomplete").Range("B14") = "" Then Exit Sub
With Worksheets("Temp")
.Range("A8:H42").Replace What:="#", Replacement:="="
Set rs = .Range("A8", .Range("H7").Offset(.Range("I7").Value, 0))
End With
sFilename = Application.GetOpenFilename("Excel Files (*.xls),*.xls", , _
"Select Excel Data File")
For i = 1 To Len(sFilename)
If Mid(sFilename, i, 1) = "\" Then
k = i + 1
End If
Next i
If Mid(sFilename, k, 8) <> "Database" Then
MsgBox "This file can't paste data. Please check file name."
Exit Sub
End If
Workbooks.Open Filename:=sFilename
Set rt = Workbooks("DatabaseWasteTrack2011.xls").Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
rs.Copy
rt.PasteSpecial xlPasteValues
Worksheets("Temp").Range("A8:H42").Replace What:="=", Replacement:="#"
Application.CutCopyMode = False
MsgBox "OK"
End Sub
เนื่องจากว่า ผมได้ลอง RUN MACRO ในบริษํทดูปรากฏว่า เกิด error ว่า RUN TIME ERROE "9" Subscript out of range ครับ
ผมไม่รู็ว่ามันจะเป็นการยุ่งยากสำหรับพนักงานที่จบเพียง ม 6 หรือไม่ กับการที่พวกเขาต้องไปเลือกไฟล์ให้ถูกต้อง
ผมปิ้งไอเดียว่า ใน Excel มี SAVE WORKPLACE อยู่ด้วยใช่ไหมครับ ผมลองแล้ว ก็ใช้ได้นะครับสำหรับเครื่องผม เพราะมันก็เปิดทั้ง 2 ไฟล์พร้อมกันเหมือนกัน ขอความเห็นอาจารย์ด้วยครับว่ามันจะแก้ปํญหาได้ไหมครับ
Sub RecordToDatabase()
Dim rs As Range
Dim rt As Range
If Worksheets("Incomplete").Range("B14") = "" Then Exit Sub
With Worksheets("Temp")
.Range("A8:H42").Replace What:="#", Replacement:="="
Set rs = .Range("A8", .Range("H7").Offset(.Range("I7").Value, 0))
End With
Set rt = Workbooks("DatabaseWasteTrack2011.xls").Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
rs.Copy
rt.PasteSpecial xlPasteValues
Worksheets("Temp").Range("A8:H42").Replace What:="=", Replacement:="#"
Application.CutCopyMode = False
MsgBox "OK"
End Sub