Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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 循环浏览工作簿,如果单元格中存在值,则获取该值_Vba_Excel - Fatal编程技术网

Vba 循环浏览工作簿,如果单元格中存在值,则获取该值

Vba 循环浏览工作簿,如果单元格中存在值,则获取该值,vba,excel,Vba,Excel,我对VBA/宏相当陌生,并已设法将工作表名称输入我的活动工作簿。我现在试图检查单元格中是否存在特定的值,然后将其放在我已提取的工作表名称旁边的B列中。只有特定的工作表才会有1-54的值,因为它是IED设备的地址,并且我只关心工作表 目前,我正在使用此代码提取工作表名称,因此我可以继续使用此代码作为提取一系列信息的参考,因为我无法正确参考工作表编号或工作表代码名称 Sub GetSheetnames() 'Turn off alerts Application.DisplayAle

我对VBA/宏相当陌生,并已设法将
工作表
名称输入我的
活动工作簿
。我现在试图检查
单元格中是否存在特定的
,然后将其放在我已提取的
工作表
名称旁边的B列中。只有特定的工作表才会有1-54的值,因为它是IED设备的地址,并且我只关心工作表

目前,我正在使用此代码提取
工作表
名称,因此我可以继续使用此代码作为提取一系列信息的参考,因为我无法正确参考工作表编号或工作表代码名称

 Sub GetSheetnames()
 'Turn off alerts
      Application.DisplayAlerts = False

  'Open the Workbook that i want to look for the worksheet names this 
  'white book template is a save as copy of another file as it makes it 
  'easier to reference as I work with 1000's of file with same format but 
   'are all saved as a different name

  Workbooks.Open Filename:="D:\Projects\ASE Templates\ASE Template White 
  Book.xlsx"
  Dim ws As Worksheet
  Dim i As Integer
  With ThisWorkbook.Worksheets("Tab Names from white book")
  .Range("A:A").ClearContents
  For Each ws In ActiveWorkbook.Worksheets
  i = i + 1
 .Range("A" & i) = ws.Name

 Next ws

End With

 Workbooks("ASE Template White Book.xlsx").Close

  Application.DisplayAlerts = True

 End Sub
我还想补充的是,检查每个
工作表
H4
中的值是否存在,如果存在,则在我的工作表“白皮书中的选项卡名称”A列中提取的工作表名称旁边的B列中显示该值

我确实考虑过重新运行宏来更改

With ThisWorkbook.Worksheets("Tab Names from white book")
   .Range("A:A").ClearContents
   For Each ws In ActiveWorkbook.Worksheets
       i = i + 1
      .Range("A" & i) = ws.Name
   Next ws


它运行,但不执行任何可见操作。任何帮助都将不胜感激。理想情况下,我希望只运行一次宏,同时填写两列

在我看来,您似乎没有限定要选取的单元格范围,并且
设置
为方便以后参考,也建议将工作簿归档

Sub GetSheetnames()
'Turn off alerts
Application.DisplayAlerts = False

'Open the Workbook that i want to look for the worksheet names this
'white book template is a save as copy of another file as it makes it
'easier to reference as I work with 1000's of file with same format but
'are all saved as a different name

Dim wb As Workbook
Set wb = Workbooks.Open("D:\Projects\ASE Templates\ASE Template White Book.xlsx")

Dim ws As Worksheet
Dim i As Integer
With ThisWorkbook.Worksheets("Tab Names from white book")
    .Range("A:A").ClearContents
    For Each ws In wb.Worksheets
        i = i + 1
        .Range("A" & i) = ws.Name
        .Range("B" & i) = ws.Cells(3, 8).Value
    Next ws
End With

wb.Close

Application.DisplayAlerts = True

End Sub
尝试
.Range(“B”和i)=ws.Range(“H4”).value
。如果没有图纸参考,它将参考激活图纸。
.Range("B" & i) = Cells(3,8).Value
Sub GetSheetnames()
'Turn off alerts
Application.DisplayAlerts = False

'Open the Workbook that i want to look for the worksheet names this
'white book template is a save as copy of another file as it makes it
'easier to reference as I work with 1000's of file with same format but
'are all saved as a different name

Dim wb As Workbook
Set wb = Workbooks.Open("D:\Projects\ASE Templates\ASE Template White Book.xlsx")

Dim ws As Worksheet
Dim i As Integer
With ThisWorkbook.Worksheets("Tab Names from white book")
    .Range("A:A").ClearContents
    For Each ws In wb.Worksheets
        i = i + 1
        .Range("A" & i) = ws.Name
        .Range("B" & i) = ws.Cells(3, 8).Value
    Next ws
End With

wb.Close

Application.DisplayAlerts = True

End Sub