ここから本文です

複数のExcelファイルの数式に入ったパス情報を、一括変換できるツールは無いでしょ...

osu********さん

2018/3/2216:28:51

複数のExcelファイルの数式に入ったパス情報を、一括変換できるツールは無いでしょうか。

今度ファイルサーバを移設するのですが、新しいファイルサーバではIPやホスト名が変更になります。

現行のファイルサーバ内には大量のExcelファイルがあり、
その中には同サーバ内の他のExcelファイルのパスを参照する数式を入力したものもあるのですが、
サーバ移設に伴い、パスの参照先を変更する必要が出てきています。

Excelファイルを1つ1つ開いて数式の参照先を変更するのではかなり時間がかかる為、
何かしらのツールを用いて一括変換ができないものでしょうか。

文字列の置換であれば、「AiperEditex」というツールで変換ができそうなのですが、
このツールでは数式が変換できなかったため、数式の変換ができるツールがあればと思います。

閲覧数:
243
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

sk_********さん

編集あり2018/3/2406:08:16

例えば、下のように、数式内の文字列を変換するのであれば、ExcelのVBAがお手軽だと思います。

='C:\Users\SK\Desktop\新しいフォルダー\[Book1.xlsx]Sheet1'!$A$1

='D:\新しいフォルダー\[Book1.xlsx]Sheet1'!$A$1

次のコードは一つの例です。標準モジュールに貼り付けて、マクロを実行してください。

Sub Sample()
    Const conBefore As String = "C:" '検索文字列
    Const conAfter As String = "D:" '置換後の文字列
    Dim SH As Worksheet, strDirPath As String, strTarget As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then strDirPath = .SelectedItems(1)
    End With
    If Len(strDirPath) = 0 Then Exit Sub
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        strTarget = Dir(strDirPath & "\*.xls?")
        Do Until strTarget = ""
            With Workbooks.Open(strDirPath & "\" & strTarget)
                For Each SH In .Worksheets
                    SH.Cells.Replace What:=conBefore, Replacement:=conAfter
                Next
                If Not .Saved Then .Save
                .Close
            End With
            strTarget = Dir()
        Loop
        strTarget = Dir("")
        .DisplayAlerts = True
        .ScreenUpdating = True
    End With
End Sub

マクロを実行すると、フォルダの選択になります。
フォルダを選択すると、そのフォルダ内全てのExcelファイルの全シートの文字列を検索し、任意の文字列を置換します。
コード内の「検索文字列」と「置換後の文字列」の中身は任意に書き換えてください。

  • 質問者

    osu********さん

    2018/3/2708:21:38

    ご回答ありがとうございます。
    なるほど、マクロでやる方法もあるということですね。確かにツールを探すより作ってしまった方が早いかも知れません。
    アドバイスありがとうございます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/3/28 20:31:24

ありがとうございます。
マクロで対応出来そうです。
大変助かりました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる