[[20200411184306]] 『複製を作る』(いちご) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複製を作る』(いちご)

リンクのある複数ブックをリンクを維持しないでいっぺんに
複製を作成する方法を教えてください

リンクはシート間、ブック間、ハイパーリンク等、色々あります
ところどころセルも結合してます

一つづつ解除すると3日かかります
何かいい方法がありましたら教えてください

< 使用 Excel:Excel2019、使用 OS:Windows10 >


>一つづつ解除すると3日かかります
どんな作業をされたのでしょうか?
すべて値に複写してしまうのではダメなんですか?
そういう作業をする目的はなんでしょうか?
容量圧縮?ですか?

(γ) 2020/04/11(土) 19:49


ブックがすごっく大量にあって、ひとつのブックに大量のシートがあります

目的は教えてもらえませんでしたが、多分どこかに提出するためのに作成が必要で
リンク基のファイルは提出しない、社外秘等のものだから渡すことができないのだ
と思います

パソコンに不慣れな人もいるのでいっぺんに複製を作れる方法がないかと
調べてVBA作ってみました

初めて作ってからおかしいところがあるかもしれません
セルの結合があってもリンクの解除ができるようにするにはどうしたらいいか
教えてください

Sub リンク解除()

        Dim fn As String
        Dim wb As Workbook
        Dim ws As Worksheet
        Dim lnk As Variant
        Dim lo As ListObject
        fn = ThisWorkbook.Path & "\【配布用】" & ThisWorkbook.Name
        ThisWorkbook.SaveCopyAs fn
        Application.DisplayAlerts = False
        Set wb = Workbooks.Open(fn)
        Application.DisplayAlerts = True
        For Each lnk In wb.LinkSources(Type:=xlExcelLinks)
            wb.BreakLink Name:=lnk, Type:=xlLinkTypeExcelLinks
        Next lnk
        For Each ws In wb.Sheets
            For Each lo In ws.ListObjects
                lo.Unlink
            Next lo
        Next ws
        wb.Save
        MsgBox "リンクを解除しました。"

    End Sub

(いちご) 2020/04/13(月) 13:04


私はクライアント先にデータ提出するのにコピーを作ります
リンク解除面倒くさいですよね
提出用だから体裁も整えてなきゃいけないし、値貼り付けだとダメなんですよね
そういうものがあったらと日頃より思ってました

VBAはやったことないのでお力になれませんが、きっと知識のある方が答えてくれると思います

(SON) 2020/04/13(月) 14:51


 ちょっとほしいかも...

 式を値に置き換えるのは以下でどうでしょう。
 同一シート内の参照だけ残ります。

 他にも名前の定義とか、条件付き書式のリストとか、
 いろいろ外部参照あるので面倒ですね

 Sub Formula2Value(ws As Worksheet)

    Dim aCell  As Range, pRng As Range
    For Each aCell In Cells.SpecialCells(xlCellTypeFormulas).Cells
      Set pRng = Nothing
      On Error Resume Next
         Set pRng = aCell.Precedents
      On Error GoTo 0
      If pRng Is Nothing Then
         aCell.Value = aCell.Value
      End If
    Next

 End Sub
(´・ω・`) 2020/04/13(月) 15:30

 回答コメントをもらっていましたが、見過ごしてしまっていました。
 もう終了でしたかね。

 ・他のブックへのリンク
 ・テーブルのリンク
 については質問者さんのコードで対応可能ですね。

 ・他のシートの参照については、
 (´・ω・`)さんから回答がありました。

 ・ハイパーリンクについては、下記でしょうか。
     Dim h As Hyperlink
     For Each ws In wb.Sheets
         For Each h In ws.Hyperlinks
             h.Delete
             'h.Range.ClearContents  セル内容の消去(要否不明)
         Next
     Next
 ・あと残るのは、Hyperlink関数を使ったハイパーリンクでしょうか。
   これは数式を対象とした検索を実行するんでしょうか。
   そのセルを消去してしまってよいのか仕様が不明です。

 >セルの結合があってもリンクの解除ができるようにするにはどうしたらいいか
 ここが不明でした。他ブックへのリンクであれば、対応済みのようにも思いますが。
 詳細説明いただければと思います。  

 私見では、ブック内のシート間参照まで値にしてしまうべきかは
 両論あるでしょうね。これを切ってしまうと論理が終えなくなります。
 まあ、使い途によるんでしょうか。 
(γ) 2020/04/15(水) 23:21

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.