プロが教えるわが家の防犯対策術!

特定フォルダ内に15個のエクセルファイルがあります。各ファイルにはデータのリンクが含まれています。
それを、マクロで一気に15個のファイルのリンクを解除にしたいのですが、そんなマクロあるのでしょうか?リンクの数は10個程度です。
もしご存知の方がいらっしゃいましたら是非ご教授願います。

エクセル2010です。

質問者からの補足コメント

  • うーん・・・

    ありがとうございます!
    すみません、リンクも色々あるかもしれません。
    マクロの記録で確認したところ、以下のようにでましたので、Breaklinkを使用するようです。
    どのように修正すればよいか教えて頂けますと幸いです。
    ActiveWorkbook.BreakLink Name:= _
    "\\○○\○○.xlsx" _
    , Type:=xlExcelLinks

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/07/31 10:26

A 回答 (2件)

こんにちは。



大変失礼しました。私は、質問を読み違えてしまいました。
変更したのは、下の部分のOpenFiles の部分だけです。
これで様子をみてください。

'//
Sub RemoveHeperlinkObject()
Const mPATH As String = "C:\Users\[UserName]\My Documents\Test1\" '行末には¥を入れること
Dim FName As String
FName = Dir(mPATH & "*.xls?", vbNormal)
Do While FName <> ""
  If FName <> "." And FName <> ".." Then
    If (GetAttr(mPATH & FName) And vbNormal) = vbNormal Then
     Call OpenFiles(mPATH & FName)
    End If
  End If
  FName = Dir
Loop
End Sub
'//
Sub OpenFiles(ByVal fn As String)
 Dim flg As Boolean
 Dim ar As Variant
 Dim n As Variant
 With Workbooks.Open(fn) 'これ以下変更
  ar = .LinkSources(Type:=xlLinkTypeExcelLinks)
  If Not IsEmpty(ar) Then
   For Each n In ar
    .BreakLink Name:=n, _
    Type:=xlLinkTypeExcelLinks
   Next
  End If
  If .Saved = False Then
   .Save
  End If
  .Close False
  flg = False
 End With
End Sub
'///
    • good
    • 1

あくまでも、リンクだけを取り去ればよいのですね。

文字は、そのままです。もし、ファイル数が多い場合は、On Error トラップを設けて、エラーで止まらないようにしますが、今回は、少ないのでそのままにしています。なお、編集されたかどうかは、タイムスタンプを見れば分かります。編集されていないファイルは、タイムスタンプは前のままです。

'//
Sub RemoveHeperlinkObject()
Const mPATH As String = "C:\Users\[UserName]\My Documents\Test1\" '行末には¥を入れること
Dim FName As String
FName = Dir(mPATH & "*.xls?", vbNormal)
Do While FName <> ""
  If FName <> "." And FName <> ".." Then
    If (GetAttr(mPATH & FName) And vbNormal) = vbNormal Then
     Call OpenFiles(mPATH & FName)
    End If
  End If
  FName = Dir
Loop
End Sub
Sub OpenFiles(ByVal fn As String)
Dim sh As Worksheet
Dim hyp As Hyperlink
 With Workbooks.Open(fn)
  For Each sh In .Worksheets
   For Each hyp In sh.Hyperlinks
   hyp.Delete
   Next hyp
  Next sh
  If .Saved = False Then
  .Save
 End If
  .Close False
 End With
End Sub
'///
この回答への補足あり
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています