Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 获取';文件名';这是在脚本中声明的_Excel_Vba - Fatal编程技术网

Excel 获取';文件名';这是在脚本中声明的

Excel 获取';文件名';这是在脚本中声明的,excel,vba,Excel,Vba,基本上每次我得到一张新的工作表时,我都希望同时得到文件名并将其放在单元格B2中 但是,我无法调用文件名将其放置在任何单元格中 Sub GetSheets() Path="C:\Users\momo\Desktop\Miscellaneous Shipment Packing List\New folder\" Filename = Dir(Path & "*.xls") Do While Filename <> "" Workbooks

基本上每次我得到一张新的工作表时,我都希望同时得到文件名并将其放在单元格
B2

但是,我无法调用文件名将其放置在任何单元格中

Sub GetSheets()
    Path="C:\Users\momo\Desktop\Miscellaneous Shipment Packing List\New folder\"
    Filename = Dir(Path & "*.xls")
    Do While Filename <> ""
        Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
        For Each Sheet In ActiveWorkbook.Sheets
            Sheet.Copy After:=ThisWorkbook.Sheets(1)
        Next Sheet
        Workbooks(Filename).Close
        Filename = Dir()
        Call runDel
    Loop
End Sub
Sub-GetSheets()
Path=“C:\Users\momo\Desktop\Miscellaneous Shipping Packing List\New folder\”
Filename=Dir(路径&“*.xls”)
文件名“”时执行此操作
工作簿。打开文件名:=路径和文件名,只读:=真
对于ActiveWorkbook.Sheets中的每个工作表
Sheet.Copy After:=此工作簿.Sheets(1)
下一页
工作簿(文件名)。关闭
Filename=Dir()
打电话给伦德尔
环
端接头

如果您的其余代码当前正在工作,请在以下时间之后立即执行:

Sheet.Copy After:=此工作簿.Sheets(1)

您应该能够添加:

thiswook.Sheets(2).Range(“B2”).Value=Filename

像这样:

Sub GetSheets()

Path = "C:\Users\momo\Desktop\Miscellaneous Shipment Packing List\New folder\"
Filename = Dir(Path & "*.xls")

Do While Filename <> ""
    Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
        For Each Sheet In ActiveWorkbook.Sheets
            Sheet.Copy After:=ThisWorkbook.Sheets(1)
            ThisWorkbook.Sheets(2).Range("B2").Value = Filename
        Next Sheet
    Workbooks(Filename).Close
    Filename = Dir()
    Call runDel
Loop

End Sub
Sub-GetSheets()
Path=“C:\Users\momo\Desktop\Miscellaneous Shipping Packing List\New folder\”
Filename=Dir(路径&“*.xls”)
文件名“”时执行此操作
工作簿。打开文件名:=路径和文件名,只读:=真
对于ActiveWorkbook.Sheets中的每个工作表
Sheet.Copy After:=此工作簿.Sheets(1)
ThisWorkbook.Sheets(2).Range(“B2”).Value=文件名
下一页
工作簿(文件名)。关闭
Filename=Dir()
打电话给伦德尔
环
端接头

如果您试图找出如何引用新创建的工作表上的单元格,或者如果只是文件名而没有您试图检索的路径,那么以下操作应该有效

使用Dir(Path&“*.xls”)设置文件名变量后,您可以使用[Right]和[InstrRev]函数组合提取文件名,如下所示:

范围(“B2”)=右(文件名,Len(文件名)-InstrRev(文件名“\”))

要引用新创建的工作表上的单元格,由于在工作表(1)之后插入了工作表,索引将为2。可通过以下方式引用: ThisWorkbook.Sheets(2).Range(“B2)=文件名

例如:

Sub-GetSheets()
'更新Excel Junction.com
Path=“C:\Users\momo\Desktop\Miscellaneous Shipping Packing List\New folder\”
Filename=Dir(路径&“*.xls”)
文件名“”时执行此操作
工作簿。打开文件名:=路径和文件名,只读:=真
对于ActiveWorkbook.Sheets中的每个工作表
Sheet.Copy After:=此工作簿.Sheets(1)
下一页
ThisWorkbook.Sheets(2).Range(“B2”)=右(文件名,Len(文件名)-InStrRev(文件名,“\”)
工作簿(文件名)。关闭
Filename=Dir()
打电话给伦德尔
环
末端接头

0

@BigBen-answer已编辑以指向此工作簿中最高工作表索引的工作表您是对的@BigBen我假设索引像代码名一样工作,但它依赖于工作表的顺序。我将其编辑为工作表(2)。感谢您的帮助!没问题-回答很好!