天道酬勤,学无止境

Loop through folders and only copy files that match certain criteria

问题

我正在编写一个程序,将所需的某些文件从一个文件夹复制到另一个文件夹。 但是,我只希望它复制符合某些条件的文件,更具体地说,它应该只复制不在禁止文件、禁止扩展或禁止文件夹列表中的文件,这些文件存储在如下数组中:

Public BannedExtensions As String() = {".bak", ".bak2", ".cry", ".max", ".psd", 
       "log", ".lib", "pdb", ".exp"}
Public BannedFolders As String() = {"Tools", "Editor", "Code", "LogBackups",
       "statoscope", "BinTemp", "USER", "rc"}
Public BannedFiles As String() = {"Editor.exe", "error.bmp", "error.dmp", 
       "luac.out", "tags.txt"}

然后代码应该将它们移动到一个临时目录,然后将它们压缩并将它们保存到存储在File_Name变量中的位置。

这是我的整个代码:

Option Strict On
Public Class Form1

    'define the two variables used for tracking file name and where to save'
    Private Property Root_Folder As String
    Private Property File_Name As String

    'define the variable which dictates wether we copy the file
    Private Property copy As Boolean

    'define which files we need and do not need'
    Public BannedExtensions As String() = {".bak", ".bak2", ".cry", ".max", ".psd", "log", ".lib", "pdb", ".exp"}
    Public BannedFolders As String() = {"Tools", "Editor", "Code", "LogBackups", "statoscope", "BinTemp", "USER", "rc"}
    Public BannedFiles As String() = {"Editor.exe", "error.bmp", "error.dmp", "luac.out", "tags.txt"}

    Function Copy_RequiredFiles() As Integer
        Dim i As Integer = 0

        'Searches directory and it's subdirectories for all files, which "*" stands for
        'Say for example you only want to search for jpeg files... then change "*" to "*.jpg"  
        For Each filename As String In IO.Directory.GetFiles(Root_Folder, "*", IO.SearchOption.AllDirectories)

            copy = True

            Dim fName As String = IO.Path.GetFileName(filename)
            Dim fExtension As String = IO.Path.GetExtension(filename)
            Dim fFolder As String = IO.Path.GetDirectoryName(filename)

            For i = 0 To BannedExtensions.Length - 1
                If fExtension = BannedExtensions(i) Then
                    RichTextBox1.Text = RichTextBox1.Text & vbNewLine & "Extension: " & filename
                    copy = False
                End If
            Next
            If copy = True Then
                i = 0
                For i = 0 To BannedFolders.Length - 1
                    If filename = BannedFolders(i) Or BannedFolders(i).Contains(filename) Then
                        RichTextBox1.Text = CStr(CBool(RichTextBox1.Text & vbNewLine & "Folder: " &
                        copy) = False)
                    End If
                Next
                If copy = True Then
                    i = 0
                    For i = 0 To BannedFiles.Length - 1
                        If filename = BannedFolders(i) Or BannedFolders(i).Contains(filename) Then
                            RichTextBox1.Text = RichTextBox1.Text & vbNewLine & "Folder: " & filename
                            copy = False
                        End If
                    Next
                End If
            End If
            If copy = True Then
                'copy the file into the selected folder'
            End If
        Next
        Return 0
    End Function

    'when the browse button for selecting the folder is selected'
    Private Sub Browse_Root_Click(sender As Object, e As EventArgs) Handles Browse_Root.Click
        'check if the folder dialogue has been opened successfully and something has been selected'
        If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then '
            'set the textbox and the previously defined variable to the folder selected'
            TextBox1.Text = FolderBrowserDialog1.SelectedPath
            Root_Folder = FolderBrowserDialog1.SelectedPath
        End If
    End Sub

    'when the browse button for where to save the file is selected'
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'set the options to limit the save type to a zip file'
        SaveFileDialog1.Filter = "zip files (*.zip)|*.zip"
        'check that the dialogue box has opened succesfully'
        If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
            'set the text box and the previously defined variable to the file selected'
            TextBox2.Text = SaveFileDialog1.FileName()
            File_Name = SaveFileDialog1.FileName()
        End If
    End Sub

    'when the user changes the value of the textbox update the folder to select from'
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        Root_Folder = TextBox1.Text
    End Sub

    'when the user changes the value of the textbox update the file to save to'
    Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
        File_Name = TextBox2.Text
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Copy_RequiredFiles()
    End Sub
End Class


'when the browse button for selecting the folder is selected'
Private Sub Browse_Root_Click(sender As Object, e As EventArgs) Handles Browse_Root.Click
    'check if the folder dialogue has been opened successfully and something has been selected'
    If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then '
        'set the textbox and the previously defined variable to the folder selected'
        TextBox1.Text = FolderBrowserDialog1.SelectedPath
        Root_Folder = FolderBrowserDialog1.SelectedPath
    End If
End Sub

'when the browse button for where to save the file is selected'
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'set the options to limit the save type to a zip file'
    SaveFileDialog1.Filter = "zip files (*.zip)|*.zip"
    'check that the dialogue box has opened succesfully'
    If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
        'set the text box and the previously defined variable to the file selected'
        TextBox2.Text = SaveFileDialog1.FileName()
        File_Name = SaveFileDialog1.FileName()
    End If
End Sub

'when the user changes the value of the textbox update the folder to select from'
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    Root_Folder = TextBox1.Text
End Sub

'when the user changes the value of the textbox update the file to save to'
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
    File_Name = TextBox2.Text
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Copy_RequiredFiles()
End Sub
End Class

我有一些问题,

首先,这就是为什么当我运行程序并打印它发现它不应该复制的文件时,它没有显示循环中第二个或第三个 if 语句的任何内容。

第二个是在复制到临时文件时如何保留文件夹结构。

第三,压缩这个临时文件夹的最佳方式是什么。

在此先感谢,马库斯

回答1

一种方法是在 List 中使用自定义类来保存信息:

Class myFile
   ' to do all the things you want ("preserve folder struct"),
   ' you need more than a name in a textbox:
   Public Property FileName As String
   Public Property FileExt As String
   Public Property PathName As String

   ' cant create a new obj without the essential info
   Public Sub New(fName As String, fExt as String, pName As String)
      FileName = fName
      FileExt = fExt
      PathName = pName
   End SUb

End Class

或者,与其重新创建轮子,不如使用System.IO.FileInfo并更改迭代文件的方式。 然后是一个存储这些东西的列表:

Friend myFileList As List(of myFile)
' or
Friend myFileList As List(of FileInfo)

迭代保存到列表(myFile):

Dim myF As MyFile
For Each filename As String In IO.Directory.GetFiles

    ' if BannedFiles is a List(Of String) instead of an array:
    If BannedFiles.Contains(f.Extension) = False Then
         ' create NEW file object with the info 
         myF = New MyFile(IO.Path.GetFileName(filename),
                          IO.Path.GetExtension(filename),
                          IO.Path.GetDirectoryName(filename))
         ' add to the list of files to do
         myFileList.Add(f)
    End If

    If myFileList.Contains(f) = False Then         ' better version of Copy=true
        For n As Integer = 0 To BannedFoldersLIST.Count - 1
           If f.FullPath.Contains(BannedFoldersLIST(n)) = False Then

              ' create a new file object as above
                myFileList.Add(f)              ' add for folder ban
           End If
        Next n
    End If

    ' repeat for banned extensions  (watch out for "." vs no dot)

   Return myFileList             ' mine is a function returning
                                 ' a List(Of T) to be processed elsewhere

这比复制和粘贴的代码更具概念性。 由于您想对结果做几件事,最好将它们保存在 TextBox 以外的其他地方。 VS 会很高兴地用鼠标向您显示列表中的内容。

文件夹测试需要根据 Banned 字符串是完整名称还是部分名称来进行。 更大的一点是 List 对象会告诉您是否已经使用.Contains而不是全局标志存储了一个项目。 List(Of FileInfo)List(Of myFileClass)都可以。 后者将保留您拥有的更多代码。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Loop through folders and only copy files that match certain criteria
    I am writing a program that copies certain files needed from one folder to another. However, I only want it to copy files that fit certain criteria, More specifically, it should only copy files that are not in the banned files, banned extensions, or banned folders list as stored in an array like this: Public BannedExtensions As String() = {".bak", ".bak2", ".cry", ".max", ".psd", "log", ".lib", "pdb", ".exp"} Public BannedFolders As String() = {"Tools", "Editor", "Code", "LogBackups", "statoscope", "BinTemp", "USER", "rc"} Public BannedFiles As String() = {"Editor.exe", "error.bmp", "error.dmp
  • 循环遍历文件夹,使用 VBA 重命名满足特定条件的文件?(Loop through folder, renaming files that meet specific criteria using VBA?)
    问题 我是 VBA 的新手(并且只接受了一点 Java 培训),但是在这里的其他帖子的帮助下组装了这段代码并且遇到了障碍。 我正在尝试编写代码,循环遍历文件夹中的每个文件,测试每个文件是否满足特定条件。 如果满足条件,则应编辑文件名,覆盖(或删除之前)任何具有相同名称的现有文件。 然后应将这些新重命名的文件的副本复制到不同的文件夹中。 我相信我已经很接近了,但是我的代码在运行时拒绝遍历所有文件和/或使 Excel 崩溃。 请帮助? :-) Sub RenameImages() Const FILEPATH As String = _ "C:\\CurrentPath" Const NEWPATH As String = _ "C:\\AditionalPath" Dim strfile As String Dim freplace As String Dim fprefix As String Dim fsuffix As String Dim propfname As String Dim FileExistsbol As Boolean Dim fso As Object Set fso = VBA.CreateObject("Scripting.FileSystemObject") strfile = Dir(FILEPATH) Do While (strfile <> ""
  • Loop through folder, renaming files that meet specific criteria using VBA?
    I am new to VBA (and have only a bit of training in java), but assembled this bit of code with the help of other posts here and have hit a wall. I am trying to write code that will cycle through each file in a folder, testing if each file meets certain criteria. If criteria are met, the file names should be edited, overwriting (or deleting prior) any existing files with the same name. Copies of these newly renamed files should then be copied to a different folder. I believe I'm very close, but my code refuses to cycle through all files and/or crashes Excel when it is run. Help please? :-) Sub
  • VBA to loop through email attachments and save based on given criteria
    This is a follow up from a previous question (VBA to save attachments (based on defined criteria) from an email with multiple accounts) Scenario: I have a code that loops through all e-mails in a certain outlook account, and saves the attachments to a selected folder. Previously, my problem was selecting which folder (and account) from where to extract the attachments (this was solved with a suggestion from the previous question). Issue 1: The code is presenting a "Type Mismatch" error at the line: Set olMailItem = olFolder.Items(i) Issue 2: As stated in the question title, my main objective
  • php zipArchive 仅解压缩某些扩展(php zipArchive unzip only certain extensions)
    问题 我需要解压缩上传的内容。 但是出于安全目的必须验证文件只是图像文件,以便有人无法将 php 添加到 zip 中,然后再运行它。 在进行解压缩时,我还需要保留文件结构。 $zip->extractTo($save_path . $file_name, array('*.jpg','*.jpeg','*.png','*.gif') ); 不返回空值。 是否有我可以使用的参数,或者我必须使用正则表达式循环遍历 zip 文件以匹配扩展名并创建文件夹并使用代码保存文件? 谢谢 回答1 从 php.net,处理 .txt 文件 <?php $value="test.zip"; $filename="zip_files/$value"; $zip = new ZipArchive; if ($zip->open($filename) === true) { echo "Generating TEXT file."; for($i = 0; $i < $zip->numFiles; $i++) { $entry = $zip->getNameIndex($i); if(preg_match('#\.(txt)$#i', $entry)) { ////This copy function will move the entry to the root of "txt_files"
  • VBA 循环浏览电子邮件附件并根据给定条件保存(VBA to loop through email attachments and save based on given criteria)
    问题 这是对上一个问题的跟进(VBA 从具有多个帐户的电子邮件中保存附件(基于定义的标准)) 场景:我有一个代码,它遍历某个 Outlook 帐户中的所有电子邮件,并将附件保存到选定的文件夹中。 以前,我的问题是选择从哪里提取附件的文件夹(和帐户)(通过上一个问题的建议解决了这个问题)。 问题 1:代码在该行显示“类型不匹配”错误: Set olMailItem = olFolder.Items(i) 问题 2:如问题标题所述,我的主要目标是遍历所有附件并仅保存那些具有给定条件的附件(excel 文件,工作表名称为“ASK”,工作表名称为“BID”)。 不仅仅是一个简单的如果要考虑到这些标准,我必须将所有文件下载到“临时文件夹”,进行选择并将最终生成的文件放在输出文件夹中,或者将所有文件下载到最终文件夹并删除不符合标准。 问题:我似乎无法找到执行其中任何一个操作的方法。 问题:如何做到这一点? 这两者中的哪一个更有效? 代码: Sub email() Application.ScreenUpdating = False Dim olApp As New Outlook.Application Dim olNameSpace As Object Dim olMailItem As Outlook.MailItem Dim olFolder As Object Dim
  • 如何复制某些文件(不带文件夹层次结构),但不覆盖现有文件?(How to copy certain files (w/o folder hierarchy), but do not overwrite existing files?)
    问题 我需要将所有*.doc文件(而不是名称与*.doc匹配的文件夹)从网络文件夹\\server\source (包括所有嵌套文件夹中的文件)复制到本地文件夹C:\destination而无需保留嵌套文件夹层次结构(即,所有文件应直接进入C:\destination并且不应在C:\destination创建任何嵌套文件夹)。 如果\\server\source不同子文件夹中有多个具有相同名称的文件,则仅应复制第一个文件,并且从不覆盖它-然后,将跳过以后发现的所有冲突文件(可能有很多类似的情况,并且跳过的文件不应在网络上传输,否则将花费太多时间。 这是我在PowerShell中实现它的尝试: cp \\server\source\* -Recurse -Include *.doc -Container:$false -Destination C:\destination 此命令至少有两个问题: 它也复制名称与*.doc匹配的文件夹。 如果名称冲突,以后发现的任何文件都将通过网络传输并覆盖前一个文件。 您能提出解决这些问题的建议吗? 也欢迎使用copy , xcopy , robocopy , cscript或*.bat , *.cmd的实现。 本地操作系统为Windows 8 ,文件系统为NTFS。 回答1 我将首先生成文件列表,并在您浏览列表时进行验证。 像这样的东西:
  • 是否可以用匹配特定条件的行号填充数组而不循环?(Is it possible to fill an array with row numbers which match a certain criteria without looping?)
    问题 我想用仅满足特定条件的行的行号填充VBA中的数组。 我想要最快的方法(例如,类似RowArray = index(valRange=valMatch).row ) 以下是(慢速)范围循环的代码。 Current Code Sub get_row_numbers() Dim RowArray() As Long Dim valRange As Range Dim valMatch As String Set valRange = ActiveSheet.Range("A1:A11") valMatch = "aa" ReDim RowArray(WorksheetFunction.CountIf(valRange, valMatch) - 1) For Each c In valRange If c.Value = valMatch Then RowArray(x) = c.Row: x = x + 1 Next c End Sub 回答1 仍然是Chris高效变体阵列时间的2-3倍,但该技术功能强大,并且已超出了此问题的应用范围 需要注意的一点是Application.Transpose限制为65536个单元,因此需要将更长的范围“分块”成碎片。 Sub GetEm() Dim x x = Filter(Application.Transpose(Application
  • VBA Loop through folder and subfolders to find specific sheet then Copy and Paste certain data
    I hope you can help. I have made an attempt to code this myself (see code below) but failed so I am reaching out to the community for assistance. What I need my code to do is allow a user to click on a command button, then the user selects a folder. Once this folder is selected. I need the code to look or loop through this folder and all the subfolders in this folder and find sheets with a name Like "CustomerExp" then copy the the data in sheets name Like "CustomerExp" from the second row down to the last used row and paste the information into a sheet called "Disputes" where the macro is
  • 如果匹配特定条件,则在excel中复制一行到新工作表中(Copy a row in excel if it matches a specific criteria into a new worksheet)
    问题 我是VBA的新手,在根据某些条件将一张纸中的行复制到另一张纸时遇到问题。 我尝试在该论坛中寻找答案,尝试修改代码以符合我的要求,但未成功。 请帮我。 我需要在工作表的A列中搜索编号。 搜索应从1号开始,然后是2号,然后是3号,依此类推。 只要找到“ 1”,就将整个行复制到“表1”。 搜索“ 1”后,开始“ 2”。 找到匹配项后,将整行复制到“表2”。 类似地编号“ 3”,依此类推。 重复此搜索以查找其他编号,直到A列末尾。 我尝试了以下代码:注意:我的值从1到预定值不等。 Dim wb1 As Workbook, wb2 As Workbook Dim ws1 As Worksheet, ws2 As Worksheet Dim copyFrom As Range Dim lRow As Long '<~~ Not Integer. Might give you error in higher versions of excel Dim strSearch As Integer Set wb1 = ActiveWorkbook Set ws1 = wb1.Worksheets("Burn Down") strSearch = "1" With ws1 '~~> Remove any filters .AutoFilterMode = False '~~> I am
  • vba 搜索文件夹并按名称选择文件(vba search through a folder and select files by name)
    问题 我在一个文件夹中有很多文件,它们的名称如下: “prof102122013@10.18.41.csv” 其中“02122013”​​位是日期 - 02/12/2013。 其中一些是在同一天制作的。 我想创建一个文件,将同一天制作的所有工作簿都放在一个大文件中。 到目前为止,我正在努力获得打开特定日期文件的选择性。 有谁知道什么样的代码可以帮助我解决这个问题? 编辑:解决了,谢谢大家的帮助! 这是对我有用的代码: folder_location = Application.ActiveWorkbook.Path i2 = 0 strFile = Dir(folder_location & "\") 'looping through to find the right file names and putting them all in an array While strFile <> "" If Right(strFile, 3) = "csv" Then file_to_analyse = Split(strFile, "@") If Right(file_to_analyse(0), 8) = date_we_want_to_analyse_on Then found_files_to_analyse(i2) = strFile i2 = i2 + 1 End If
  • VBA to save attachments (based on defined criteria) from an email with multiple accounts
    Situation: I have a code that, given an input of sender email, will download all attachments from outlook email (if the sender is the one specified, it saves the .xls attachments). Problem 1: In my outlook, I have access to 2 accounts (lets say personal and public). I want to be able to select from which of those accounts the code should download the attachments. Question 1: Is it possible to do this kind of selection? From previous research I was able to find criteria regarding the type of attachments, and more, but nothing regarding multiple inboxes. Problem 2: Among the attachments in this
  • VBA 从具有多个帐户的电子邮件中保存附件(基于定义的标准)(VBA to save attachments (based on defined criteria) from an email with multiple accounts)
    问题
  • 复制具有多个子条件的行(Copy rows with multiple sub criteria)
    问题 我正在研究一个宏,它将搜索不同县的列表工作表,然后将整行粘贴到当前工作表上。 我为每个人(名为 Mark、John 等)准备了一张工作表,每个人都被分配了几个县。 Mark 有三个县,列在单元格 J1:L1 中,我将它们命名为一个范围 (MyCounties)。 我的宏查看每个县的“列表”列“I”,并将整行复制到从“A4”开始的“标记”表上。 我拥有的宏对此非常有效。 但是,对于像洛杉矶县这样的较大地区,它被分成 6 个人,每个人在该县内的不同城市,在洛杉矶市内,采用不同的邮政编码。 是否可以搜索匹配的县,然后是城市(对于所有城市,不是洛杉矶),以及洛杉矶(城市),然后是邮政编码? 县是“I”列,城市是“G”列,邮编是“H”列。 所以“安德鲁”将在阿罕布拉、阿卡迪亚等洛杉矶县城以及 90004、90006 等洛杉矶(城市)邮政编码中使用。我知道下面发布的宏对此不起作用,但是有没有编辑它以使其做我想做的事情的方法? 我有一个帮助表(“洛杉矶”),它在 A1:D1(合并单元格)中显示人名(彼得),B3 和以下是要过滤的县,C3 和以下是要过滤的城市,D3 和以下是要过滤的城市要过滤的邮政编码。 然后我们跳过一列,F1:I1 是下一个人。 我有一个测试文档,我会在弄清楚如何做后立即附上。 测试文档 Sub MoreReports() Dim w As Long, cVar As
  • VBA:将不同工作簿中的某些工作表合并到一个工作簿中(VBA : Merge certain worksheets in different workbooks into one workbook)
    问题 我遇到了一个我无法解决的问题。 这里是 : 我想复制某些工作簿中包含的某些工作表并将其全部粘贴到一个新工作簿中。 更具体地说,我有一个名为 « Fonds » 的文件夹,其中包含 20 个工作簿,每个工作簿都具有相同的结构:它们都被称为 « 01082014_FONDS »,01082014 为每个工作簿更改并且是一个月中的一天。 在每个工作簿中,都有一个名为 « Portfolio » 的工作表和另一个名为 « Disponibilités » 的工作表。 我想复制这 2 个工作表(还有其他工作表,但我只想复制那些)并将其粘贴到新工作簿中。 最后,我在一个单独的工作簿中有 40 张纸,分别称为“组合 1”、“分配 1”、“组合 2”、“分配 2”…… 任何人都可以帮助我吗? 非常感谢你 ! 回答1 您需要在 VBA 中执行以下操作: 循环遍历文件夹中的文件 使用 VBA 循环遍历文件夹中的文件? 查找文件名中是否包含单词“Fonds”:检查字符串是否包含另一个字符串打开找到的工作簿: Set wb = Workbooks.open(filename) 循环浏览工作簿中的工作表:Loop through Excel Sheets 查找单词“Portfolio”或“Disponibilités”是否在工作表的名称中:检查一个字符串是否包含另一个字符串重命名您找到的工作表
  • 使用来自用户窗体的数据将值从一张表复制到另一张表(Copy values from one sheet to another using Data from UserForm)
    问题 我有一个用户表单,其中包含您可以填写的以下值: TextBoxLopnummer.Value TextBoxFragestallare.Value TextBoxMottagare.Value TextBoxDatum.Value 图片: 当有人填写日期值时: TextBoxDatum.Value我想在整个工作簿中搜索此值并将该单元格所在的整行粘贴到工作表“Lägg in Ärende”单元格 A15 中。 请注意,此值可以在工作簿的不同工作表中,并在同一个工作表内多次出现。 所以在单元格 A15 及以下可以有很多行。 我已经开始实施这一点,但老实说,我不知道如何完成它: 'in the rows below I wanna write so that ".Value=copies the value from the sheets where it finds eg. the date". emptyRow = WorksheetFunction.CountA(ws.Range("A:A")) + 14 Cells(emptyRow, 1).Value = Cells(emptyRow, 2).Value = Cells(emptyRow, 3).Value = Cells(emptyRow, 4).Value = Cells(emptyRow, 5).Value =
  • 在 VBA 过滤表中选择第 10 行可见单元格(Selecting 1st 10 Rows of visible Cells in VBA Filtered Table)
    问题 编码和 VBA 新手,这是我第一次尝试选择和复制可见数据的第 10 行以及我使用 VBA 宏过滤的表中的表头。 我在 stackoverflow 上的这个链接中使用了代码示例。 VBA 在过滤后选择可见单元格。 这个特殊的例子让我学习如何复制单列中的值。 我想复制整个行或某些列的值,具体取决于哪个更容易。 Sub LPRDATA() Dim TYEAR As String TYEAR = Range("TYEAR").Value Dim QUARTER As String QUARTER = Range("QUARTER").Value Dim r As Range, rC As Range Dim j As Long Sheets("CONTROL").Select Sheets("DATA").Visible = True Sheets("CONTROL").Select Sheets("10").Visible = True Sheets("DATA").Select ActiveWorkbook.Worksheets("DATA").ListObjects("tblData").Sort.SortFields.Clear ActiveWorkbook.RefreshAll Range("tblData[[#Headers],[Sn '#]]").Select
  • 在vba中一次循环遍历所有可用的自动过滤条件(Looping through all available autofilter criteria one at a time in vba)
    问题
  • SVN 无限循环 - [文件]“在存储库中不存在”(SVN Endless Loop - [file] “does not exist in repository”)
    问题 这已经困扰我一个星期了。 SVN 一直告诉我某个文件“ does not exist in repository ”。 美好的。 让我们删除它。 忘掉它。 忽略它。 任何。 我并不真正关心这个文件(特别是如果它继续在夜间登记失败时)。 最奇怪的部分? “恢复”实际上会从存储库中恢复文件,因此它就在那里(可能已损坏?)。 ...这必须是锦上添花。 如果我通过 Windows 资源管理器删除文件,SVN 将从存储库中恢复该文件,并在此之后声明它不存在于存储库中。 跆拳道? 有没有人知道如何摆脱这个? 我已经尝试过清理、还原、删除和其他任何可以想象的事情,但这一次让我难倒。 感谢您提供的任何提示... 回答1 您似乎很可能已经损坏了您的本地工作副本,例如通过移动文件夹或您使用 Windows 资源管理器进行的一些其他操作,但应该通过 TortoiseSVN 上下文菜单完成。 .svn文件夹中的信息现在不再与工作副本的状态匹配,这让 Subversion 感到困惑。 要解决此问题,请使用 Windows 资源管理器(而不是 TortoiseSVN)删除工作副本中的父文件夹(“Originals”)。 然后在您的工作副本的根目录执行 TortoiseSVN “更新”。 这应该按工作顺序恢复文件夹。 另一种选择是完全丢弃您的工作副本并重新结帐。 请注意,下一个版本的 Subversion
  • 如何为 Foreach File 枚举器上的 FileSpec 属性设置表达式?(How can I set an expression to the FileSpec property on Foreach File enumerator?)
    问题 我正在尝试创建一个 SSIS 包来处理包含多年文件的目录中的文件。 这些文件都以数字命名,因此为了节省处理所有内容,我想向 SSIS 传递一个最小数字,并且只枚举名称(转换为数字)高于我的最小值的文件。 我试过让ForEach File循环枚举所有内容,然后在脚本任务中排除文件,但是在处理数十万个文件时,这太慢了,不适合。 FileSpec属性允许您指定一个文件掩码来指示您想要集合中的哪些文件,但我不太清楚如何指定一个表达式来使其工作,因为它本质上是一个字符串匹配。 如果组件中的某个地方有一个表达式,它基本上说Should I Enumerate? - Yes / No Should I Enumerate? - Yes / No ,那将是完美的。 我一直在试验下面的表达式,但找不到可以应用它的属性。 (DT_I4)REPLACE(SUBSTRING(@[User::ActiveFilePath],FINDSTRING(@[User::ActiveFilePath], "\", 7 ) + 1 ,100),".txt","") > @[User: :MinIndexId] ? “真假” 回答1 这是您可以实现这一目标的一种方法。 您可以将Expression Task与Foreach Loop Container结合使用来匹配文件名的数值。 这是一个说明如何执行此操作的示例。