用于公式和复制的variables中的文件名

我试图使用通配符文件名作为variables,所以我可以用它来复制和做一些公式。 然后我想要把所有的公式弄平

它看起来像这样:

这第一部分工作(第一件事从单元格公式打开通配符文件,第二次只分配文件名没有pathvariablesProd – hover在variablesprod给出了它应该)

Dim wbProd As Workbook Windows("SB.xlsm").Activate Set wbProd = Workbooks.Open(FileNAME:=Sheets("refs").Range("B48").Value) Dim Prod As String Windows("SB.xlsm").Activate Prod = Worksheets("refs").Range("B49").Value Windows("Weekly.xlsx").Activate With Workbooks(" & Prod & ").Sheets("Report 1") .Range("A2:BG10", .Range("A2:BG10").End(xlDown)).Copy Workbooks("WeeklyData X.xlsx").ActiveSheet.Range("A2") End With Windows("WeeklyData X.xlsx").Activate Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Report 1") ws.UsedRange.Value = ws.UsedRange.Value 

在复制的第一部分中出现错误:使用工作簿(“&Prod&”).Sheets(“Report 1”)。 当我使用这种复制方法,而不使用文件名的variables,它的工作原理,当我使用variables文件名来做Vlookups它的作品。 我不知道什么是不在这里工作的原因。 另外,如果你有更好的方法来平整所有的公式和preseve格式(date),这将是伟大的。

谢谢,

一个快速的解决办法是创build一个工作簿variables( Dim myWB as Workbook ),

然后Set myWB = Workbooks(Prod) 。 然后就With myWB.Sheets("Sheet1")来做。

问题在于,Excel需要在工作表名称中加引号,因此您的书的字面上被理解为“ & Prod & 。 因此,为了保持当前的想法,您只需要为每个报价添加一个额外的报价: With Workbooks("" & Prod & "").Sheets("Report 1")

我个人build议设置一个工作簿variables,但要么工作!

编辑:@drLecter – 非常欢迎! 尝试设置包含引号的公式时,还会遇到“双引号”问题。 IE =Vlookup("myText",A1:D1,2,False)的工作表公式=Vlookup("myText",A1:D1,2,False)会变成

Cells(1,1).Formula = "=Vlookup(""myText"",A1:D1,2,False)"

正如你所看到的,如果我不使用双引号,VBA将停止阅读公式

Cells(1,1).Formula = "=Vlookup(

使用dir()

Microsoft文档链接 – dir()函数

返回一个string,该string表示与指定的模式或文件属性或驱动器的卷标相匹配的文件,目录或文件夹的名称。

只是适应这样的事情::

 Sub LoopThroughFiles() Dim MyObj As Object, MySource As Object, file As Variant file = Dir("c:\testfolder\") While (file <> "") If InStr(file, "test") > 0 Then MsgBox "found " & file Exit Sub End If file = Dir Wend End Sub