VBA在封闭的Excel中添加新工作表而不打开并获取工作表名称?

log*_*gan 2 excel vba excel-vba

我有一个excel"Closed.Xls",目前尚未打开.

请让我知道如何将新工作表添加到此已关闭的Excel文件中.我知道如何在当前的Excel中添加新工作表.

Dim WS as Worksheet
Set WS = Sheets.Add
Run Code Online (Sandbox Code Playgroud)

请让我知道如何

  1. 使用VBA在已关闭的Excel中添加新工作表,和
  2. 获取已添加的工作表的名称

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

谢谢

Ali*_*eir 9

像这样的东西会做你想要的.没有打开工作簿是不可能的,但是如果你关闭屏幕更新它会给出不打开的外观.

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
Run Code Online (Sandbox Code Playgroud)


bre*_*tdj 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
Run Code Online (Sandbox Code Playgroud)


Exc*_*ers 5

使用 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
Run Code Online (Sandbox Code Playgroud)

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