- ベストアンサー
Excelのリンク移行方法とは?
KenKen_SPの回答
再度こんにちは、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
関連する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
- ベストアンサー
- その他MS Office製品
- エクセルのリンク元
エクセルのセルに、リンクを組みましたが、リンク元のファィルのドライブを間違えてしまいました。(フロッピーからリンクさせたかったのに、ハードディスクからのリンクにしてしまった) 一括して、リンク元を変更する方法は、ありますでしょうか。
- ベストアンサー
- Windows NT・2000
- Excelでリンクしている個所を知りたい
Excelファイルを開いたら「他のファイルとリンクしている」のメッセージが出て、リンク元のファイル名が表示されます。開いたファイルはたくさん数式が入っているので数式表示してみても、どこが他ファイルとリンクしているのか探すのが大変です。簡単に調べる方法ないでしょうか
- ベストアンサー
- Windows Vista
- EXCELでのLINK先変更方法について
EXCELファイルで他のEXCELファイルにLINKしています。 LINK先ファイルはEXCELファイルにより様々です。 それで、マクロでLINK先ファイルを読み込み、判断してLINK先ファイルを変更したいと思います。 その場合にマクロでLINK先ファイルの読み込み方法をどのようにすればよいのかわかりません。教えて下さい。
- 締切済み
- オフィス系ソフト
- エクセルで「々」を置換しようとしたら
エクセルで「々」を置換しようとしたら、「ー」まで対象となってしまいましたが これをやめさせる方法はありますか? 「々」のみ置換したいです。 「セル内容が完全に同一であるものを検索する」 の意味ではなく、 「々」を対象としたときには、「ー」は除外させたいです。
- ベストアンサー
- Excel(エクセル)
お礼
ありがとうございます。 すっごい・・・ ところどころしか意味がわかりませんが 早速月曜日に行ってみます。 取り急ぎ御礼を・・・と思いまして・・・^^ 結果をまた補足させていただきます。
補足
早速使用してみました。 きちんとできました。 わかりやすいように説明もしていただき ありがとうございました。