【问题标题】:VBA Error for saving a newbook in a specific path在特定路径中保存新书的 VBA 错误
【发布时间】:2019-07-17 12:07:10
【问题描述】:

我的 vba 编码是否有任何错误?我在工作簿的单元格 B4 上输入了文件位置,在单元格 B5 上输入了文件名。我想创建一个包含多个命名工作表的新工作簿。有人可以帮我检查一下吗?谢谢!

Sub AddNewWorkbook1()

Dim FiLe As String
Dim Filepath As String
Dim Period As String

Worksheets("Sheet1").Range("B4") = FiLe
Worksheets("Sheet1").Range("B5") = Filepath
Worksheets("Sheet1").Range("E2") = Period

'Adding New Workbook
Workbooks.Add

'Saving the Workbook
ActiveWorkbook.SaveAs FiLe & Filepath

'Add new sheets with colored tabs
Worksheets.Add().Name = Period & "DTH&TPD"
Worksheets(Period & "DTH&TPD").Tab.ColorIndex = 39
Worksheets.Add().Name = "DTH&TPD" & "Claims List"
Worksheets("DTH&TPD" & "Claims List").Tab.ColorIndex = 39
Worksheets.Add().Name = Period & "Accidental Claims"
Worksheets(Period & "Accidental Claims").Tab.ColorIndex = 33
Worksheets.Add().Name = "Accidental Claims List"
Worksheets("Accidental Claims List").Tab.ColorIndex = 33
Worksheets("Sheet1").Delete

结束子

【问题讨论】:

  • ActiveWorkbook.SaveAs Filepath & File ?
  • 我已经在单元格 B4 上输入了文件位置,该文​​件必须保存在该位置,并将其保存为单元格 B5 上的文件名。谢谢!

标签: excel vba


【解决方案1】:

在发布您的代码时,最好始终提供实际问题的描述。你有错误吗?如果是,它是什么,在哪一行?

也就是说,试试这个:

Sub AddNewWorkbook1()

    Dim FileName As String
    Dim FilePath As String
    Dim Period As String
    Dim wb As Workbook

    FilePath = Worksheets("Sheet1").Range("B4")
    FileName = Worksheets("Sheet1").Range("B5")
    Period = Worksheets("Sheet1").Range("E2")

    Set wb = Workbooks.Add() 'Adding New Workbook
    wb.SaveAs FilePath & FileName 'Save

    'Add new sheets with colored tabs
    AddSheetWithNameAndColor wb, Period & "DTH&TPD", 39
    AddSheetWithNameAndColor wb, "DTHTPD" & "Claims List", 39
    AddSheetWithNameAndColor wb, Period & "Accidental Claims", 33
    AddSheetWithNameAndColor wb, "Accidental Claims List", 33

    Application.DisplayAlerts = False 'turn off warning about delete
    wb.Worksheets("Sheet1").Delete
    Application.DisplayAlerts = True  'turn warnings back on
End Sub

'sub to add a sheet, name it, and change the tab colorindex
Sub AddSheetWithNameAndColor(wb As Workbook, sName As String, clr As Long)
    With wb.Worksheets.Add()
        .Name = sName
        .Tab.ColorIndex = clr
    End With
End Sub

【讨论】:

  • 非常感谢您的回复,它运行良好!下次我会改进我的描述。顺便问一下,我可以知道添加第二个子的目的是什么吗?
  • 第二个子项是避免一遍又一遍地编写相同的添加/名称/颜色代码:如果您有更多的工作表要添加,那么您的代码会变得冗长且更难以维护。您甚至可以从将一小段代码抽象为单独的方法并从您的主代码中调用它们中受益。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
相关资源
最近更新 更多