【问题标题】:Excel Macro to save要保存的 Excel 宏
【发布时间】:2016-04-06 09:01:13
【问题描述】:

我知道我可能应该在 access 或 VB 中执行此操作,但我不知道如何使用。目前,我的表单末尾有一个提交按钮,用于保存和关闭工作簿,就像输入到某个单元格的内容一样。

我正在寻找一种能够做同样事情但将工作表从工作簿中分离出来的方法。因此,它只将工作表保存为自己的 excel 文件,并将名称输入到某个单元格中。下面是我目前正在使用的宏。

Sub Saveworkbook()
Application.DisplayAlerts = False
Dim dName$, vName$
    dName = Range("B8")
    vName = ActiveWorkbook.FullName
    ActiveWorkbook.SaveAs "W:\Test\" & dName
    ActiveWorkbook.SaveAs vName
    ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub

如果它可以添加日期和计算机用户来保存名称也很酷,但不是必需的。

提前致谢 山姆

【问题讨论】:

  • 您只想删除并保存活动工作表?

标签: vba excel macros


【解决方案1】:

类似的东西 -

Sub SaveSheet()

Dim wbkDashboard As Workbook
Dim wsTarget As Worksheet
Set wsTarget = Thisworkbook.worksheets("Sheet1")

Dim strFileName As String
strFileName = wsTarget.Range("B8").Value _
    & Format(Now, "ddmmyyyy") & "-" & Environ("username") & ".xlsx"

Set wbkDashboard = Workbooks.Add
wsTarget .Copy Before:=wbkDashboard.Sheets(1)

For intSheetCount = 2 To wbkDashboard.Sheets.Count
    wbkDashboard.Sheets(2).Delete
Next

wbkDashboard.SaveAs "W:\Test\" & wsTarget.Range("B8").Value  _
    & Format(Now, "ddmmyyyy") & "-" & Environ("username") & ".xlsx"

wbkDashboard.Close
wsTarget.Range("B8").Value= strFileName

Set wsTarget = Nothing
Set wbkDashboard = Nothing
End Sub

【讨论】:

  • 谢谢,但我收到以下错误:运行时错误'9':下标超出范围
  • 您可能希望将 ThisWorkbook.Sheets("Sheet1") 更改为 Application.ActiveSheet,只是为了检查您是否希望文件保存名称中的 range("B8") 中的值太正确?可能想要将 Range("B8").Value 更改为 Application.ActiveSheet.Range("B8").Value - 已更改以反映在代码中
  • 非常感谢,这已经奏效,但文件保存为 #060416-username 这很好,但希望单元格 B8 中的文本也使用该名称。然后当我打开它保存的文件时它是空白的并调用 sheet1 (2)
  • 再次更新 - 将“Sheet1”更改为工作簿中的相关工作表名称
【解决方案2】:

此代码将保存您在当前版本中创建的任何更改,然后它将仅将活动工作表保存为具有用户名和日期的新工作簿(归功于环境变量上的@Will)。

Sub Saveworkbook()
Application.DisplayAlerts = False
Dim Sheet1 As Worksheet
Dim dName$, vName$, sName$
    dName = Range("B8")
    vName = ActiveWorkbook.FullName
    sName = ActiveWorkbook.ActiveSheet.Name
    For Each Sheet1 In ActiveWorkbook.Sheets
    If Not Sheet1.Name = sName Then
    Sheet1.Delete
    End If
    Next Sheet1

    ActiveWorkbook.SaveAs "W:\Test\" & dName & "_" & Environ("username") & "_" & Format(Now, "ddmmyy") & "xlsx"
    ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub

【讨论】:

  • 再问一个问题。有没有办法阻止它保存初始表单。它似乎保存数据,然后导出填充表,但是当我再次打开表单时,所有数据仍然存在于最后一个条目中。谢谢
猜你喜欢
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
相关资源
最近更新 更多