Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


25067 / 76732 ←次へ | 前へ→

【57009】Re:リンクの更新
発言  ハチ  - 08/7/17(木) 13:01 -

引用なし
パスワード
   ▼菜実 さん:

>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
0 hits

【56990】リンクの更新 菜実 08/7/16(水) 16:26 質問
【57002】Re:リンクの更新 ハチ 08/7/17(木) 9:16 発言
【57003】Re:リンクの更新 菜実 08/7/17(木) 9:39 発言
【57005】Re:リンクの更新 ハチ 08/7/17(木) 11:16 発言
【57007】Re:リンクの更新 菜実 08/7/17(木) 11:31 お礼
【57009】Re:リンクの更新 ハチ 08/7/17(木) 13:01 発言
【57013】Re:リンクの更新 菜実 08/7/17(木) 13:58 お礼
【57035】Re:リンクの更新 菜実 08/7/18(金) 10:02 質問
【57036】Re:リンクの更新 ハチ 08/7/18(金) 11:17 発言
【57043】【訂正】Re:リンクの更新 ハチ 08/7/18(金) 17:08 発言
【57074】Re:【訂正】Re:リンクの更新 菜実 08/7/22(火) 9:39 お礼

25067 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free