Excel VBA使用短语、单元格引用和单元格中的日期命名新工作簿
我有以下生成新工作表的代码。我试图使用短语、单元格1中的内容和单元格2中的日期来命名新工作表。 单元格1将包含一些通过数据验证插入的数据(共4个选项),单元格2将有一个日期 例如: 工作表输入范围为C3。单元格1值=贸易活动、采购、销售…等 工作表输入范围C2。单元2值=2.11.2020 新工作簿的名称为“客户名称交易活动-2.11.2020” 单元格1和单元格2都将在输入工作表中Excel VBA使用短语、单元格引用和单元格中的日期命名新工作簿,excel,vba,Excel,Vba,我有以下生成新工作表的代码。我试图使用短语、单元格1中的内容和单元格2中的日期来命名新工作表。 单元格1将包含一些通过数据验证插入的数据(共4个选项),单元格2将有一个日期 例如: 工作表输入范围为C3。单元格1值=贸易活动、采购、销售…等 工作表输入范围C2。单元2值=2.11.2020 新工作簿的名称为“客户名称交易活动-2.11.2020” 单元格1和单元格2都将在输入工作表中 Private Sub CommandButton1_Click() Dim targetWorkbook As
Private Sub CommandButton1_Click()
Dim targetWorkbook As Workbook
Dim sourceSheet As Worksheet
Dim formatDate As String
Dim fileName As String
Set sourceSheet = ThisWorkbook.Worksheets("Sheet1")
If sourceSheet.AutoFilterMode Then sourceSheet.AutoFilterMode = False
If ThisWorkbook.Worksheets("INPUTS").Range("C3").Value <> vbNullString Then
formatDate = Format(Sheets("INPUTS").Range("C3"), "YYYY.MM.DD")
End If
fileName = "Name - " & ActivityName & formatDate
sourceSheet.Outline.ShowLevels ColumnLevels:=1
sourceSheet.Range("A:M").AutoFilter Field:=12, Criteria1:="<>0"
Set targetWorkbook = Workbooks.Add
sourceSheet.UsedRange.SpecialCells(xlCellTypeVisible).Copy targetWorkbook.Worksheets(targetWorkbook.Sheets.Count).Range("A1")
targetWorkbook.Sheets("sheet1").Columns("A:AC").EntireColumn.AutoFit
targetWorkbook.SaveAs ThisWorkbook.Path & "\" & fileName & ".xlsx", FileFormat:=51
End Sub
Private子命令按钮1\u单击()
将targetWorkbook设置为工作簿
将源表设置为工作表
将格式化日期设置为字符串
将文件名设置为字符串
设置sourceSheet=ThisWorkbook.Worksheets(“Sheet1”)
如果sourceSheet.AutoFilterMode,则sourceSheet.AutoFilterMode=False
如果此工作簿.Worksheets(“INPUTS”).Range(“C3”).值为vbNullString,则
formatDate=格式(表格(“输入”).范围(“C3”),“YYYY.MM.DD”)
如果结束
fileName=“Name-”&ActivityName&formatDate
sourceSheet.Outline.ShowLevels ColumnLevels:=1
sourceSheet.Range(“A:M”)。自动筛选字段:=12,标准1:=0
设置targetWorkbook=工作簿。添加
sourceSheet.UsedRange.SpecialCells(xlCellTypeVisible)。复制targetWorkbook.Worksheets(targetWorkbook.Sheets.Count)。范围(“A1”)
targetWorkbook.Sheets(“sheet1”)。Columns(“A:AC”)。EntireClumn.AutoFit
targetWorkbook.SaveAs ThisWorkbook.Path&“\”文件名&“.xlsx”,文件格式:=51
端接头
一些需要记住的事情:
Private Sub CommandButton1_Click()
Dim targetWorkbook As Workbook
Dim sourceSheet As Worksheet
Dim formatDate As String
Dim fileName As String
On Error GoTo CleanFail
Set sourceSheet = ThisWorkbook.Worksheets("Sheet1")
' Remove filter
If sourceSheet.AutoFilterMode Then sourceSheet.AutoFilterMode = False
If sourceSheet.Range("F1").Value <> vbNullString Then
formatDate = Format(sourceSheet.Range("F1").Value, "YYYY.MM.DD")
End If
' Set the new workbook file name
fileName = "NAME - " & formatDate
' Filter the fileNames
sourceSheet.Range("A:C").AutoFilter Field:=2, Criteria1:="<>"
' Add new workbook and set reference
Set targetWorkbook = Workbooks.Add
' Copy the visible fileNames in a new workbook
sourceSheet.UsedRange.SpecialCells(xlCellTypeVisible).Copy targetWorkbook.Worksheets(targetWorkbook.Sheets.Count).Range("A1")
' Save the new workbook
targetWorkbook.SaveAs ThisWorkbook.Path & "\" & fileName & ".csv", FileFormat:=xlCSV
CleanExit:
Exit Sub
CleanFail:
Select Case Err.Number
Case 1004
MsgBox "You cancel the process"
Resume Next
Case Else
' Do something else? handle it properly...
MsgBox "Something went wrong..."
Resume CleanExit
End Select
End Sub
Private子命令按钮1\u单击()
将targetWorkbook设置为工作簿
将源表设置为工作表
将格式化日期设置为字符串
将文件名设置为字符串
出错时转到CleanFail
设置sourceSheet=ThisWorkbook.Worksheets(“Sheet1”)
'卸下过滤器
如果sourceSheet.AutoFilterMode,则sourceSheet.AutoFilterMode=False
如果sourceSheet.Range(“F1”).Value为vbNullString,则
formatDate=格式(sourceSheet.Range(“F1”).Value,“YYYY.MM.DD”)
如果结束
'设置新工作簿文件名
fileName=“NAME-”格式日期(&F)
'筛选文件名
sourceSheet.Range(“A:C”)。自动筛选字段:=2,标准1:=“”
'添加新工作簿并设置引用
设置targetWorkbook=工作簿。添加
'复制新工作簿中的可见文件名
sourceSheet.UsedRange.SpecialCells(xlCellTypeVisible)。复制targetWorkbook.Worksheets(targetWorkbook.Sheets.Count)。范围(“A1”)
'保存新工作簿
targetWorkbook.SaveAs ThisWorkbook.Path&“\”文件名&“.csv”,文件格式:=xlCSV
清洁出口:
出口接头
清除失败:
选择案例错误编号
案例1004
MsgBox“您取消了流程”
下一步继续
其他情况
“做点别的吗?妥善处理。。。
MsgBox“出了点问题…”
恢复清除出口
结束选择
端接头
让我知道它是否有效谢谢里卡多!工作完美。我想我在尝试中丢失了.value。嗨,Ricardo,我意识到在保存报告并再次运行工具后,我收到一条消息来替换现有文件。当我点击“否”时,我得到了错误1004,应用程序定义的或对象定义的错误。此外,如果我在整个新报告窗口打开时运行该工具,则会出现错误9,主题超出范围。对这两个错误的思考?理想情况下,我想放一个消息框,说明关闭错误9打开的窗口。并找到错误1004的解决方案。嗨,我添加了错误1004的处理程序。另一个,我不知道怎么复制谢谢!似乎退出子系统正在阻止出现该错误!它可以工作。将
thiswoolk.Name
替换为Left(thiswoolk.Name,(InStrRev(thiswoolk.Name,“.”,-1,vbTextCompare)-1))