จาก จากไฟล์ที่แนบ
ที่ชีท Student ช่วงเซล B3:G3500 จากไม่ได้ล็อคเซลไว้ เพื่อให้ User สามารถกรอกข้อมูลเพิ่มที่ละคนได้
ส่วนเซลอื่นอื่นนั้น ล็อคเซลไว้ และทำการป้องกันชีท รหัสคือ 1234
จากไฟล์นี้ผมมีข้อสงสัยระหว่า 2 Code คือ
Code แรก (im_stu) นั้นสามารถรันและวางข้อมูลที่คัดลอกมาจากไฟล์ Name.xls ได้
Code: Select all
Sub im_stu()
Dim WB As Workbook
On Error Resume Next
Set WB = Workbooks("Name.xls")
If MsgBox("ต้องการนำเข้าข้อมูล", 36, "ยืนยันการนำเข้า") = 6 Then
If WB Is Nothing Then
MsgBox "ไฟล์ Name.xls ยังไม่ได้เปิด กรุณาเปิดไฟล์ก่อน", vbCritical, "กรุณาเปิดไฟล์"
Set WB = Nothing
On Error GoTo 0
Else
Windows("Name.xls").Activate
Range("B2:G1500").Select
Selection.Copy
Windows("pp5.xlsb").Activate
Sheets("Student").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' Call rank_stu
Range("B2").Select
MsgBox "นำเข้าเรียบร้อย "
End If
End If
End Sub
แต่อีก Code หนึ่ง (OpenSingleFile)
Code: Select all
Sub OpenSingleFile()
Dim Filter As String, Title As String
Dim FilterIndex As Integer
Dim Filename As Variant
On Error Resume Next
Filter = "Excel Files (*.xls),*.xls,"
FilterIndex = 3
Title = "Open Flie Name.xls"
ChDrive ("C")
ChDir ("C:\")
With Application
Filename = .GetOpenFilename(Filter, FilterIndex, Title)
ChDrive (Left(.DefaultFilePath, 1))
ChDir (.DefaultFilePath)
End With
If Filename = False Then
MsgBox "คุณไม่ได้เลือกไฟล์ ยกเลิกการนำเข้าข้อมูล"
Exit Sub
End If
ImportThisOne CStr(Filename)
End Sub
[code]
Sub ImportThisOne(sFileName As String)
Dim oBook As Workbook
Dim myBook As Workbook
Set myBook = ThisWorkbook
Workbooks.Open sFileName
Set oBook = ActiveWorkbook
myBook.Sheets("student").Range("B2:G3500").Clear
oBook.Worksheets(1).Range("B2:G3500").Copy
myBook.Sheets("student").Range("B2").PasteSpecial xlPasteValues
oBook.Close False
Set oBook = Nothing
End Sub
ไม่สามารถทำงานได้ ซึ่งตามจริงแล้วเซลที่ไม่ได้ถูกล็อค ถึงแม้ชีทจะมีการป้องกัน ก็ควรที่จะแก้ไข คัดลอกวางข้อมูลได้