Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
Vba 扫描子文件夹并测试和指定cel_Vba_Excel - Fatal编程技术网

Vba 扫描子文件夹并测试和指定cel

Vba 扫描子文件夹并测试和指定cel,vba,excel,Vba,Excel,早上好, 我想创建一个代码,允许我使用filedialog(按filedialog进行选择)选择文件夹,并从该文件夹中,代码将在所有子文件夹中查找特定excel文件,在此文件中选择我感兴趣的工作表。然后,对于该工作表的每一行,有必要测试单元格“X”,如果该单元格不是空的(它包含一个值),则我复制此行,但仅复制F、G、P、Q、X、Y列,然后将其粘贴到我事先选择的目标工作簿中。你会找到我所做工作的草稿 谢谢你的帮助和时间 ** Dim Fso作为对象 将f1标注为对象,将f2标注为对象 将sh标注为

早上好, 我想创建一个代码,允许我使用filedialog(按filedialog进行选择)选择文件夹,并从该文件夹中,代码将在所有子文件夹中查找特定excel文件,在此文件中选择我感兴趣的工作表。然后,对于该工作表的每一行,有必要测试单元格“X”,如果该单元格不是空的(它包含一个值),则我复制此行,但仅复制F、G、P、Q、X、Y列,然后将其粘贴到我事先选择的目标工作簿中。你会找到我所做工作的草稿 谢谢你的帮助和时间

**

Dim Fso作为对象
将f1标注为对象,将f2标注为对象
将sh标注为Excel。工作表的sh浇注表
将SourceWB设置为Excel。工作簿的WB浇注工作簿
将目标WB设置为Excel.工作簿
Dim subf As Variant“我在函数中创建了一个文件对话框,让我选择所需的文件夹
作为整数的Dim i
Dim j尽可能长
尺寸为整型的“板材数量”的板材,用于浇筑混凝土,并将其命名为feuille-dans-le-fichier
第1行的长度相同
第2行的长度相同
Dim lstCol作为整数“最后一列,在我们的位置上的第二列”
将ws1设置为工作表
私有子提取_Click()
应用
.DisplayAlerts=False
.EnableEvents=False
.ScreenUpdate=False
以
设置Fso=CreateObject(“Scripting.FileSystemObject”)
设置DestinationWB=Application.ThisWorkbook
lstRow2=alarmes.Cells(alarmes.Rows.Count,“A”).End(xlUp).Row
报警.单元格.范围(“A2:K”&L行2+1).清除内容
lstRow2=2
对于Fso.GetFolder(subf).子文件夹中的每个f1
对于f1.0文件中的每个f2
如果f2像“*指示符号*”,则
设置SourceWB=Workbooks.Open(f2,只读:=True)
对于SourceWB.工作表中的每个sh
如果sh.Name=“EIF-EIVT-EIPR-EIE mensuelles”,则
lstRow1=sh.Cells(sh.Rows.Count,“A”).End(xlUp).Row
对于i=1到l行1
如果是sh.Range(“X”&i).Value“”,则
'我想复制行,但只复制F、G、P、Q、X、Y列
如果结束
目的wb.Activate
报警范围(“A”&L行2).PasteSpecial“XLPasteValue
Application.CutCopyMode=False
lstRow2=alarmes.Cells(alarmes.Rows.Count,“A”).End(xlUp).行+1
如果结束
下一个sh
工作簿(f2.Name).Saved=True
工作簿(f2.名称)。关闭
如果结束
下一个f2
下一个f1
端接头
**试试看

...
If sh.Range("X" & i).Value <> "" Then
    intersect(sh.rows(i), sh.range("F:G, P:Q, X:Y")).copy _
        destination:=DestinationWB.worksheets("alarmes").cells(lstRow2, "A")
    lstRow2 = lstRow2 + 1
End If
...
。。。
如果是sh.Range(“X”&i).Value“”,则
相交(sh.rows(i),sh.range(“F:G,P:Q,X:Y”))。复制_
目标:=目标WB.工作表(“报警”).单元格(第1行,“A”)
lstRow2=lstRow2+1
如果结束
...

对象不支持Office Shared[vblr6.chm1000438]的此属性或方法(错误438),这可能是因为我无法确定报警所指的内容。它是工作簿中的一个工作表名称,我想在其中粘贴复制的值。您使用它就像使用工作表变量或工作表代码名一样,而不是工作表名称。我会调整的。
...
If sh.Range("X" & i).Value <> "" Then
    intersect(sh.rows(i), sh.range("F:G, P:Q, X:Y")).copy _
        destination:=DestinationWB.worksheets("alarmes").cells(lstRow2, "A")
    lstRow2 = lstRow2 + 1
End If
...