| 
    
     |  | ▼菜実 さん: 
 >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
 
 |  |