Vba: ตรวจสอบว่าสมุดงานเปิดอยู่หรือไม่ (พร้อมตัวอย่าง)


คุณสามารถใช้ไวยากรณ์ต่อไปนี้ใน VBA เพื่อตรวจสอบว่าสมุดงานใดเปิดอยู่ในปัจจุบัน

 SubCheckWorkbookOpen ()

Dim resultCheck As Boolean
Dim wb As Workbook
Dim specific_wb As String
    
On Error Resume Next
specific_wb = InputBox("Check if this workbook is open:")
    
Set wb = Application.Workbooks.Item(specific_wb)
resultCheck = Not wb Is Nothing

If resultCheck Then
    MsgBox “Workbook is open”
Else
MsgBox “Workbook is not open”
End If
    
End Sub

เมื่อเรียกใช้แมโครนี้ กล่องป้อนข้อมูลจะปรากฏขึ้นโดยที่ผู้ใช้สามารถพิมพ์ชื่อของสมุดงาน Excel และแมโครจะสร้างกล่องข้อความพร้อมผลลัพธ์อย่างใดอย่างหนึ่งต่อไปนี้:

  • “ไฟล์เปิดอยู่”
  • “ไฟล์ไม่เปิด”

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: วิธีตรวจสอบว่าสมุดงานเปิดโดยใช้ VBA หรือไม่

สมมติว่าขณะนี้เรามีสมุดงานสองเล่มที่เปิดอยู่โดยมีชื่อต่อไปนี้:

  • my_workbook1.xlsx
  • my_workbook2.xlsx

สมมติว่าเราต้องการตรวจสอบว่าสมุดงานชื่อ my_workbook1.xlsx เปิดอยู่หรือไม่

เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:

 SubCheckWorkbookOpen ()

Dim resultCheck As Boolean
Dim wb As Workbook
Dim specific_wb As String
    
On Error Resume Next
specific_wb = InputBox("Check if this workbook is open:")
    
Set wb = Application.Workbooks.Item(specific_wb)
resultCheck = Not wb Is Nothing

If resultCheck Then
    MsgBox “Workbook is open”
Else
MsgBox “Workbook is not open”
End If
    
End Sub

เมื่อเราเรียกใช้แมโครนี้ กล่องจะปรากฏขึ้นโดยที่ฉันสามารถพิมพ์ my_workbook1.xlsx ลงในช่องป้อนข้อมูล:

เมื่อฉันคลิก OK มาโครจะสร้างกล่องข้อความต่อไปนี้:

แมโครแสดง “สมุดงานเปิดอยู่” อย่างถูกต้องเพื่อระบุว่าสมุดงานที่มีชื่อนั้นเปิดอยู่ในขณะนี้

ตอนนี้ สมมติว่าฉันพิมพ์ชื่อสมุดงานที่ไม่ได้เปิดอยู่ในปัจจุบัน:

เมื่อฉันคลิก OK มาโครจะสร้างกล่องข้อความต่อไปนี้:

แมโครแสดง “สมุดงานไม่ได้เปิด” อย่างถูกต้องเพื่อระบุว่าสมุดงานที่มีชื่อนั้นไม่ได้เปิดอยู่ในขณะนี้

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:

VBA: วิธีนับจำนวนแผ่นงานในสมุดงาน
VBA: วิธีแทรกหลายคอลัมน์
VBA: วิธีแทรกหลายบรรทัด

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *