現在、ワークブックとワークシート固有の名前付き範囲を含むワークシートをコピーしています。ワークシート固有の参照はそのままにする必要があり、ワークブックの参照はハードコーディングする必要があります。外部参照を含むすべての名前付き範囲を修正する方法を探しています。
私の現在のコードは次のようになりますが、実際には私が求めているものではありません:
Sub HardcodeValuesInExternalNamedRanges(wb As Workbook, ws As Worksheet)
Dim namCur As Name
For Each namCur In wb.Names
If (InStr(1, namCur.RefersTo, ThisWorkbook.Name) > 0) Then
namCur.RefersTo = "=" & ws.Evaluate(namCur.RefersTo)
End If
Next namCur
End Sub
値を適切に固定する方法が見つかりませんでした。現在の方法である程度は機能しますが、名前付き範囲ベースだけでなく、セル内で値が適切に変換されていることをお勧めします。
別のオプションは、すべてのセルをループして、名前付き範囲が含まれているかどうかを確認することですが、これは時間がかかりすぎると思います。
より効率的に行う方法はありますか?