Page 1 of 1

ต้องการหาว่ามีไฟล์ที่ต้องการถูกเปิดอยู่หรือไม่

Posted: Sun Mar 04, 2018 10:18 am
by apinomon
สวัสดีครับ

คือว่าผมต้องการจะทราบว่ามีไฟล์ BBB.XLSX (ชื่อสมมติ) เปิดอยู่หรือไม่ โดยเขียดโค้ดในการค้นหาที่ ไฟล์ AAA.XLSM (ชื่อสมมติ) ครับ

ถ้าเปิดอยู่ให้แสดงกล่องข้อความว่า TRUE
ถ้าไม่ใช่ให้แสดงกล่องข้อความว่า False

ผมลองใช้โค้ด

Code: Select all

If ActiveWorkbook.Name = "BBB.xlsx" Then
MsgBox "True"
Else: MsgBox "False"
End If
ก็ไม่ได้ครับ

และลองใช้

Code: Select all

If OpenWorkbook.Name = "BBB.xlsx" Then
MsgBox "True"
Else: MsgBox "False"
End If
ก็ Error ครับ

รบกวนแนะนำด้วยครับ

Re: ต้องการหาว่ามีไฟล์ที่ต้องการถูกเปิดอยู่หรือไม่

Posted: Sun Mar 04, 2018 10:53 am
by puriwutpokin
apinomon wrote: Sun Mar 04, 2018 10:18 am สวัสดีครับ

คือว่าผมต้องการจะทราบว่ามีไฟล์ BBB.XLSX (ชื่อสมมติ) เปิดอยู่หรือไม่ โดยเขียดโค้ดในการค้นหาที่ ไฟล์ AAA.XLSM (ชื่อสมมติ) ครับ

ถ้าเปิดอยู่ให้แสดงกล่องข้อความว่า TRUE
ถ้าไม่ใช่ให้แสดงกล่องข้อความว่า False

ผมลองใช้โค้ด

Code: Select all

If ActiveWorkbook.Name = "BBB.xlsx" Then
MsgBox "True"
Else: MsgBox "False"
End If
ก็ไม่ได้ครับ

และลองใช้

Code: Select all

If OpenWorkbook.Name = "BBB.xlsx" Then
MsgBox "True"
Else: MsgBox "False"
End If
ก็ Error ครับ

รบกวนแนะนำด้วยครับ
ลองปรับเป็นโค้ดนี้ครับ รันตัวCheckStatus

Code: Select all

Function IsWorkBookOpen(Name As String) As Boolean
    Dim xWb As Workbook
    On Error Resume Next
    Set xWb = Application.Workbooks.Item(Name)
    IsWorkBookOpen = (Not xWb Is Nothing)
End Function
 Sub CheckStatus()
    Dim xRet As Boolean
    xRet = IsWorkBookOpen("BBB.xlsx")
    If xRet Then
        MsgBox "True"
    Else
        MsgBox "False"
    End If
End Sub

Re: ต้องการหาว่ามีไฟล์ที่ต้องการถูกเปิดอยู่หรือไม่

Posted: Sun Mar 04, 2018 10:56 am
by snasui
apinomon wrote: Sun Mar 04, 2018 10:18 am คือว่าผมต้องการจะทราบว่ามีไฟล์ BBB.XLSX (ชื่อสมมติ) เปิดอยู่หรือไม่ โดยเขียดโค้ดในการค้นหาที่ ไฟล์ AAA.XLSM (ชื่อสมมติ) ครับ

ถ้าเปิดอยู่ให้แสดงกล่องข้อความว่า TRUE
ถ้าไม่ใช่ให้แสดงกล่องข้อความว่า False
:D สามารถ Loop เข้าไปยังไฟล์ทุกไฟล์ที่เปิดอยู่แล้วตรวจสอบว่าเป็นไฟล์ที่ต้อการหรือไม่ตามตัวอย่าง Code ด้านล่างครับ

Code: Select all

Dim wb As Workbook
For Each wb In Workbooks
    If wb.Name = "BBB.xlsx" Then
        MsgBox "True"
        Exit Sub
    End If
Next wb
MsgBox "False""

Re: ต้องการหาว่ามีไฟล์ที่ต้องการถูกเปิดอยู่หรือไม่

Posted: Sun Mar 04, 2018 1:54 pm
by apinomon
ขอบคุณมากครับ
แก้ไขโค้ดตามแล้วทำได้เลยครับ
:D