任何人,
我正在尝试在excel vba中创建一个程序,其中宏将在excel范围的工作簿基础上查找/循环表单。此外,在查找工作表名称后,程序将根据其他单元格区域上的给定文件名保存工作表。
我的主要问题是如何根据下面提供的图片中提供的teritory名称保存循环文件/工作表名称。
希望你能解决我的问题。
这是我最近关于宏的工作,我可以保存文件,但它根据我查找的工作表名称保存文件。谢谢。 sample picture here
Sub Save_Test()
Dim ws As Worksheet
Dim wb As Workbook
Dim c, b As Range
Dim rng, rng2 As Range
Dim mysheet As Worksheet
Dim LastRow, LastRow2 As Integer
Dim file_name As String
LastRow = Range("I" & rows.Count).End(xlUp).row
Set rng = Range("J5:J" & LastRow)
Set ws = Worksheets("Control")
For Each c In rng
Sheets(c.Value).Select
Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Application.DisplayAlerts = False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
ActiveSheet.Name = c.Value
Application.CutCopyMode = False
ActiveWindow.DisplayGridlines = False
TemplateLocation = ThisWorkbook.Path
file_name = c.Value
ActiveWorkbook.SaveAs Filename:=TemplateLocation & "\" & "Reports" & "\" & Format(Now() - 1, "mmyy") & " " & file_name & " Hustle Board thru " & Format(Now() - 1, "mm-dd-yy"), FileFormat:=51, CreateBackup:=False
Application.DisplayAlerts = False
ActiveWindow.Close
Next
Sheets("Control").Select
End Sub
答案 0 :(得分:0)
你必须填写你需要做的其他事情,但是不用你的照片和你的代码,这应该可以让你获得teritory
栏中的价值
Dim r As Range
Dim rng As Range
Dim LastRow As Long
Dim ws As Worksheet
LastRow = Range("I" & Rows.Count).End(xlUp).Row
Set rng = Range("J5:J" & LastRow)
For Each r In rng
file_name = r.Offset(, -1)
ActiveWorkbook.SaveAs Filename:=TemplateLocation & "\" & "Reports" & "\" & Format(Now() - 1, "mmyy") & " " & file_name & " Hustle Board thru " & Format(Now() - 1, "mm-dd-yy"), FileFormat:=51, CreateBackup:=False
Next r
End Sub
顺便说一句,如果您还不知道,在下面声明如下变量并不是一种好习惯。
Dim rng, rng2 As Range
在这种情况下,rng
此时不是。您需要在下面执行此操作以明确声明为Range
变量。
Dim rng as Range, rng2 As Range