【问题标题】:VBA to add new sheet in a closed excel without opening & get the sheet name added?VBA在不打开的情况下在封闭的excel中添加新工作表并添加工作表名称?
【发布时间】:2015-12-04 10:01:19
【问题描述】:

我有一个 Excel “Closed.Xls”,目前没有打开。

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

Dim WS as Worksheet
Set WS = Sheets.Add

请告诉我怎么做

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

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

谢谢

【问题讨论】:

  • 为什么不直接打开它(通过 VBA),创建新工作表并关闭它?据我所知,您无法在不打开工作簿的情况下对其进行修改。
  • @Alexandre : 这张表不应该被告知。
  • @logan 然后关闭屏幕更新,打开文件,添加工作表,关闭它并再次打开屏幕更新
  • 你在这里问了一个非常相似的问题:stackoverflow.com/questions/11015691/… 原理是一样的。
  • @AlexandreP.Levasseur:我知道,但我想获取新添加的工作表的名称。这就是为什么发布一个新帖子(请删除)并请告诉我答案?

标签: vba excel


【解决方案1】:

这样的事情会做你想做的事。不打开工作簿是不可能的,但是如果你关闭屏幕更新,它就会看起来没有打开。

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

【讨论】:

  • 如何获取新创建的工作表名称?例如: sheet5 .. 我不想重命名工作表。
  • 我说,我不想透露我的名字。我只想获取新添加的工作表的名称..
【解决方案2】:

要获取工作表名称,请使用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

【讨论】:

    【解决方案3】:

    可以使用 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。如有必要,您可能会找到删除/更改它的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多