簡體   English   中英

Excel在動態目錄路徑中生成新工作簿

[英]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`
  • L:\\ Fold1 \\ Fold2 \\ Fold3:固定路徑
  • rngFolder是通往國家的道路
  • rngYear是國家/地區內子文件夾的路徑
  • rngMonth是年份中子文件夾的路徑

(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM