ボロボロ皇帝のボロ切れと塊

ボロボロ皇帝が悪態、嫌み、好み、何でも己の視点だけで自由に吐く「偏」な場所。たまにExcel、家電、音楽等についても好きに吐いてる。

ボロボロ皇帝が悪態、嫌み、好み、何でも己の視点だけで自由に吐く「偏」な場所。
Excel、家電、音楽、ゲームイラスト小説映画、性癖について等、何でも好きに吐いてる。

どうでも良いかもしれんが背景色変わっていくの見てくれ。
更にどうでも良いかもしれんがアイコンが息してるの見てくれ。


我輩は何にも制約されない身、
「耐えぬ」事を恐れないと決めたのだ!
我輩は好きなときに悪態をつく!
妬み僻み嫉みを背負い、
マイナーだろうが邪道だろうが
我輩は我輩の道を行く!
好きなものは懸命で不器用な諸君,
嫌いなものは器用で完璧を気取った奴らだ。
         

【VBAマクロ】HYPELINK関数じゃないクソ邪魔ハイパーリンク、一括で解除するの巻。

※無理と思ってVBAコードで解除するに至ったが、やり方あったらスマン。
※使用バージョンは2007だが新しいバージョンでも使えはするはずだ。

 

最近、ネット上から拾ったデータを普通にExcelにコピペして気づいた。

 

f:id:wornoutemperor:20211223220448j:plain


ハイパーリンク邪魔!!!
まあ貼り付けるときに普通にテキスト形式にしておけばいいということでもあるのだが、そうするとHTMLコードが無視される関係かレイアウトにズレが生じがちである。

この事があるまで考えた事なかったが、HYPERLINK関数を使ってないような完全埋め込み型のハイパーリンクって、コピー形式を選択して貼り付け→「」 で貼り付けしても消えないんだよな。

ということはだ。

いちいちリンク埋め込まれたセルを選択コンテキストメニューを出す→ハイパーリンクの編集リンクの解除 × 個数分

を、やらなければならないのだ。ありえない。馬鹿すぎる。

ちなみに今回の場合、データ個数234なので、×234だ。発狂するわそんなん、普通に考えて人間がやるべきことではない。

 

というわけで、さっそくVBAハイパーリンクを一括解除する為のやつ、つくってみた。

 

非常に単純なコードである。なので、マクロ分かんない(/_;)という諸君もやれ。手作業せずにやれ。開発タブ出して、Visual Basic Editor出して、そこの適当なモジュールに書いてF5押すだけだ。大丈夫だ。


以下、ハイパーリンクさよならVBA

 

Sub hyperlinkkesu()
Application.ScreenUpdating = False
    Do While Range("A" & 2 + i) <> ""
    Range("B" & 2 + i).Hyperlinks.Delete
    i = i + 1
    Loop
Application.ScreenUpdating = True
End Sub

 

以上。


DoWhileについては、

VBAでループ処理:DoWhile~Loopで簡潔に美しく(バカ構文修正)&DoWhileって何やねん【解説】

を見てくれたら分かると思うが、一応ざっくり解説すると、

 

A2 + iが空白でない間、

   ・B2 + iハイパーリンクを消し、
   ・iを定義する為の計算式(i = i + 1)で、ハイパーリンク一つ消すごとにiに代入される数字を1増やす(最初はEmpty=空)

という動きを繰り返す。

 

みたいな感じだな。

一応補足だが、Do While Range("B" & 2 + i) <> ""でもいい。空白セルが間に挟まってない列ならどこでもいい。空白になると止まるため。

もちろん空白以外でもいい。正しく処理されるように、while(〜の間)を定義できるなら何でもいいのだ。最終行セルに終わりと入力してDo While Range("B" & 2 + i) <> "終わり"とするとかでもな。やりたいようにやってくれ。

 

ちなみに上述の通り、使用バージョンは2007である。もしかしたら新しいバージョンでは、HYPERLINK関数じゃないハイパーリンクでも、一括削除できるような機能が実装されているかもしれない

が、もしそんな機能も無く、クソ邪魔ハイパーリンクに怒り心頭な諸君がいれば、他のやり方探すより楽で汎用性も高いし、ぜひこれを試してみてくれ。