Excel VBA代码用于在每日基础上打开Excel xlsx文件,并在其名称中包含日期

时间:2017-07-23 07:07:10

标签: excel vba excel-vba

我有2个文件要合并到一个报告中。这两个文件都在不同的文件夹中,它们在文件夹中是唯一的。

我的问题是,当我将每个工作簿作为变量调暗时,我需要放置一个带有文件名的路径。 我希望路径保持不变,每次运行宏时,它都会将文件中的当前工作簿调暗为“x”

文件名例如 - 洁净室GSS零件 - 跟踪文件17.05.2017

这是我的代码:

Set x = Workbooks.Open("C:\Users\rosipov\Desktop\eliran\MFG - GSS\GSS\Clean room GSS parts - tracking file 17.05.2017.xlsx")

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您也许可以要求用户使用“文件”对话框选择您要选择的文件。

Option Explicit

Public Enum FileDialogType
    msoFileDialogOpen = 1
    msoFileDialogSaveAs = 2
    msoFileDialogFilePicker = 3
    msoFileDialogFolderPicker = 4
End Enum

Public Function OpenTargetWBExample()
    Dim FilePath As String: FilePath = FileDialog(msoFileDialogFilePicker, "Select workbook to open")
    If Len(FilePath) = 0 Then Exit Function
    Dim TargetWB As Workbook: Set TargetWB = Workbooks.Open(FilePath)
    'Extra code goes here
    Set TargetWB = Nothing
End Function

Public Function FileDialog(ByVal DialogType As FileDialogType, Optional ByVal DialogTitle As String, _
                              Optional MultiSelect As Boolean, Optional ByVal FileFilter As String) As String
    'If MultiSelect then outputs files in the following format: "File1;File2;File3"
    'Custom File Extension Filter Format: "File Description 1~File Extension Filter 1|File Description 2~File Extension Filter 2"
    Dim FileDialogObject As FileDialog: Set FileDialogObject = Application.FileDialog(DialogType)
    Dim Index As Long, Filters() As String, Element() As String
    Dim SelectedFile As Variant

    With FileDialogObject
        If Len(DialogTitle) > 0 Then .Title = DialogTitle
        .AllowMultiSelect = MultiSelect
        If Len(FileFilter) > 0 Then
            Filters = Split(FileFilter, "|")
            For Index = 0 To UBound(Filters)
                Element = Split(Filters(Index), "~")
                .Filters.Add Element(0), Element(1), (.Filters.Count + 1)
            Next Index
        End If
        .FilterIndex = 0
        .Show
        .Filters.Clear
        For Each SelectedFile In .SelectedItems
            FileDialog = FileDialog & CStr(SelectedFile) & ";"
        Next SelectedFile
        If Len(FileDialog) > 0 Then FileDialog = Left(FileDialog, Len(FileDialog) - 1)
    End With
    Set FileDialogObject = Nothing
End Function

答案 1 :(得分:1)

您可以将单元格的日期,输入或NOW转换为您在文件名中使用的格式的字符串:

FORMAT(NOW(),"dd.mm.yyyy")

现在您可以在打开文件时使用它:

Set x = Workbooks.Open("C:\Users\rosipov\Desktop\eliran\MFG - GSS\GSS\Clean room GSS parts - tracking file " & FORMAT(NOW(),"dd.mm.yyyy") & ".xlsx")

请记住,您可以使用当前日期以外的其他值NOW()

答案 2 :(得分:0)

因为目录中只有一个文件

dim aaa as String
aaa = ""C:\Users\rosipov\Desktop\eliran\MFG - GSS\GSS\"

Set x = Workbooks.Open(aaa & Dir(aaa))