[[20190605112045]] 『VBAで外部参照パスの置換』(勉強中) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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


>>もこな2さん

ありがとうございます!!

Application.DisplayAlerts = False を入れたことで
更新ウィザードが止まりました。

いろいろと検索したのですが、やっと解決できてよかったです。

これで作業がはかどります。m(_ _)m
(勉強中) 2019/06/05(水) 13:48


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.