3

我有一个当前未打开的 excel“Closed.Xls”。

请让我知道如何在这个封闭的 Excel 文件中添加新工作表。我知道如何在当前的 excel 中添加新工作表。

Dim WS as Worksheet
Set WS = Sheets.Add

请让我知道如何

  1. 使用 VBA 在封闭的 Excel 中添加新工作表,以及
  2. 获取添加的工作表的名称

注意:我不想重命名工作表。

谢谢

4

3 回答 3

10

像这样的东西会做你想做的事。不打开工作簿是不可能的,但是如果您关闭屏幕更新,它会出现未打开的外观。

Option Explicit
Sub Add_Sheet_ClosedBook()
    Dim bk As Workbook
    Dim sh As Worksheet
    Dim shName As String

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    Set bk = .Workbooks.Open _
    ("Path to Book.xls")
    End With

    With bk
        Set sh = .Sheets.Add
        shName = sh.Name
        .Save
        .Close
    End With

    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub
于 2012-07-13T11:20:26.477 回答
6

要获取工作表名称,请使用worksheet变量,即

Sub Added()
    Dim Wb As Workbook
    Dim ws As Worksheet

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .EnableEvents = False
    End With

    Set Wb = Workbooks.Open("c:\Temp\closed.xls")
    Set ws = Wb.Sheets.Add
    Debug.Print ws.Name
    Wb.Save
    Wb.Close

    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
        .EnableEvents = True
    End With
End Sub
于 2012-07-13T11:36:10.147 回答
4

可以使用 Microsoft.ACE.OLEDB.12.0 提供程序在不打开工作簿的情况下添加工作表:

set cn = new adodb.connection

with cn
   .provider = "Microsoft.ACE.OLEDB.12.0"
   .connectionstring = "Data Source=" & strSomeFilename & ";Extended Properties=""Excel12.0;"""
   .open
end with

set cmd = new adodb.command
cmd.activeconnection = cn
cmd.commandtext = "CREATE TABLE MySheet (ID char(255))"
cmd.execute

这会将标题“ID”添加到新工作表的单元格 A1。如有必要,您可能会找到一种删除/更改它的方法。

于 2012-07-13T15:16:45.293 回答