• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelのリンクに関して)

Excelのリンク移行方法とは?

このQ&Aのポイント
  • Mドライブに入っている基礎データをGドライブにリンクさせている場合、MドライブがHドライブに移行することになった場合、GドライブのExcelファイルのリンク元もMドライブからHドライブに変更する必要があります。対象のExcelファイルを1つ1つ開いて置換で変更する方法もありますが、作業量が多くなるため、もっと簡単な方法があれば知りたいです。
  • Excelファイルのリンク移行についてお聞きします。現在、Mドライブに保存されている基礎データをGドライブにリンクさせていますが、MドライブがHドライブに移行することになりました。この場合、GドライブのExcelファイルのリンク元もMドライブからHドライブに変更する必要があります。手作業で1つずつ変更する方法もありますが、もっと効率的な方法を教えていただけないでしょうか?
  • Mドライブに保存されている基礎データをGドライブにリンクさせていますが、MドライブがHドライブに移行することになりました。そのため、GドライブのExcelファイルのリンク元も変更する必要があります。1つずつ変更する方法もありますが、手間がかかるため、もっと簡単な方法を知りたいです。お知恵をお貸しいただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

再度こんにちは、KenKen_SP です。 指定フォルダ内のExcelファイルにおいて、一括置換を行うコードです。 検索語や置換語はディフォルトで使えるようにしてありますが、指定 することもできます。 すみませんが、かなり即効でつくったので、動作確認が不十分です。 試す場合は必ずバックアップを取ってからお試し下さい。無保証です。 シートが保護されていたりすると置換に失敗しますので、その際はエラー ログを出力する仕様にはしましたが、手抜きですので、こちらの処理で エラーがでるかも。余り大量のファイルを一度に処理しない方がいいと 思います。 標準モジュールに貼り付けて下さい。 余談ですが、数式によるリンク部の置換を対象としていますが、コード を一箇所直すと値の一括置換ができます。この場合、REPLACE_EX 関数の 第4引数を False にするだけです。 Option Explicit '// フォルダ内の複数のブックで置換処理 Sub REPLACE_MANY_BOOKS()      '※Thisworkbookは対象外となります      Dim WB As Workbook   Dim SH As Worksheet   Dim FSO As Object   Dim objFOLDER As Object   Dim strERRLOG As String   Dim sBEFORE  As String   Dim sAFTER   As String   Dim sERRMES  As String   Dim lngCNT   As Long   Dim strLOGPATH As String   Dim strDIR   As String   Dim strPATH  As String       '検索語指定   sBEFORE = InputBox(Prompt:="検索語を入力して下さい", Default:="M:\")   If sBEFORE = "" Then Exit Sub   '置換語指定   sAFTER = InputBox(Prompt:="置換語を入力して下さい", Default:="H:\")   If sAFTER = "" Then Exit Sub   'フォルダ選択ダイアログ表示   Set objFOLDER = CreateObject("Shell.Application"). _     BrowseForFolder(0, "フォルダを選択してください", 0, vbNullString)   If Not objFOLDER Is Nothing Then     strDIR = objFOLDER.Self.Path     Set objFOLDER = Nothing   Else     Exit Sub   End If   'エラーログの場所   strLOGPATH = strDIR & "\ERRORLOG.txt"   '警告処理   lngCNT = MsgBox( _         Prompt:="このマクロは一括置換を行い自動で上書きします。" & vbCrLf _           & "必ずバックアップを取ってから実行して下さい。" _           & vbCrLf & vbCrLf _           & "処理対象:" & strDIR & vbCrLf _           & "処理内容:" & sBEFORE & " --> " & sAFTER, _         Buttons:=vbOKCancel + vbDefaultButton2 + vbExclamation, _         Title:="実行許可")   If lngCNT = vbCancel Then Exit Sub        '初期化   lngCNT = 0   strERRLOG = "/// 以下のファイルで置換に失敗しました ///" & vbCrLf _         & vbCrLf & "・フォルダー:=" & strDIR _         & vbCrLf & "・検索する語:=" & sBEFORE _         & vbCrLf & "・置換する語:=" & sAFTER & vbCrLf & vbCrLf      'ファイル検索&置換処理   On Error GoTo TERMINATE   With Application     .ScreenUpdating = False     .StatusBar = True     .Cursor = xlWait   End With   strPATH = Dir(strDIR & "\*.xls") '<------------検索ファイル指定   If strPATH = "" Then Exit Sub   Do     strPATH = strDIR & Application.PathSeparator & strPATH     If strPATH <> ThisWorkbook.FullName Then       Set WB = Workbooks.Open(strPATH)       Application.StatusBar = "TARGET:=" & WB.Name       DoEvents       For Each SH In WB.Worksheets         '※REPLACE_EX関数のオプション第4引数にTrueを指定すると         '※数式の置換になる         If Not REPLACE_EX(SH, sBEFORE, sAFTER, sERRMES, True) Then           strERRLOG = strERRLOG _             & "---------------------------------------------------------------" _             & vbCrLf & "◆" & WB.Name & "[ " & SH.Name & "]" _             & vbCrLf & "※" & sERRMES & vbCrLf           lngCNT = lngCNT + 1         End If       Next SH       WB.Close SaveChanges:=True     End If     strPATH = Dir()   Loop Until strPATH = ""   Set WB = Nothing      '終了処理   If lngCNT = 0 Then     MsgBox "正常終了しました", vbInformation   Else     'ロギング     MsgBox lngCNT & "件のシートで置換に失敗しました。" & _         "エラーログを出力します。", vbExclamation     Set FSO = CreateObject("Scripting.FileSystemObject")     With FSO.CreateTextFile(strLOGPATH, True)       .WriteLine (strERRLOG)       .Close     End With     Set FSO = Nothing     'エラーログ表示     Shell "notepad.exe " & Chr(34) & strLOGPATH & Chr(34), vbNormalFocus   End If TERMINATE:   With Application     .Cursor = xlDefault     .StatusBar = ""   End With     End Sub '// 置換処理関数 Public Function REPLACE_EX( _   ByRef SH As Worksheet, _   ByRef sBEFORE As String, _   ByRef sAFTER As String, _   ByRef sERRMES As String, _   Optional ByVal FORMULA_ONLY As Boolean = False) As Boolean   Dim rngTARGET As Range      On Error GoTo ERROR_HANDLER   If FORMULA_ONLY Then     'SpecialCellsValues Class     '(xlErrors OR xlLogical OR xlNumbers OR xlTextValues)=23     Set rngTARGET = SH.Cells.SpecialCells(xlCellTypeFormulas, 23)   Else     Set rngTARGET = SH.UsedRange   End If   rngTARGET.Replace _       What:=sBEFORE, _       Replacement:=sAFTER, _       LookAt:=xlPart, _       MatchCase:=False   REPLACE_EX = True   sERRMES = ""   Exit Function ERROR_HANDLER:   REPLACE_EX = False   sERRMES = Err.Description & vbCrLf   Err.Clear End Function

orange_flog7071
質問者

お礼

ありがとうございます。 すっごい・・・ ところどころしか意味がわかりませんが 早速月曜日に行ってみます。 取り急ぎ御礼を・・・と思いまして・・・^^ 結果をまた補足させていただきます。

orange_flog7071
質問者

補足

早速使用してみました。 きちんとできました。 わかりやすいように説明もしていただき ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは、KenKen_SP です。 移行した理由がHDDの増設とかパーティションを切ったとかですか? ファイルそのものを M に移すわけにはいかないのですか? これができれば簡単だろうけど、できない場合は、現状の H が H というドライブレターである理由が特にないならドライブレターを 割り当て直すのも手ですね。 現在の H ドライブ --> ドライブレターを M に戻す 現在の M ドライブ --> ドライブレターを適当に空いてるとこに変更 UNIX みたいにシムリンクができれば一発なんですけどね~。 Excel VBA でリンク先を一括置換する方法もありますが、間違って 置換してしまう事故の可能性がありますね。もし希望があれば、 リンクの状況をもう少し詳しく説明して下さい。変換前と変換後の 数式の例とか。

orange_flog7071
質問者

お礼

早々のご回答ありがとうございます。 社内のシステムの関係で 今まであったサーバーにあった Mドライブは完全に削除され その代わりにサーバー上にHドライブができる。 といった感じです。 これだとやはり置換が一番なんでしょうか? 簡単に、社内のシステムに触ることなくできる 方法があれば、教えていただけると助かります。

全文を見る
すると、全ての回答が全文表示されます。
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

>MドライブがHドライブに移行される Hドライブに移行されたあとには新たなMドライブが接続されてしまうのでしょうか? Mドライブが使用されないのであればHドライブのリンク先のフォルダを共有にしてマイネットワークからフォルダをマイコンピュータにドラッグしMドライブとして接続するのはどうでしょうか。 リンクのフルパスに合うようにフォルダの階層を作れば行けると思いますが・・。 試したことはありませんが行けると思いますけど・・。

orange_flog7071
質問者

お礼

早々のご回答ありがとうございます。 社内のシステムの関係で Mドライブの中味が全てHドライブになり Mドライブは削除されてしまう。 ということなんです。 この場合だとやはり置換しかないんでしょうか? 参考にさせていただきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 社内でのパソコン/ドライブに飛べるリンク

    社内のパソコンでデータを共有するために、社内のパソコンのみからアクセスできるドライブ(GドライブとかHドライブと呼んでいます)を使用しています。 そのドライブ内に保存したエクセルファイル等にアクセスするためのリンクの作成の仕方を教えて下さい。 人から来るメールには、file://G:\(ファイルの場所)\(ファイルの場所)\….xls などというリンクが貼ってあり飛べるのですが、自分で上記のように書いても、 リンクとして機能しません。 わかりにくく恐縮ですが、このような説明でわかるかたいらしたら宜しくお願い致します。

  • エクセルのリンクについて質問です。

    エクセルのファイルリンクについて質問です。 エクセルのブック2つをリンクさせていました。 今までは、「開いているブックには他のブックに自動リンク・・・・」メッセージが出て「はい」を選択するとリンクできていたのですが、ある日、「開いているブックには他のブックに自動リンク・・・・」で「はい」を選択したら、「ファイルが見つかりません」と出てしまうようになってしまいました。その後、参照ファイルを選んでいくとファイルはリンクします。 毎回、この作業をするのは大変です。 元に戻す方法はありませんか?

  • エクセルファイルのフォルダー移動でのリンク切れについて

    エクセルで作ったファイルを、別のドライブにコピーしたらリンクが切れて終いました。 (例)ファイル1のシート1のA1セルとファイル2のシート1のセル3をリンクさせていましたが Cドライブから Fドライブにコピーしたら リンクしなくなりました。リンクさせていたのは、入力内容が同じのなるようにしてました。 ファイルが 膨大なので楽にリンク切れが無くなるような方法はないですか? 

  • Excelのリンクについて教えてください

    説明が分かりにくくなってしまうのですが、よろしくお願いします。 Zドライブ/Xフォルダ/Aフォルダ/ファイル1~ファイル9までがあります。 ファイル2~9は様々な箇所でファイル1のリンクが張り付けられています。 このAフォルダの中のファイル1~9をコピーし、 Zドライブ/Xフォルダ/以下にBフォルダを作成し、 ファイル1~9を張り付けたときに、Aフォルダのファイル1の内容のリンクではなく、 Bフォルダのファイル1の内容がリンクするように設定するには、再度2~9までにリンクを張りなおさなければいけませんでしょうか?なにか他に簡単にリンクの設定ができる方法がありましたら教えてください。

  • EXCELで"Tab"を"@"に置換したい

    あるデータをCSVファイルに落としたところ、文字と文字の間にTabキー1押し分スペースが開いていました。それを"@"に置換したいのですが、エクセルの置換ではうまく行きません。ノートパッドでは、簡単に置換できるのですが、エクセルでは、Tabの1押し分のスペースを置換対象文字列に指定することができずに困っています。どなたか、エクセルでTabを置換対象に指定する方法をご存じないでしょうか。

  • EXCELで「このブックには、ほかのデータソースへのリンクが設定されて

    EXCELで「このブックには、ほかのデータソースへのリンクが設定されています。」と出る。 更新するかどうかを聞いてきますが自分ではリンクの設定をした覚えがありません。 ただ、他のEXCELファイルからコピーしてる事は多いので、その時に何かあったのでは と思いますが見つかりません。 (一応、貼り付け時にリンクになってしまった時は置換を使って消してます) 編集のリンクの設定を見ると他EXCELファイル(一つ)とリンクしているように表示はされます。 編集>検索>ブック検索で「xls」や「ファイル名」「[」で検索してもヒットしません。 シート毎に同じ検索をしてもヒットしませんでした。 これは、どういうことなのでしょうか? 自分の検索方法が悪いのか、それとも別の理由があるのか・・・ 何か判る方、どうかよろしくお願いします。 EXCELバージョン:2002 SP3

  • エクセルのリンク元

    エクセルのセルに、リンクを組みましたが、リンク元のファィルのドライブを間違えてしまいました。(フロッピーからリンクさせたかったのに、ハードディスクからのリンクにしてしまった) 一括して、リンク元を変更する方法は、ありますでしょうか。

  • Excelでリンクしている個所を知りたい

    Excelファイルを開いたら「他のファイルとリンクしている」のメッセージが出て、リンク元のファイル名が表示されます。開いたファイルはたくさん数式が入っているので数式表示してみても、どこが他ファイルとリンクしているのか探すのが大変です。簡単に調べる方法ないでしょうか

  • EXCELでのLINK先変更方法について

    EXCELファイルで他のEXCELファイルにLINKしています。 LINK先ファイルはEXCELファイルにより様々です。 それで、マクロでLINK先ファイルを読み込み、判断してLINK先ファイルを変更したいと思います。 その場合にマクロでLINK先ファイルの読み込み方法をどのようにすればよいのかわかりません。教えて下さい。

  • エクセルで「々」を置換しようとしたら

    エクセルで「々」を置換しようとしたら、「ー」まで対象となってしまいましたが これをやめさせる方法はありますか? 「々」のみ置換したいです。 「セル内容が完全に同一であるものを検索する」 の意味ではなく、 「々」を対象としたときには、「ー」は除外させたいです。

専門家に質問してみよう