Em link :
=’file:///Path & File Name’#$SheetName.CellName.
Eu deduzo disso que não há como incluir um intervalo nomeado como parte da referência. No entanto, existem várias coisas que podem ser feitas com macros. Uma ideia que eu tive usa o seguinte código:
Sub GetExternalNamedRanges
Dim rangeNames As New Collection
Dim namedRanges As New Collection
oSheet = ThisComponent.Sheets.getByName("External Ranges")
column = 1
Do
filepath = oSheet.GetCellByPosition(column,0).getString()
If filepath = "" Then
Exit Do
End If
otherComponent = StarDesktop.loadComponentFromUrl( _
filepath, "_default", 0, Array())
oRanges = otherComponent.NamedRanges
namedRanges.Add(oRanges)
For Each oRange In oRanges
rangeName = oRange.getName()
If Not Contains(rangeNames, rangeName) Then
'rangeNames.Add(oRange.getContent(), oRange.getContent())
rangeNames.Add(rangeName, rangeName)
End If
Next
column = column + 1
Loop
row = 1
For Each rangeName In rangeNames
column = 0 'column A
oCell = oSheet.GetCellByPosition(column,row)
oCell.setString(rangeName)
'oCell.setString(oRange.getName())
For Each namedRange In namedRanges
column = column + 1
If namedRange.hasByName(rangeName) Then
oRange = namedRange.getByName(rangeName)
oCell = oSheet.GetCellByPosition(column,row)
oCell.setString(oRange.getContent())
End If
Next
row = row + 1
Next
End Sub
' Returns True if the collection contains the key, otherwise False.
Function Contains(coll As Collection, key As Variant)
On Error Goto ErrorHandler
coll.Item(key)
Contains = True
Exit Function
ErrorHandler:
If Err <> 5 Then
MsgBox "Error " & Err & ": " & Error$ & " (line : " & Erl & ")"
End If
Contains = False
End Function
Para usar isso, crie uma planilha no documento principal chamada "External Ranges". Na célula, digite "nome do arquivo". Na célula B1, insira o caminho para o primeiro arquivo que precisa ser referenciado, começando com "file: ///". Na célula C1, insira o segundo arquivo, se houver, e D1, etc., se houver mais arquivos.
Agora, execute a macro, que extrairá os locais de todos os intervalos nomeados nesses documentos. O resultado é assim:
Emseguida,useessesintervaloscomVLOOKUP
:
=INDIRECT("'" & VLOOKUP("filename", NamedRangesList, 2) & "'#" & VLOOKUP("animal", NamedRangesList, 2))
Isso atrairá o valor do intervalo chamado "animal" (que está localizado em $ Sheet1. $ C $ 2 neste exemplo) do primeiro arquivo.
Esta fórmula usando INDIRECT
é bastante complicada, mas pode ser reduzida criando uma função básica. A função poderia levar apenas o número do arquivo e o nome do intervalo como argumentos e executaria o INDIRECT
e VLOOKUP
work.