Page 1 of 1

VBA การเปิดไฟล์

Posted: Thu Sep 28, 2023 1:34 pm
by Jirawat namrach
สอบถามหน่อยครับ ต้องการเปิดไฟล์ชื่อตาม cell A1 แต่ถ้าไฟล์ตามชื่อนั้นเปิดอยู่แล้ว ไม่ว่าจะเป็นเปิดปกติ หรือ Read Only ก็ให้นำมาใช้งานเลย ต้องแก้ไข Code ยังไงครับ เพราะเวลาไฟล์นั้นเปิดปกติ ไม่ใช่ Read Only จะมี massage ขึ้นมา yes = ปิดแล้วเปิดใหม่ให้เป็น Read Only no = error

Code: Select all

Sub test()
Dim cbook As Workbook
Dim dbook As Workbook

Set dbook = ThisWorkbook
    With dbook.Worksheets("Sheet1")
    If Range("a1") > 0 Then
        Set cbook = Workbooks.Open("C:\Users\Lenovo\Desktop\book2.xlsx ", UpdateLinks:=False, ReadOnly:=True)
        .Range("a4") = cbook.Sheets("Sheet1").Range("A1").Value
        .Range("b4") = cbook.Sheets("Sheet1").Range("b1").Value
    End If
    End With
End Sub

Re: VBA การเปิดไฟล์

Posted: Thu Sep 28, 2023 3:55 pm
by puriwutpokin
ไม่ค่อยเข้าใจครับ
ลองใช้ตัวนี้ไว้ที่โค้ดดูครับ

Code: Select all

Application.DisplayAlerts = False

Re: VBA การเปิดไฟล์

Posted: Thu Sep 28, 2023 5:02 pm
by Jirawat namrach
ตอนนี้ก็ใช้แบบนี้อยู่ครับ แล้ว VBA จะปิดไฟล์ที่เปิดไว้แล้ว เปิดขึ้นมาใหม่แบบ Read Only (ReadOnly:=True) บางทีบางไฟล์มันใหญ่โหลดช้า กว่าจะเปิดได้ เลยอยากหาวิธีอื่นที่ไม่ต้องปิดแล้วเปิดใหม่ ถ้าเปิดอยู่ก็ดึงข้อมูลมาได้เลยครับ

Code: Select all

Application.DisplayAlerts = False
Application.DisplayAlerts = True

Re: VBA การเปิดไฟล์

Posted: Thu Sep 28, 2023 6:25 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

'Other code
With dbook.Worksheets("Sheet1")
    If Range("a1") > 0 Then
        On Error Resume Next
        Set cbook = Workbooks(.Range("a1").Value & ".xlsx")
        If cbook Is Nothing Then
            Set cbook = Workbooks.Open("\\Lbox\eds\EDS8\Book2.xlsx", UpdateLinks:=False, ReadOnly:=True)
        End If
        On Error GoTo 0
        .Range("a4") = cbook.Sheets("Sheet1").Range("A1").Value
        .Range("b4") = cbook.Sheets("Sheet1").Range("b1").Value
    End If
End With
'Other code

Re: VBA การเปิดไฟล์

Posted: Fri Sep 29, 2023 8:24 am
by Jirawat namrach
ขอบคุณครับอาจารย์