【问题标题】:Saving a worksheet to new workbook and rename based on cell value将工作表保存到新工作簿并根据单元格值重命名
【发布时间】:2018-05-25 17:57:33
【问题描述】:

我还是 vba 的新手,我对如何将工作表复制到新工作簿并根据单元格值重命名新工作簿有疑问。我有一个工作表名称为“摘要”并且想复制工作表并导出到新工作簿,但我也希望根据单元格值命名新工作簿(在这种情况下,我希望它是根据到单元格 B3)。以下是我尝试过的代码:

Sub Sample2()

    Dim wksht As Summary
    Set wksht = ActiveSheet

    Dim path As String
    path = "C:\Desktop"

        wksht.Copy
        ActiveWorkbook.SaveAs filename:=path & wksht.Range(B3).Value & ".xlsx"
End Sub

我不断收到错误“用户定义类型未定义”。你们能帮我解决这个问题吗?

谢谢。

【问题讨论】:

  • 您的措辞 (I want it to be name according to cell B3) 与您的代码 (...& wksht.Range(B2)...) 不匹配。 wb 在哪里以及如何定义和初始化?
  • 这部分 'Range(B3).Value' ,应该是 'Range("B3").Value'
  • 你的 B3 细胞在哪里?在哪个工作表中?

标签: vba excel


【解决方案1】:
Dim wksht As Summary

是您错误的可能原因!类型“摘要”不是定义的类型。 你应该把它改成Dim wksht as WorkSheet

【讨论】:

    【解决方案2】:

    有几件事必须改变:
    1. 正如@PIT 提到的,wksht 必须定义为 WorkSheet 而不是“摘要”
    2. 假设您将从“摘要”工作表运行宏,您的代码将正常工作,否则您必须将 wksht 设置为“摘要”工作表。
    3. 您必须将 Range(B3).Value 更改为 Range("B3").Value

    总体而言,我建议您探索 Google,您的案例中有大量样本

    Sub Sample2()
    
        Dim wksht As WorkSheet
        Set wksht = ActiveSheet
    
        Dim path As String
        path = "C:\Desktop\"
    
            wksht.Copy
            ActiveWorkbook.SaveAs filename:=path & wksht.Range("B3").Value & ".xlsx"
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多