Tắt ứng dụng Excel sau khi Access lấy dữ liệu từ Excel

  • Thread starter Deleted member 199
  • Ngày gửi
Trạng thái
Không mở trả lời sau này.
D

Deleted member 199

Guest
Kính mong các anh chị trên diễn đàn giúp đỡ.
Em có code như sau:
File access và excel để chung folder. file excel name: aaa.xlsx .
Mã:
''---------------------------------------
Sub Test1()    '(Khong thiet dinh tham chieu toi Excel)

Dim obj As Object

Set obj = CreateObject("Excel.Application") 'Tao doi tuong ung dung Excel'
obj.Application.Visible = True
Dim str1 As String

Dim i As Integer
Dim j As Integer

str1 = CurrentProject.Path & "\aaa.xlsx"

With obj.Workbooks.Open(str1)

    For i = 1 To 3

           For j = 1 To 3
                Debug.Print .Worksheets("Sheet1").Cells(i, j).Value
           Next j

    Next i

End With

obj.Quit
Set obj = Nothing

End Sub

''----------------------------------------------
'Tiep theo, co code nay: sau khi thiet dinh tham chieu toi Excel
'Em viet code nhu sau

Sub Test2()

Dim str1 As String

Dim i As Integer
Dim j As Integer

str1 = CurrentProject.Path & "\aaa.xlsx"


With Workbooks.Open(str1)

    For i = 1 To 3

        For j = 1 To 3
        Debug.Print .Worksheets("Sheet1").Cells(i, j).Value
           Next j

    Next i

End With

End Sub
''------------------------------------------------
Thủ tục TEST2 mặc dù không sử dụng CreateObject nhưng chương trình vẫn chạy.
Có lẽ là Excel Application vẫn còn lưu lại từ thủ tục trước.

Câu hỏi 1: Làm thế nào để tắt hoàn toàn Excel Application trong thủ tục TEST2.
Em đã thử End with , Excel.Application.Quit nhưng vẫn không có tác dụng.

Câu hỏi 2: Cách viết code của em ở TEST2 là không tốt đúng không?
Mặc dù không có CreateObject mà vẫn chạy.
 
T

thanhphong

Guest
Câu hỏi 1: Làm thế nào để tắt hoàn toàn Excel Application trong thủ tục TEST2.
Mở TaskManager vẫn thấy Excel Application còn nhỉ.
Khi bạn dùng
Mã:
Workbooks.Open
thì Application Excel sẽ được sinh ra.
Giá trị trả về của Workbooks.Open là Workbook Object.
Cha của Workbook là Application Excel.
Mã:
Sub Test3()

    Dim str1 As String
    str1 = CurrentProject.Path & "\aaa.xlsx"

    Dim app As Excel.Application
    Set app = New Excel.Application 'Tao Application excel

    With app.Workbooks.Open(str1)
        Dim i As Integer, j As Integer
        For i = 1 To 3
            For j = 1 To 3
                Debug.Print .Worksheets("Sheet1").Cells(i, j).Value
            Next j
        Next i
        .Close   'Close WorkBook
    End With
    app.Quit 'Thoat Applcation Excel

End Sub
CreateObject cũng được, New thì thường dùng phổ biến hơn.
Không khai báo, sử dụng With luôn cũng là một cách:
Mã:
Sub Test4()

    Dim str1 As String
    str1 = CurrentProject.Path & "\aaa.xlsx"

    With New Excel.Application
        With .Workbooks.Open(str1)

             'Bo qua cac buoc xu ly o day

            .Close   'Close WorkBook
        End With
        .Quit 'Thoat ung dung Excel
    End With
End Sub
Câu hỏi 2: Bạn có thể nhìn thấy ở đoạn code trên. Excel.Application được sinh ra tự động. Nên cần Quit.
Tôi nghĩ cách viết như TEST3 là ổn.
 
D

Deleted member 199

Guest
Em cảm ơn rất nhiều.
 
Trạng thái
Không mở trả lời sau này.
Top