【问题标题】:Excel VBA code For opening Excel xlsx File on a daily Basis with date in his nameExcel VBA代码用于每天打开Excel xlsx文件,日期以他的名字命名
【发布时间】:2017-07-23 07:07:10
【问题描述】:

我有 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")

感谢您的帮助。

【问题讨论】:

  • 您可以这样做:Const filePath = C:\Users\rosipov\Desktop\eliran\MFG - GSS\GSS` and 'Dim fileNameX As String,然后将两者结合到一个新的源/目标文件中...

标签: vba excel


【解决方案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】:

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

    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
    

    【讨论】:

      【解决方案3】:

      因为目录中只有一个文件

      dim aaa as String
      aaa = ""C:\Users\rosipov\Desktop\eliran\MFG - GSS\GSS\"
      
      Set x = Workbooks.Open(aaa & Dir(aaa))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-17
        • 2018-12-29
        • 1970-01-01
        • 2018-05-04
        • 1970-01-01
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多