Windows10(64bit) & Excel2013(64bit)です。
以前Windows7(32bit) & Excel2013(32bit)ではFormが常に手前に表示されていましたがWindows10に変更してから、Formが隠れてしまいます。
Netでもいろいろ調べましたが原因がわかりません。何卒ご教示願えればと投稿させていただきました。
よろしくお願いします。
ソースは次の通りです。Formにはコマンドボタンを1つ配置しただけの単純なFormです。
’UserForm1
#If VBA7 And Win64 Then
Private Declare PtrSafe Function FindWindow Lib "user32.dll" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long
#Else
Private Declare Function FindWindow Lib "user32.dll" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long
#End If
Private Const HWND_TOPMOST As Long = -1
Private Const SWP_NOSIZE As Long = &H1&
Private Const SWP_NOMOVE As Long = &H2&
Private URL As String
Private IE As Object
Private OBJ As Object
Private Sub UserForm_Activate()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, Me.Caption)
Call SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub
Private Sub CommandButton1_Click()
URL = "http://maps.google.co.jp/maps?hl=ja&dirflg=d&sad … _
& EncodeURL("大阪府大阪市北区中之島1丁目3-20 ") _
& "&daddr=" & EncodeURL("東京都新宿区西新宿2-8-11")
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Navigate (URL)
.Toolbar = False
.Visible = True
.Top = 0
.Left = 0
.Width = 1920
.Height = 1080
Do While .Busy = True
DoEvents
Loop
Do While .document.readyState <> "complete"
DoEvents
Loop
End With
End Sub
' ##### URL エンコード
Private Function EncodeURL(ByVal sWord As String) As String
Dim D As Object
Dim elm As Object
sWord = Replace(sWord, "\", "\\")
sWord = Replace(sWord, "'", "\'")
Set D = CreateObject("htmlfile")
Set elm = D.createElement("span")
elm.setAttribute "id", "result"
D.appendChild elm
D.parentWindow.execScript "document.getElementById('result').innerText = encodeURIComponent('" & sWord & "');", "JScript"
EncodeURL = elm.innerText
End Function
No.1ベストアンサー
- 回答日時:
>Excel2013(64bit)です
なので、hwndの型はLongでなくてLongPtrになります。
'宣言の変更
Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hwnd As LongPtr, ByVal hWndInsertAfter As LongPtr, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
>Dim hwnd As Long
Dim hwnd As LongPtr
kumatti_1さん。
御教示ありがとうございました。
お陰様で大変助かりました。
ただ32bitではLongとしていたものをすべてLongPtrになるわけではないのですね。
このあたりの識別がわかりません。
Declare PtrSafe Function SetPixelV Lib "gdi32" (ByVal hDC As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal crColor As Long) As Long
Declare PtrSafe Function GETDC Lib "user32" Alias "GetDC" (ByVal hWnd As Long) As Long
などはLongのままで支障なく使えています。もうすこし自己学習が必要なようです。がんばって
みます。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Vba Userformを前面に出すについて
Access(アクセス)
-
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
VBA、UserFormを前面に出力してから処理後にももう一度前面に出したい
Visual Basic(VBA)
-
-
4
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
5
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
6
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
7
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
8
VBSで起動したアプリが前面表示しない
Visual Basic(VBA)
-
9
VBAで任意のウインドウのサイズを変更する方法
Visual Basic(VBA)
-
10
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
11
excel vbaから実行するexe実行の黒い画面の非表示
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
dllをいじる。。
-
POSTAL2が起動しない
-
VB2003で レジストリを格納する
-
WIN10で常にフォームを手前に
-
[c++]#using "user32.dll"でエラー
-
visual Studio 2008で.exeファ...
-
VBからIMEパッドを呼び出す方法...
-
VBにてIMEの入力モードを変える...
-
指定された引数が有効範囲にな...
-
AppVer: 7.0.5730.11 ModName: ...
-
user32.dllがないためアプリが...
-
C# DLL エントリ ポイントが...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
fortranでプログラムを実行する...
-
適切な変換関数が存在しない???
-
VBAを何回も作り直して、容量が...
-
バッチからsqlplusの接続エラー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
visual studioの不要なDll削除方法
-
ファイルをvbaで圧縮したいので...
-
VB6.0(SP6)にて開発を行なって...
-
res://ieframe.dll/について
-
C# DLL エントリ ポイントが...
-
ASP.NETのDLL入れ替えについて
-
WIN10で常にフォームを手前に
-
VBAエディタのコード画面で、カ...
-
VB.NET xdoc2txtをつかってPDF...
-
VC++6.0 でのライブラリ参照方法
-
MFC7.0ランタイムライブラリ
-
指定された引数が有効範囲にな...
-
user32.dllがないためアプリが...
-
自作のDLLがみつからない
-
VBからIMEパッドを呼び出す方法...
-
dllをいじる。。
-
vb6で作成した画面が処理に時間...
-
M365にアップデートしてからコ...
-
[VBA]64b版-行数表示.dllの登録...
-
*.exeと異なるフォルダのDLLを...
おすすめ情報