【问题标题】:Close Excel file from Access vba从 Access vba 关闭 Excel 文件
【发布时间】:2014-02-15 16:14:13
【问题描述】:

我从 Access vba 创建了一个 excel xls 文件。

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 的代码 - 没有成功。救命!

【问题讨论】:

    标签: excel ms-access vba


    【解决方案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
    

    顺便说一句,找不到您初始化DskTp 变量的位置(它是全局变量吗?)。我已将它的初始化添加为 cmets(如果您不使用全局变量 - 取消注释 thouse 行)。

    【讨论】:

    • 谢谢。现在工作正常。是的,DskTp 是一个全球性的 - 已经使用了很长时间,而且效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多