0

长期观看者/第一次海报!

我正在准备大量文件和文件夹以导入另一个程序(10,000x 个文件到 1000 个文件夹中)。在我的代码中,我已经提取了 UNIQUE 文件夹路径并将它们放在一个名为“ALLFOLDERS”的新工作表上;并且文件在“ALLFILES”表中。将唯一路径按 AZ 排序后,我为它们分配一个连续的字母数字编号。由于每个唯一文件夹都分配了一个唯一编号,因此我需要将该编号与文件相关联。我正在使用 XLOOKUP 命令在文件夹和文件之间找到相同的路径,然后带回分配的编号。是的,一个文件夹中可能存在多个文件。注意 - 我确实有 DOS 路径(带有文件名)和超过 255 个字符的文件夹路径很少甚至可能超过 300 个字符。

话虽如此,这是我的代码。我发现在极少数情况下,即使文件夹和文件的路径都存在,某些单元格也会显示“#N/A” - 请记住,文件夹列表是由我提取的唯一文件路径确定的!我什至暂停了我的代码,导航到一个显示“#N/A”的单元格,选择它,按回车键以“重新应用”公式,然后出现值!我什至内置了一个简单的“粘贴值”来锁定文件夹 ID,一旦我尝试循环应用公式粘贴两次。

我要求一些建议以防止我的公式在应用时失败,甚至是 XLOOKUP 论坛粘贴的替代品。

Public Sub PasteFormula()

        'This will paste the XLOOKUP formula and apply it to all cells.

        Workbooks(ImportWBName).Activate 'The new Workbook I created for this.
        ActiveWorkbook.Sheets("ALLFILES").Select
        
        ActiveSheet.Cells(2, 6).Formula = "=XLOOKUP(B2,ALLFOLDERS!A:A,ALLFOLDERS!B:B)" 'B2 has the path to lookup; A:A has the same Path in ALLFOLDERS and B:B is where the assigned number in ALLFOLDERS
        
        Dim lr As Long
        lr = Cells(Rows.Count, "A").End(xlUp).Row
        ActiveSheet.Range("F2").AutoFill Destination:=Range("F2:F" & lr), Type:=xlFillDefault
    
        MsgBox "XLookup Formula has been applied.  About to PASTE only Values.", vbOKOnly

        ActiveSheet.Columns(6).Copy
        ActiveSheet.Columns(6).PasteSpecial Paste:=xlPasteValues
    
        MsgBox "All Values have been pasted.", vbOKOnly

End Sub

谢谢!

4

0 回答 0