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

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

KenKen_SPの回答

  • ベストアンサー
  • 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
質問者

補足

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

関連する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先ファイルの読み込み方法をどのようにすればよいのかわかりません。教えて下さい。

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

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