【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください

VBAでIEのメニューバーを使用・操作したい。

お世話になります。
現在VBAでIEを起動・操作しようとしています。
そこで下記を教えて頂きたいのです。

IEのメニューバーにある
(1)編集→全て選択
(2)編集→コピー
を実行したいのですが、
VBAからどのように入力すれば、(1)、(2)ができるのでしょうか?

以上お手数ですがよろしくお願いします。

A 回答 (2件)

ExecWB コマンドを使えばよいです。


以下は、予め開いたサイトに対して、命令するものです。
不要な所は省いても結構です。

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Sub GetIEObject()
  Dim objIE As Object
  Dim objShell As Object
  Dim objWin As Object
  Const OLECMDEXECOPT_DODEFAULT As Long = 0
  Const OLECMDID_COPY As Long = 12 'コピー
  Const OLECMDID_SELECTALL As Long = 17 'すべて選択
  Const OLECMDID_CLEARSELECTION As Long = 18 '選択をクリア
  On Error GoTo EndProcess
  
  Set objShell = CreateObject("Shell.Application")
  For Each objWin In objShell.Windows
    If TypeName(objWin) = "IWebBrowser2" Then
      Sleep 1000 '減らしても可
      Set objIE = objWin
    End If
  Next
  If objIE Is Nothing Then
    MsgBox "IEが開いていません。", vbExclamation: Exit Sub
  End If
  With objIE
    .ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
    .ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
    .ExecWB OLECMDID_CLEARSELECTION, OLECMDEXECOPT_DODEFAULT
  End With
EndProcess:
  On Error Resume Next
  If Err.Number > 0 Then
    MsgBox Err.Description
  End If
  Set objIE = Nothing
End Sub
    • good
    • 0

ショートカットキーで対応は可能だと思います。


 
(1)編集→全て選択…CTRL+"A"
(2)編集→コピー  …CTRL+"C"

以下、サンプルプログラムです。

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
                           ByVal bScan As Byte, _
                           ByVal dwFlags As Long, _
                           ByVal dwExtraInfo As Long)
Public Const VK_RETURN = 13
Public Const VK_SHIFT = 16
Public Const VK_CONTROL = 17
Public Const VK_ESCAPE = 27

Sub Sample()
 Dim objIE As Object

 Set objIE = CreateObject("InternetExplorer.Application")
 objIE.Visible = True
 objIE.Navigate2 ("http://oshiete.goo.ne.jp/qa/5934219.html")
 ' 表示完了まで待つ
 While (objIE.Busy = True): Sleep (100): Wend
 While objIE.Document.ReadyState <> "complete": Sleep (100): Wend
 ' CTRL+"A"
 Call keybd_event(VK_CONTROL, 0, 0, 0)
 Call keybd_event(AscB("A"), 0, 0, 0)
 Call keybd_event(AscB("A"), 0, 2, 0)
 Call keybd_event(VK_CONTROL, 0, 2, 0)
 ' CTRL+"C"
 Call keybd_event(VK_CONTROL, 0, 0, 0)
 Call keybd_event(AscB("C"), 0, 0, 0)
 Call keybd_event(AscB("C"), 0, 2, 0)
 Call keybd_event(VK_CONTROL, 0, 2, 0)
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報