協力会社さんから、輸出通関の書類が送られて来ますが、ちょっと困りました。
開くと、必ず冒頭の警告が表示されますが、更新しないをとりあえずクリック。
その後の作業に支障は来たしませんが、これ以降、開くたびに出ては煩わしい。
なので、これを解消してしまうには、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 件のコメント:
コメントを投稿