Page 1 of 1
การใช้ VBA.InStr(fileToOpen) ตรวจสอบชื่อไฟล์ก่อนนำเข้า
Posted: Wed Feb 25, 2026 1:40 pm
by tigerwit
จากโค๊ดนี้
เป็นการตรวจสอบชื่อไฟล์ที่จะนำเข้า("รับจ่าย_25-02-69") ว่าตรงกับที่เขียนไว้ใน เซล A8 หรือไม่
ถ้าตรงก็ในนำเข้า ถ้าไม่ตรงก็ยกเลิกการนำเข้า
ต้องการให้เปลี่ยนการตรวจสอบแค่ชื่อไฟล์แค่จากข้างหน้าไป 7 ตัว ("รับจ่าย") ถ้าใช่ก็ให้นำเข้า
Code: Select all
If VBA.InStr(fileToOpen, Range("A8").Value) = 0 Then
MsgBox "ไฟล์ที่นำเข้าไม่ใช่ไฟล์ " & Range("A8").Value & " โปรดตรวจสอบ !!", vbOKOnly + vbInformation, "กรุณาเลือกไฟล์ให้ถูกต้อง"
Exit Sub
End If
Re: การใช้ VBA.InStr(fileToOpen) ตรวจสอบชื่อไฟล์ก่อนนำเข้า
Posted: Wed Feb 25, 2026 3:23 pm
by snasui

ตัวอย่างการปรับ Code สังเกตได้ตามหมายเลขที่ผมเพิ่มเข้าไปครับ
Code: Select all
Sub ImportAct()
Dim fileToOpen As Variant
Dim fileFilterPattern As String
Dim wsMaster As Worksheet
Dim wbTextImport As Workbook
Dim folderPath As String
Dim fName As String '1. Declare fName variable
folderPath = "C:\TEST\CSV"
On Error Resume Next '
ChDrive Left(folderPath, 1)
ChDir folderPath
On Error GoTo 0
Application.ScreenUpdating = False
If MsgBox("คุณต้องการนำเข้า " & Range("A8").Value & " ใช่หรือไม่?", 36, "ยืนยันการนำบันทึกรับจ่ายเงิน") = 6 Then
fileToOpen = Application.GetOpenFilename(Title:="เปิดไฟล์ .csv เพื่อนำเข้าข้อมูล", FileFilter:="Text Files (*.txt; *.csv),*.txt;*.csv")
'2. Assign file name to fName
fName = VBA.Split(fileToOpen, "\")(UBound(VBA.Split(fileToOpen, "\")))
If fileToOpen = False Then
MsgBox "คุณไม่ได้เลือกไฟล์ที่จะนำเข้า", vbOKOnly + vbInformation, "ยกเลิกการนำเข้า" & Range("a16").Value
Else
If VBA.InStr(fileToOpen, Range("A8").Value) = 0 Then
MsgBox "ไฟล์ที่นำเข้าไม่ใช่ไฟล์ " & Range("A8").Value & " โปรดตรวจสอบ !!", vbOKOnly + vbInformation, "กรุณาเลือกไฟล์ให้ถูกต้อง"
Exit Sub
End If
'3. Check 1st 7 digit of fName
If VBA.Left(fName, 7) <> "รับจ่าย" Then
MsgBox "File name is incorrect. Please try again.", vbInformation
Exit Sub
End If
Workbooks.Open Filename:=fileToOpen, UpdateLinks:=0, local:=True
Set wbTextImport = ActiveWorkbook
Set wsMaster = ThisWorkbook.ActiveSheet
wsMaster.Range("C4:G1515,I4:I1515").ClearContents
wbTextImport.Worksheets(1).Range("A1:E1512").Copy
wsMaster.Range("C4").PasteSpecial xlPasteValues
wbTextImport.Worksheets(1).Range("F1:F1515").Copy
wsMaster.Range("H4").PasteSpecial xlPasteValues
Application.CutCopyMode = False
wbTextImport.Close False
Range("C4").Select
Application.ScreenUpdating = True
MsgBox "นำเข้าบันทึกรับจ่ายเงิน เรียบร้อยแล้ว !!", vbInformation
End If
End If
End Sub
Re: การใช้ VBA.InStr(fileToOpen) ตรวจสอบชื่อไฟล์ก่อนนำเข้า
Posted: Fri Feb 27, 2026 2:12 pm
by tigerwit
ได้แล้วครับ ขอบคุณมากครับ