VBA在关闭的excel中添加新工作表,而无需打开&;是否添加工作表名称?

VBA在关闭的excel中添加新工作表,而无需打开&;是否添加工作表名称?,vba,excel,Vba,Excel,我有一个excel“Closed.Xls”,当前未打开 请告诉我如何将新工作表添加到此已关闭的excel文件中。我知道如何在当前excel中添加新工作表 Dim WS as Worksheet Set WS = Sheets.Add 请让我知道怎么做 使用VBA在关闭的excel中添加新图纸,然后 获取添加的工作表的名称 注意:我不想重命名工作表 谢谢像这样的东西可以满足你的需要。不打开工作簿是不可能的,但如果关闭屏幕更新,则显示未打开 Option Explicit Sub Add_Shee

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

请告诉我如何将新工作表添加到此已关闭的excel文件中。我知道如何在当前excel中添加新工作表

Dim WS as Worksheet
Set WS = Sheets.Add
请让我知道怎么做

  • 使用VBA在关闭的excel中添加新图纸,然后
  • 获取添加的工作表的名称
  • 注意:我不想重命名工作表


    谢谢

    像这样的东西可以满足你的需要。不打开工作簿是不可能的,但如果关闭屏幕更新,则显示未打开

    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
    

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

    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
    

    可以使用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
    

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

    为什么不打开它(通过VBA),创建新工作表并关闭它?据我所知,如果不打开工作簿,您就不能修改它。@Alexandre:工作表不应该出现。@logan然后关闭屏幕更新,打开文件,添加工作表,关闭工作表,再打开屏幕更新。您在这里问了一个非常类似的问题:原理是一样的。@AlexandreP.Levasseur:我知道,但是我想得到新添加的工作表的名称。这就是为什么发布一个新的帖子(请删除下来),请让我知道答案?我如何才能得到新创建的工作表名称?例如:活页5。。我不想给这张纸重新命名。我说,我不想说出我的名字。我只想知道新添加的工作表的名称。。