#VBA7の意味をわかって、コピペしてますでしょうか?
インターネットでExcel VBA上のWindows APIのサンプルコードを探すと、#If VBA7 を使ったものをよく見かけます。
ソースを公開している方は、どういう人がみても使えるように#If VBA7を使って、広い互換性をもたせているのですが、それをみた利用者側で無条件にコピーして使うのは、やめたほうがいいんじゃないかと思って、この記事を投稿しました。
ざっくりいうと、#If VBA7 は Excel2010以上だったら です。
もう2020年です。自分用や仲間内で使うマクロで、自分たちがExcel2003やExcel2007を使っていないのだったら、もうVBA7は使わずにすっきりさせたほうがいいと思います。
Excel2010以上しか想定しないのなら
#If VBA7 Then
Declare PtrSafe Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPtr
#Else
Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
#End If
とするのではなく
Declare PtrSafe Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPtr
とすべきだと思います。