2010-09-02 84 views
29

Tôi đã sử dụng phần sau mà không thành công. Các bảng tính hoạt động đóng cửa, thực sự, nhưng cửa sổ excel vẫn mở.Đóng ứng dụng Excel bằng VBA

Application.ActiveWindow.Close SaveChanges:=False 
ActiveWorkbook.Close SaveChanges:=False 

Đó là lệnh chấm dứt ứng dụng?

EDIT

Để nói thêm một chút: Trong sổ làm việc Sự kiện mở Tôi chạy macro. Tôi muốn chấm dứt ứng dụng khi macro đó kết thúc. Tôi cũng đã thử điều này mà không thành công.

Private Sub Workbook_Open() 
    Macro_MyJob 
    Application.Quit 
End Sub 

Tôi nên đặt ứng dụng này ở đâu.Qệnh lệnh?

Trả lời

44

Tôi nghĩ rằng vấn đề của bạn là nó đóng tài liệu gọi macro trước khi gửi lệnh để thoát khỏi ứng dụng.

Giải pháp của bạn trong trường hợp đó là không gửi lệnh để đóng sổ làm việc. Thay vào đó, bạn có thể đặt trạng thái "Đã lưu" của sổ làm việc thành true, sẽ phá vỡ bất kỳ thông báo nào về việc đóng một cuốn sách chưa được lưu. Lưu ý: điều này không lưu sổ làm việc; nó chỉ làm cho nó trông giống như nó được lưu lại.

ThisWorkbook.Saved = True 

và sau đó, ngay sau khi

Application.Quit 
4
Application.Quit 

Nên thực hiện thủ thuật.

+1

Tôi nên đặt nó ở đâu? – Brani

6

Để tránh thông báo Lưu nhanh chóng, bạn phải chèn những dòng

Application.DisplayAlerts = False 
ThisWorkbook.Save 
Application.DisplayAlerts = True 

Sau khi lưu công việc của bạn, bạn cần phải sử dụng này dòng để thoát khỏi ứng dụng Excel

Application.Quit 

Không chỉ đơn giản là đặt những dòng trong Private Sub Workbook_Open() trừ khi bạn đã làm một điều kiện kiểm tra chính xác, nếu không bạn có thể làm hỏng tập tin excel của bạn.

Vì mục đích an toàn, vui lòng tạo mô-đun để chạy. Sau đây là các mã tôi đặt:

Sub testSave() 
Application.DisplayAlerts = False 
ThisWorkbook.Save 
Application.DisplayAlerts = True 
Application.Quit 
End Sub 

Hy vọng nó sẽ giúp bạn giải quyết vấn đề.

+0

Có, mã trong Mô-đun hoạt động tốt hơn. –

1

Tôi đã thử một trình tự nhất định mà dường như làm việc như bạn có thể xem dưới đây:

ThisWorkbook.Saved = True 
Application.Quit 
Application.ActiveWindow.Close SaveChanges:=False 
ActiveWorkbook.Close SaveChanges:=False 
-2
Sub button2_click() 
' 
' Button2_Click Macro 
' 
' Keyboard Shortcut: Ctrl+Shift+Q 
' 
    ActiveSheet.Shapes("Button 2").Select 
    Selection.Characters.Text = "Logout" 
    ActiveSheet.Shapes("Button 2").Select 
    Selection.OnAction = "Button2_Click" 
    ActiveWorkbook.Saved = True 
    ActiveWorkbook.Save 
    Application.Quit 
End Sub 
2
Sub TestSave() 
Application.Quit 
ThisWorkBook.Close SaveChanges = False 
End Sub 

Điều này dường như làm việc cho tôi, Mặc dù trông giống như đang bỏ ứng dụng trước khi lưu, nhưng nó tiết kiệm ...

+0

Điều này cũng làm việc cho tôi. Tuy nhiên, bạn đang thiếu dấu hai chấm trước dấu bằng, như sau: SaveChanges: = False – pylund

Các vấn đề liên quan