[英]Excel Generate New Workbook in a dynamic directory Path
我正在使用根據所選國家/地區生成報告的工作簿。 每個國家/地區使用特定的路徑目錄。
當要從其根文件夾導入信息時,可以。
我的問題是當我用報告生成新的工作簿時。 我嘗試將其保存在隨國家而異的特定位置:
'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
我的代碼所做的是使用文件名Report .xlsx保存在L:\\ Fold1 \\ Fold2 \\ Fold3中
如果用戶選擇...的路徑目錄示例...德國:L:Folder1 \\ Folder2 \\ Folder3 \\ Germany \\ 2015 \\ 06-2015 \\ GE_Report_31-06-15.xlsx匈牙利:L:Folder1 \\ Folder2 \\ Folder3 \\ Hungary \\ 2015 \\ 06_2015 \\ HU_Report_31-06-15.xlsx
!問題解決了! 我只是忘了設置rngSmthng變量...(拍手拍手),無論如何,如果您想根據自己的范圍設置不同的保存路徑,可能有人會發現它很有用:
'cellRef is a named cell within the workbook where user selects data
rngName = ws.Range("cellRef").Value
這樣,您就可以擁有動態路徑查找器。
很高興您找到了答案。 附帶說明-這就是我編寫程序的方式。
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
。
真的很抱歉...非常感謝您的幫助...您根本無法猜到。
問題是那些變量我將它們設置在另一個宏中,我完全忘記了...因此,它當然無法識別這些變量..因為我沒有在此宏中創建它們!
再次道歉,我應該在發布之前復查兩次我的代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.