No.2ベストアンサー
- 回答日時:
'#1のコードは、32bit 版でした。
'64bit では、Win API は以下のように変わります。
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPtr
Private Declare PtrSafe Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr
No.1
- 回答日時:
対象は、Acrobat Reader DC (試験したのは、Ver.2017.012.20098)
これで試してみてください。
ただ、「エクセルを開いた時にpdfを自動的に起動させます。」のような同時に動かすことは、あまり賛成いたしかねます。以下は、Sleepにより、多少の時間差は加わっていますが、どちらかが、失敗する可能性があります。
'//標準モジュール推奨
'Option Explicit
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
Private Const BM_CLICK As Long = &HF5
Private Const WM_ACTIVATE As Long = &H6
Private Const WM_SETTEXT As Long = &HC
Private Const PSW As String = "xyz" 'パスワード
Sub PDFOpenPSW()
Dim objFOS As Object
Dim WshShell As Object
Dim fn As Variant
Dim cnt As Long
Dim hWnd As Long
Dim hWnd_c As Long
Dim hWnd_ebx As Long
Dim hWnd_btn As Long
Set WshShell = CreateObject("Wscript.Shell")
fn = ActiveCell.Value 'アクティブセルにファイル名がある。
If fn Like "*.pdf" Then
If Dir(fn) = "" Then
MsgBox "ファイルがありません。", vbExclamation
Exit Sub
End If
End If
WshShell.Run fn, 1
Do Until hWnd_ebx <> 0 Or cnt > 100
hWnd = FindWindow("#32770", "パスワード")
hWnd_c = FindWindowEx(hWnd, 0&, "GroupBox", vbNullString)
hWnd_btn = FindWindowEx(hWnd_c, 0, "Button", "OK")
hWnd_ebx = FindWindowEx(hWnd_c, 0, "RICHEDIT50W", vbNullChar)
Sleep 100
DoEvents
cnt = cnt + 1
Loop
If hWnd <> 0 Then
If hWnd_ebx = 0 Then MsgBox ("EditBoxが、取得できませんでした。"), vbCritical: Exit Sub
If hWnd_btn = 0 Then MsgBox ("Buttonが、取得できませんでした。"), vbCritical: Exit Sub
Call SendMessage(hWnd_ebx, WM_SETTEXT, 0&, PSW)
Call SendMessage(hWnd_btn, BM_CLICK, 0, 0&)
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript で外部サイトにデータ入力させて自動でボタンを押すことは可能ですか? 1 2023/01/30 16:23
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- PDF エクセルのVBAでファイルをpdfで保存するとソフトによっては開けなくなる 3 2022/06/08 10:20
- PDF アクロバットリーダーはインストールしてます。 IPHONE、メールに添付されているパスワードが設定さ 2 2023/04/10 13:13
- PDF PDF ファイルのパスワードの外し方 6 2023/03/29 11:37
- PDF パワポをPDFにしてパスワードをかける方法 5 2022/04/15 16:14
- Visual Basic(VBA) エクセルVBA エクセルを開いた後に編集可能な状態にするには? 2 2023/06/14 11:58
- Dropbox スマホのドロップボックスにあるpdfファイルの起動 2 2022/06/18 09:09
- 囲碁・将棋 囲碁 KGS の cgoban ログインパスワードを忘れた対策 1 2023/04/10 08:20
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大学定期試験過去問サイト「過...
-
Excelのセルにユーザー名...
-
メールをパスワードつきで送る方法
-
LINE TCBというところからLINE...
-
メールを返信したら、英語のメ...
-
メールのマナー編
-
runas実行した時にきかれるパス...
-
email.ne.jpのメールアドレスを...
-
メールアドレス 上バーの入力...
-
メールアドレスで上付きのハイフン
-
メールエラー
-
CSVファイルを添付するときにパ...
-
インスタの捨て垢で友達のスト...
-
「@」(アットマーク)の無いメ...
-
存在しないアドレスにメールを...
-
Skypeのアカウントについて 作...
-
CDにパスワードをかける
-
YouTubeが毎回ログインしないと...
-
メールアドレスを人に教えるの...
-
カカオで退会せずに、アプリだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルにユーザー名...
-
メールをパスワードつきで送る方法
-
LINE TCBというところからLINE...
-
メールアドレス 上バーの入力...
-
大学定期試験過去問サイト「過...
-
メールエラー
-
メールのマナー編
-
メールアドレスで上付きのハイフン
-
インスタの捨て垢で友達のスト...
-
インスタのアイコンについてるN...
-
メールを返信したら、英語のメ...
-
steam版 apexのログアウト方法...
-
ビーリアルのユーザー名を変え...
-
メールアドレスから個人を特定...
-
携帯電話を解約してもSMSの受信...
-
「@」(アットマーク)の無いメ...
-
YouTubeが毎回ログインしないと...
-
解約済みの iPadについて 解約...
-
カカオで退会せずに、アプリだ...
-
CSVファイルを添付するときにパ...
おすすめ情報