将新创build的工作簿保存到特定的文件夹
我希望你能帮上忙。 我有一段代码。 实质上,它打开一个对话框,允许用户select一个Excel工作表,然后出口到国家栏(11)对其进行过滤,然后将该国家复制并粘贴到一个新的工作簿中,命名新的工作簿之后国家又重复下一个国家的行动,然后保存并closures每个工作簿。
我想改变的是这些新的工作簿正在被保存的地方。
目前,它们被保存在模板(被分割的原始工作簿)和macros存储在同一个文件夹中。 我希望新创build的工作簿现在可以保存在其他地方。 这里是C:\ Users \ CONNELLP \ Desktop \ Claire Macro \ CRO国家
任何帮助将不胜感激。
工作簿当前存储在哪里
原始模板的图片
我的代码
Sub Open_Workbook_Dialog() Dim my_FileName As Variant Dim my_Workbook As Workbook MsgBox "Pick your CRO file" '<--| txt box for prompt to pick a file my_FileName = Application.GetOpenFilename(FileFilter:="Excel Files,*.xl*;*.xm*") '<--| Opens the file window to allow selection If my_FileName <> False Then Set my_Workbook = Workbooks.Open(Filename:=my_FileName) Call TestThis Call Filter(my_Workbook) '<--|Calls the Filter Code and executes End If End Sub Public Sub Filter(my_Workbook As Workbook) Dim rCountry As Range, helpCol As Range Dim wb As Workbook With my_Workbook.Sheets(1) '<--| refer to data worksheet With .UsedRange Set helpCol = .Resize(1, 1).Offset(, .Columns.Count) '<--| get a "helper" column just at the right of used range, it'll be used to store unique country names in End With With .Range("A1:Y" & .Cells(.Rows.Count, 1).End(xlUp).Row) '<--| refer to its columns "A:Y" from row 1 to last non empty row of column "A" .Columns(11).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=helpCol, Unique:=True '<-- call AdvancedFilter on 11th column of the referenced range and store its unique values in "helper" column Set helpCol = Range(helpCol.Offset(1), helpCol.End(xlDown)) '<--| set range with unique names in (skip header row) For Each rCountry In helpCol '<--| iterate over unique country names range (skip header row) .AutoFilter 11, rCountry.Value2 '<--| filter data on country field (11th column) with current unique country name If Application.WorksheetFunction.Subtotal(103, .Cells.Resize(, 1)) > 1 Then '<--| if any cell other than header ones has been filtered... Set wb = Application.Workbooks.Add '<--... add new Workbook wb.SaveAs Filename:=rCountry.Value2 '<--... saves the workbook after the country .SpecialCells(xlCellTypeVisible).Copy wb.Sheets(1).Range("A1") ActiveSheet.Name = rCountry.Value2 '<--... rename it .SpecialCells(xlCellTypeVisible).Copy ActiveSheet.Range("A1") 'copy data for country under header Sheets(1).Range("A1:Y1").WrapText = False 'Takes the wrap text off ActiveWindow.Zoom = 55 'Zooms out the window Sheets(1).UsedRange.Columns.AutoFit 'Autofits the column wb.Close SaveChanges:=True '<--... saves and closes workbook End If Next End With .AutoFilterMode = False '<--| remove autofilter and show all rows back End With helpCol.Offset(-1).End(xlDown).Clear '<--| clear helper column (header included) End Sub Public Sub TestThis() Dim wks As Worksheet Set wks = ActiveWorkbook.Sheets(1) With wks .AutoFilterMode = False .Range("A:K").AutoFilter Field:=11, Criteria1:="<>", Operator:=xlFilterValues .Range("A:C").SpecialCells(xlCellTypeBlanks).Interior.Color = 65535 .AutoFilterMode = False End With End Sub
您只需要提供SaveAs
方法的完整path:
wb.SaveAs Filename:="C:\Users\CONNELLP\Desktop\Claire Macro\CRO Countries\" & rCountry.Value2 '<--... saves the workbook after the country
如果不提供完整path,而只是一个文件名,exel将文件保存在当前文件夹中,但是使用完整path,excel将文件保存在指定的位置和名称处。
更改
wb.SaveAs Filename:=rCountry.Value2
至
wb.SaveAs Filename:="C:\Users\CONNELLP\Desktop\Claire Macro\CRO Countries\" & rCountry.Value2