2022年1月16日日曜日

3行マクロで日常の繰り返し作業を楽にしよう、などというブログもあったりするぐらいで、簡単コードで仕事を楽にするのは精神衛生上、良いことだ - LinkSources(xlExcelLinks)(VBA)

       
協力会社さんから、輸出通関の書類が送られて来ますが、ちょっと困りました。
開くと、必ず冒頭の警告が表示されますが、更新しないをとりあえずクリック。

その後の作業に支障は来たしませんが、これ以降、開くたびに出ては煩わしい。
なので、これを解消してしまうには、VBAの力技でクリアしてしまうのが先決。

どんなリンクが含まれていようが、自分の作業には関係がないので消去が一番。
それで、ネットで調べますと、悩んでいる人が結構いるようでサンプルもある。

これが意外に簡単でしたが、VBAエディターからコード貼り付けで実行が必要。
だから、マクロのコードが書けない人は、永遠に悩み続けるのかもしれないな。

Sub BreakLinks() '不明なリンクを削除
    Dim Hyprlnk As Hyperlink
    For Each Hyprlnk In ActiveSheet.Hyperlinks
        Hyprlnk.Delete
    Next Hyprlnk
End Sub

滅茶苦茶、簡単なコードですが、キモはLinkSources(xlExcelLinks)のメソッド。
ブックに含まれるリンクの配列を返すもので、配列には各種リンクがあります。

文書、発行物、DDE ・OLE サーバーの名前などですが、消去すればOKだな。
For Eachのループ処理で、リンクを探し終わるまで、リンクを消し込むのです。

まあ、決め打ちのコマンドラインみたいで、このまま覚えて損はありませんな。
他には、リンクの存在を確認できますが、これがシンプルなコマンドなのです。

要するに、If IsArray(ActiveWorkbook.LinkSources(xlExcelLinks)) Then ね。
後は、メッセージボックスで、有る無しのメッセージボックスを表示させるか。

一方、ワークシート上に張ったオブジェクトを一括で消し込みたい場合もある。
テキストボックス等は、枠線を設定せずに入力しないで残すと分からなくなる。

Sub SapeDelete() 'アクティブなシートの全オブジェクト数を削除
 Dim Objct As Shape
   For Each Objct In ActiveSheet.Shapes
      Objct.Delete
   Next
End Sub

そんな時は、上のコードを実行させると、アクティブシート上で消去できます。
難しくないから、テキストファイルにして保存しておくと、いざの時に便利だ。

というわけで、エクセルのVBAには、小技でも使い道のあるコードが色々です。
このような対象を消し込むような作業は、時折、必要になるものですが、そういう時に便利なのは間違いなくて、ネットでも小ネタでブログにたくさん書かれていますので、参考にする価値はあるなと思ったのでした。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



0 件のコメント:

コメントを投稿