Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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_Loops - Fatal编程技术网

Excel 引用其他工作簿

Excel 引用其他工作簿,excel,vba,loops,Excel,Vba,Loops,我在这里使用指南: 我有一个工作簿“TLA Lookup.xlsx”保存在共享位置。它有一个名为TLAs的工作表。A列由TLA列表组成,B列是相应的企业名称 我有一个宏来检查TLA查找工作簿,只要TLA存在,就用业务名称替换它。我可以在同一个工作簿中执行此操作 我有不同的工作簿,希望在其中查找/替换。每次我都必须从TLA查找工作簿中复制TLA表。我想改为自动引用该工作簿 如何将TLA查找引用为宏需要在其中查找查找/替换文本的工作簿 Sub find_replace_2() 作为字符串的Dim T

我在这里使用指南:

我有一个工作簿“TLA Lookup.xlsx”保存在共享位置。它有一个名为TLAs的工作表。A列由TLA列表组成,B列是相应的企业名称

我有一个宏来检查TLA查找工作簿,只要TLA存在,就用业务名称替换它。我可以在同一个工作簿中执行此操作

我有不同的工作簿,希望在其中查找/替换。每次我都必须从TLA查找工作簿中复制TLA表。我想改为自动引用该工作簿

如何将TLA查找引用为宏需要在其中查找查找/替换文本的工作簿

Sub find_replace_2()
作为字符串的Dim TLA
将名称设置为字符串
我想我会坚持多久
将wb设置为工作簿
Dim sht1作为工作表
'打开包含K驱动器中所有TLA和CI名称的工作簿,
“所以现在两本工作手册都打开了
工作簿。打开的文件名:=_
“K:\CLE01\Team\u QA\coming Change Highlights\TLA Lookup.xlsx”

设置wb=TLA Lookup.xlsx'您可以轻松地执行此操作,但您必须了解
此工作簿
活动工作簿
之间的区别。(有关一些指导,请参见说明和。)

有了这些知识,只需清楚您在代码中引用的工作簿:

编辑:下面示例中的扩展代码


谢谢,这确实帮助我理解了我丢失的工作簿。然而,现在实际的更换不起作用。“注释”部分不允许我将新代码放在lol中。它打开和关闭TLA查找工作簿,但它从未进行实际替换。@Shae1999-上面提供的示例中的代码在我自己的示例数据中工作。我看到的情况是,它正在进行更改,但在查找表上,而不是在我正在处理的工作表上。我想我仍然在使用ActiveWorkbook与ThisWorkbook时遇到问题。不应编辑该工作簿。我在“book1”中,突出显示了一个单元格,我希望宏引用tlaLookup工作簿,即book1单元格a1中存在的TLA的a列,并将其替换为匹配行的B列内容。因此,book1中的“ABC”现在变为“Alpha Bravo Charlie”,因为TLA查找在单元格a4中显示ABC,在单元格b4中显示Alpha Bravo Charlie。请修改代码示例以匹配您的数据、工作簿和环境。
Option Explicit

Sub find_replace_3()
    Dim tlaLookupWB As Workbook
    Dim tlaSheet As Worksheet
    Set tlaLookupWB = Workbooks.Open(Filename:= _
        "K:\CLE01\Team_QA\Upcoming Change Highlights\TLA Lookup.xlsx")
    Set tlaSheet = tlaLookupWB.Sheets("TLAs")
    
    '--- determine how many rows of TLAs exist
    Dim numberOfTLAs As Long
    With tlaSheet
        numberOfTLAs = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With
    
    '--- replacements will be made in the currently active workbook
    Dim wb As Workbook
    Set wb = ActiveWorkbook
    
    '--- now check all of the TLAs and make replacements if found
    Dim i As Long
    For i = 1 To numberOfTLAs
        Dim tla As String
        Dim name As String
        tla = tlaSheet.Cells(i, 1).Value
        name = tlaSheet.Cells(i, 2).Value
            
        '--- search all of the worksheets in the current workbook
        '    and replace the tla with the name
        Dim ws As Worksheet
        For Each ws In wb.Sheets
            ws.Cells.Replace What:=tla, Replacement:=name, _
                             LookAt:=xlWhole, SearchOrder:=xlByRows, _
                             MatchCase:=False, SearchFormat:=False, _
                             ReplaceFormat:=False
        Next ws
    Next i
    
    tlaWB.Close SaveChanges:=False
End Sub