Excel VBA質問箱 IV

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

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


25067 / 76736 ←次へ | 前へ→

【57013】Re:リンクの更新
お礼  菜実  - 08/7/17(木) 13:58 -

引用なし
パスワード
   ▼ハチ さん:

こんにちは。
ハチさんありがとうございます。
早速試しました。Sample2のほうが少し、早いような気がしました。
同じような方法で作り直してみようとおもいます。
リンク元の必要なデータを自ブックにもってくれば少し改善されるということですよね?

足りない頭で考えてみたんですが、
ブックを開くときに、リンク元の必要なデータをコピーして貼り付けて
それを参照するようにしてみようと思います。

他にいい方法あれば、アドバイスお願いします。


>▼菜実 さん:
>
>>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 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free