2014-02-15 58 views
0

我從Access vba創建了一個excel xls文件。從Access vba關閉Excel文件

Private Sub ModifyXl() 

Dim XLapp As Excel.Application 
Dim xlWB As Excel.Workbook 
Set XLapp = New Excel.Application 
Dim xlSh As Excel.Worksheet 

Set xlWB = XLapp.Workbooks.Open(DskTp & "NHL Doctors.xls", , False) 
Set xlSh = xlWB.Sheets("NHLDocs") 

Cells.Select 
Selection.Font.Name = "Trebuchet MS" 
Rows("1:1").Select 
Selection.Font.Bold = True 
Range("A1").HorizontalAlignment = xlCenter 
Columns("A:A").EntireColumn.AutoFit 

xlWB.Save 
xlWB.Close 
XLapp.Quit 
Set XLapp = Nothing 

End Sub 

'Cells.Select'不起作用,但文件現在存在。我無法刪除它,因爲它表示它已經打開 - 但它不顯示爲打開。

我已經瀏覽了互聯網,試圖找到將關閉文件並退出excel的代碼 - 沒有成功。幫幫我!

回答

1

您的代碼無法正常工作,因爲您尚未激活工作表(添加xlSh.Activate)。但這不是解決問題的最佳方法。嘗試avoid using Select/Active statements,如下面的代碼:

Private Sub ModifyXl() 

    Dim XLapp As Excel.Application 
    Dim xlWB As Excel.Workbook 
    Set XLapp = New Excel.Application 
    Dim xlSh As Excel.Worksheet 
    'Dim DskTp as String 

    'DskTp = "C:\" 
    Set xlWB = XLapp.Workbooks.Open(DskTp & "NHL Doctors.xls", , False) 
    Set xlSh = xlWB.Sheets("NHLDocs") 

    With xlSh 
     .Cells.Font.Name = "Trebuchet MS" 
     .Range("1:1").Font.Bold = True 
     .Range("A1").HorizontalAlignment = xlCenter 
     .Range("A:A").EntireColumn.AutoFit 
    End With 

    xlWB.Close True 
    Set xlWB = Nothing 
    XLapp.Quit 
    Set XLapp = Nothing 

End Sub 

BTW,不能找到你初始化變量DskTp(它是一個全局變量?)。我已經將它初始化爲註釋(如果你沒有使用全局變量 - 取消註釋行)。

+0

謝謝。現在工作正常。是的DskTp是一個全球性的 - 已經使用了它的年齡和它的作品。 –