Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10095 / 76738 ←次へ | 前へ→

【72196】EXCEL上からPDFを開く方法(パスワードを渡す)
質問  食う・寝る・走る  - 12/6/19(火) 9:35 -

引用なし
パスワード
   エクセル上で、図面番号を整理しております。
直接パスワード付きの図面(PDFファイル)を開きたいのですが、
うまくいかずに困っています。パスワードはファイルを開くときに必要なものです。
PDFファイルを開くときにパスワードBOXが出ますが、パスワード枠へパスワードを自動で転記し、OKボタンを押す動作が出来ないでしょうか?

動作環境は、
 OS:WindowsXp+SP3
 エクセル:MicrosoftOffice2007(Excel)
 アクロバット:Acrobat7
 クラスの取得:spy++(VisualStudio6.0+SP5のVC++付属)

VBAでは、予め、spy++で目的のクラス名を得ていれば立ち上がっているメモ帳へデータを転記することは、可能であることを以下のマクロで確認済です(A1セルをダブルクリックで動作確認済)。

同様にA2セルをダブルクリックするとPDFパスワードに転記するマクロが動くはずなのですが、うまくいきません。アクロバット7のフォーム名はspy++によると、
「#32770(ダイアログ)」と出ますが、なぜか「#32770」としないと戻り値が0で取得できません。また、クラス名で子ウィンドウのハンドルは「Edit」とありますが、戻り値が0で、取得できません。
何か情報をお持ちでしたら、お教え頂けると幸いです。


'事前にメモ帳とパスワード付きのPDFのパスワードを求めるメッセージBOXを
'立ち上げておいて下さい。
'下記マクロをsheet1にコピー&貼付けし、A1、A2セルに適当な文字を入れて
’ダブルクリックするとイベントが発生します。
'------------------------------------------------------------------------
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 hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) 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 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Const BM_CLICK As Long = &HF5
Private Const WM_ACTIVATE As Long = &H6
Private Const WM_SETTEXT As Long = &HC

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  Dim strWindowClassName   As String
  Dim lngWindowHandle     As Long
  Dim strChildWindowClassName As String
  Dim lngWindowTextBuffer   As String * 255
  Dim lngChildWindowHandle  As Long
  Dim lngResult As Long


Select Case Target.Address
Case "$A$1" 'メモ帳へ転記
  ' クラス名でウィンドウハンドルを取得
  strWindowClassName = "Notepad" '←メモ帳のフォーム名の取得
  ' メモ帳のウィンドウハンドルを取得
  lngWindowHandle = _
    FindWindow( _
      strWindowClassName, _
      vbNullString)
  ' ウィンドウハンドルを取得できたときは
  If lngWindowHandle <> 0 Then
    ' クラス名で子ウィンドウのハンドルを取得
    strChildWindowClassName = "Edit" '←メモ帳の入力枠のクラス名
    lngChildWindowHandle = _
      FindWindowEx( _
        lngWindowHandle, _
        0, _
        strChildWindowClassName, _
        vbNullString)
    ' 子ウィンドウのハンドルを取得できたときは
    If lngChildWindowHandle <> 0 Then
      'シートのA1セルの値をメモ帳へ転記
      lngWindowTextBuffer = Cells(1, 1)
      lngResult = _
        SendMessage( _
          lngChildWindowHandle, _
          WM_SETTEXT, _
          0, _
          ByVal lngWindowTextBuffer)
    End If
  End If
  
  
Case "$A$2" 'PDFのパスワード枠へ転記
' クラス名でウィンドウハンドルを取得
  strWindowClassName = "#32770" '←アクロバット7のフォーム名の取得
  ' メモ帳のウィンドウハンドルを取得
  lngWindowHandle = _
    FindWindow( _
      strWindowClassName, _
      vbNullString)
  ' ウィンドウハンドルを取得できたときは
  If lngWindowHandle <> 0 Then
    ' クラス名で子ウィンドウのハンドルを取得
    strChildWindowClassName = "Edit" '←PDFのパスワード枠のクラス名
    lngChildWindowHandle = _
      FindWindowEx( _
        lngWindowHandle, _
        0, _
        strChildWindowClassName, _
        vbNullString)
    ' 子ウィンドウのハンドルを取得できたときは
    If lngChildWindowHandle <> 0 Then
      'シートのA2セルの値をPDFのパスワード枠へ転記
      lngWindowTextBuffer = Cells(2, 1)
      lngResult = _
        SendMessage( _
          lngChildWindowHandle, _
          WM_SETTEXT, _
          0, _
          ByVal lngWindowTextBuffer)
    End If
  End If


End Select

End Sub
0 hits

【72196】EXCEL上からPDFを開く方法(パスワードを渡す) 食う・寝る・走る 12/6/19(火) 9:35 質問
【72197】Re:EXCEL上からPDFを開く方法(パスワード... とおりすぎ 12/6/19(火) 12:59 回答
【72198】Re:EXCEL上からPDFを開く方法(パスワード... Abyss 12/6/19(火) 14:28 回答
【72200】Re:EXCEL上からPDFを開く方法(パスワード... 食う・寝る・走る 12/6/19(火) 16:16 お礼
【72199】Re:EXCEL上からPDFを開く方法(パスワード... 食う・寝る・走る 12/6/19(火) 15:28 お礼
【72201】Re:EXCEL上からPDFを開く方法(パスワード... Abyss 12/6/19(火) 17:04 発言
【72212】Re:EXCEL上からPDFを開く方法(パスワード... 食う・寝る・走る 12/6/20(水) 14:22 お礼
【72213】Re:EXCEL上からPDFを開く方法(パスワード... Abyss 12/6/20(水) 16:38 発言
【72216】Re:EXCEL上からPDFを開く方法(パスワード... 食う・寝る・走る 12/6/21(木) 11:28 お礼
【72217】Re:EXCEL上からPDFを開く方法(パスワード... Abyss 12/6/21(木) 11:36 発言

10095 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free