|
▼菜実 さん:
>Vlookupを使用しているのは、各ブックで1列だけです。
>他は、リンク元の値を表示するのに単純な数式入れてます。
何度も同じ値を参照するのであれば、
Book間のリンクは最小限にして、
自Bookにもってきた値を参照するようにすると改善されると思います。
以前に書いたサンプルがありましたので、
参考までに載せときます。(Book間VLOOKUPを改善したものです)
Sample1.xls, Sample2.xls, data.xlsの3つのBookが作成されます。
Sample1.xls と Sample2.xls の開く速度の違いを確認してください。
Option Explicit
Sub Sample_VLOOKUP()
Dim Wb(2) As Workbook
Dim i As Integer
Dim myPath As String
myPath = ThisWorkbook.Path
'data.xls
Set Wb(0) = Workbooks.Add(xlWBATWorksheet)
With Wb(0)
.Worksheets(1).Name = "data"
With .Worksheets("data")
.Range("A1:A1000").Formula = "=ROW()"
.Range("B1:J1000").Formula = _
"=""data"" & ROW() & ""-"" & COLUMN()"
.UsedRange.Value = .UsedRange.Value
End With
.SaveAs myPath & "\data.xls"
End With
'Sample1.xls
Set Wb(1) = Workbooks.Add(xlWBATWorksheet)
With Wb(1)
.Worksheets(1).Name = "main"
With .Worksheets("main")
.Range("A1:A1000").Formula = "=ROW()"
.Range("A1:A1000").Value = .Range("A1:A1000").Value
.Range("B1:J1000").Formula = _
"=VLOOKUP($A1,'[data.xls]data'!$A$1:$J$1000,COLUMN(),0)"
End With
Wb(1).SaveAs myPath & "\Sample1.xls"
End With
'Sample2.xls
Set Wb(2) = Workbooks.Add(xlWBATWorksheet)
With Wb(2)
.Worksheets.Add Before:=.Worksheets(1)
.Worksheets(2).Name = "tmp"
With .Worksheets("tmp")
.Range("A1:J1000").Formula = "='[data.xls]data'!A1"
End With
.Worksheets(1).Name = "main"
With .Worksheets("main")
.Range("A1:A1000").Formula = "=ROW()"
.Range("A1:A1000").Value = .Range("A1:A1000").Value
.Range("B1:J1000").Formula = _
"=VLOOKUP($A1,tmp!$A$1:$J$1000,COLUMN(),0)"
End With
Wb(2).SaveAs myPath & "\Sample2.xls"
End With
Application.AskToUpdateLinks = False
For i = 0 To 2
Wb(i).Close
Set Wb(i) = Nothing
Next
End Sub
|
|