[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで外部参照パスの置換』(勉強中)
はじめまして。
エクセルファイルの移動がありまして、ファイルに記載されている
外部参照のリンク先を一括で変更したいと考えております。
(約5ブック、50シート、2000セルくらいが置換対象です。)
下記コードを試してるのですが、うまく動きません・・・
パスの一部を置換しようとしているのですが、毎回、値の更新を
聞かれます。この更新が無ければ変換できると思っているのですが。
アドバイス頂けると幸いです。
Sub 全シート置換()
Application.ScreenUpdating = False
Dim i As Long, mySheetCnt As Long mySheetCnt = ThisWorkbook.Sheets.Count For i = 1 To mySheetCnt Sheets(i).UsedRange.Replace What:="Ad-server", Replacement:="File-server" 'Next n Next i Application.ScreenUpdating = True End Sub
< 使用 Excel:Office365、使用 OS:Windows7 >
うまく動きません・・・ どのようにうまく動かないのかわかりませんが、下記コードを試したところ正常に置換できました。
Sub test() Dim 置換前 As String Dim 置換後 As String Dim MySH As Worksheet
置換前 = "○○○" 置換後 = "×××"
For Each MySH In ThisWorkbook.Worksheets MySH.UsedRange.Replace What:=置換前, Replacement:=置換後 Next MySH
End Sub
次に、置換後をわざと【存在しないパス】にして実行したところ、値の更新ウィザードで、ブックのある場所をちゃんと教えなさいって怒られたので、Application.DisplayAlerts = False にしたうえで実行したところ、当たり前ですが値の更新ウィザードは出なくなりました。
ただ、置換は正常にされますのでセルの値は#REF!というエラーになりました。
なので、まずは置換後のパスが間違っていないか見直すのが第一
その上でとりあえず置換したいなら
Sub test2() Dim 置換前 As String Dim 置換後 As String Dim MySH As Worksheet
置換前 = "○○○" 置換後 = "×××"
Application.DisplayAlerts = False For Each MySH In ThisWorkbook.Worksheets MySH.UsedRange.Replace What:=置換前, Replacement:=置換後 Next MySH Application.DisplayAlerts = True
End Sub
とされてはいかがでしょうか。
※直してしまいましたが、For 〜Nextステートメント、For Each 〜 Nextステートメント どちらでもお好きな方でよいとおもいます。
(もこな2) 2019/06/05(水) 12:53
ありがとうございます!!
Application.DisplayAlerts = False を入れたことで
更新ウィザードが止まりました。
いろいろと検索したのですが、やっと解決できてよかったです。
これで作業がはかどります。m(_ _)m
(勉強中) 2019/06/05(水) 13:48
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.