我正在使用根据所选国家/地区生成报告的工作簿。每个国家/地区都使用特定的路径目录。
从根文件夹导入信息时,确定。
我的问题是当我使用报告生成新工作簿时。我尝试将其保存在随国家/地区变化的特定位置:
'Generate a new workbook refering to the first Worksheet
Set WkReport = Workbooks.Add(xlWBATWorksheet)
With WkReport
// Skip selecting the sheet, just reference it explicitly and copy it after//
// the blank sheet in the new wb.
ThisWorkbook.Worksheets("REPORT").Copy after:=.Worksheets(.Worksheets.Count)
End With
// Kill alerts, delete the blank sheet in the new wb and turn alerts back on//
Application.DisplayAlerts = False
With WkReport
.SaveAs Filename:="L:\Fold1\Fold2\Fold3\" & rngFolder & "\" & rngYear & "\" & rngMonth &"\"& rngName & "_Report_" & rngDate & ".xlsx"
End With
Application.DisplayAlerts = True'`enter code here`
(rngSmthing是指工作簿中的单元格的范围)
所有这些都是动态范围,根据用户提供的信息而变化。
因此,当我创建工作簿时,必须根据此信息将其保存在不同的位置。
该文件的名称包含另一个动态范围" rngName"随后是报告和" rngDate": Filename = rngName_Report_rngDate.xlsx
我的代码用L:\ Fold1 \ Fold2 \ Fold3保存,文件名为 Report .xlsx
用户选择的路径目录示例... 德国: L:Folder1中\文件夹2 \ Folder3 \德国\ 2015年\ 06-2015 \ GE_Report_31-06-15.xlsx 匈牙利: L:Folder1中\ FOLDER2 \ Folder3 \匈牙利\ 2015 \ 06_2015 \ HU_Report_31-06-15.xlsx
!问题解决了!我只是忘了设置rngSmthng变量...(Clap Clap)无论如何,如果你想根据你的范围设置不同的保存路径,有人可能会觉得它很有用:
'cellRef is a named cell within the workbook where user selects data
rngName = ws.Range("cellRef").Value
通过这种方式,您可以使用动态路径查找器。
答案 0 :(得分:2)
Sub Test()
Dim wkReport As Workbook
Dim sFolder As String
Dim sPath As String
Dim rngFolder As Range
Dim rngName As Range
With ThisWorkbook.Worksheets("Sheet1")
Set rngFolder = .Range("A1")
Set rngName = .Range("A2")
End With
sFolder = "L:\Fold1\Fold2\Fold3\" & rngFolder & "\" & Format(Date, "yyyy\\mm mmm\\")
CreateFolder sFolder
sPath = sFolder & rngName & "_Report_" & Format(Date, "dd-mm-yy") & ".xlsx"
Set wkReport = Workbooks.Add(xlWBATWorksheet)
With wkReport
ThisWorkbook.Worksheets("REPORT").Copy after:=.Worksheets(.Worksheets.Count)
.Worksheets(1).Delete
.SaveAs sPath, ThisWorkbook.FileFormat
End With
End Sub
' Purpose : Will Recursively Build A Directory Tree
Sub CreateFolder(Folder)
On Error Resume Next
Dim objFSO As Object: Set objFSO = CreateObject("Scripting.FileSystemObject")
If Folder <> "" Then
If Not objFSO.FileExists(objFSO.GetParentFolderName(Folder)) Then
Call CreateFolder(objFSO.GetParentFolderName(Folder))
End If
objFSO.CreateFolder (Folder)
End If
End Sub
注意:强>
Format(Date, "yyyy\\mm mmm\\")
将返回2015\12 Dec\
Format(Date, "yyyy\mm mmm\")
将返回2015m12 Dec
。
答案 1 :(得分:0)
真的很抱歉...... 非常感谢你的帮助......你无法猜到它。
问题在于我将它们设置在不同的宏中的那些变量,我完全忘记了......所以当然它不能识别变量..因为我没有在这个宏中创建它们!
再次,我的道歉应该在发布
之前检查我的代码两次