Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Microsoft Office】Office更新時などに発生するエラー「このプロジェクトのコードは、64ビット システムで使用するために更新する必要があります」についての対処方法


PCやOffice更新時に以下にようなエラーが表示されて困ったことがありました。

 

自分の場合は、Officeを更新した時にそれまで使用していた32ビット版から64ビット版に変更したのですがその時にこのエラーが発生しました。

 

Office更新時エラー発生

Office更新時エラー発生

 

その時の対処方法を備忘録として残しておきます。

 

 

 

1.対処方法

 

該当のエラーは、Officeの64bit版でWin32API(32bitのWindows API)を呼び出す時に発生します。


32bitと64bitでは使用できる領域が異なりそのまま使うと問題が発生する場合があるため確認の意味も込めたエラーメッセージとなります。

 

対処方法としては、「64bit版にした時に、Declareステートメントに PtrSafe 属性を追加すればいい」ということです。

 

マイクロソフトの公式ページには、

 

「このプロジェクト内のコードは、64 ビットシステムで使用できるように更新する必要があります。 Declare ステートメントを確認して、更新し、それらに PtrSafe 属性のマークを付けます。」

 

という記載があるのでこれに沿って変更をかければいいということになります。

 

具体的には、

 

Declare → Declare PtrSafe

 

のように変更するということになるため、

 

たとえば、

 

Private Declare Sub Sleep Lib “kernel32” (ByVal ms As Long)

 

のように宣言されている箇所があった場合には、

 

Private Declare PtrSafe Sub Sleep Lib “kernel32” (ByVal ms As Long)

 

のように「PtrSafe」を追加すればいいということになります。

 

以上が、Office更新時(32bit→64bit)などに発生するエラー「このプロジェクトのコードは、64ビット システムで使用するために更新する必要があります」についての対処方法になります。

 

 

 

 

【Excel VBA】ファイルを保存する方法


これまでに、ExcelVBAでのファイルをオープンする方法やクローズする方法についての説明を記載しましたので、今回はファイルを保存する方法についての説明になります。

 

 

 

目次

 

Excel VBAでファイルを保存する方法はいくつかあります。

 

1.ファイルを上書き保存する方法

 

ファイルを上書き保存する場合には、以下のようにSaveを使用します。

 

Workbooks("test.xlsx").Save

 

これにより、開いている「test.xlsx」ファイルが保存されます。

この場合、「test.xlsx」ファイルは開いている必要があります。

 

同様にアクティブワークブックや自ワークブック(マクロ実行ファイル)を上書き保存する場合には以下のようになります。

 

ActiveWorkbook.Save

 

ThisWorkbook.Save

 


自ワークブックの1シート目の「A1」に「abc」と書き込んでから保存するような場合の例は以下のようになります。

 

Sub test()
    ThisWorkbook.Sheets(1).Range("A1").Value = "abc" ' ブックを編集
    ThisWorkbook.Save ' 上書き保存
End Sub

 

同様に、アクティブブックの編集、保存の場合には以下のようになります。

 

 

Sub test()
    ActiveWorkbook.Sheets(1).Range("A1").Value = "abc" ' ブックを編集
    ActiveWorkbook.Save ' 上書き保存
End Sub

 

Open()を使用して同じフォルダ内にある「test.xlsx」ファイルを開いて1シート目の「A1」に「abc」と書き込んでから保存するような場合の例は以下のようになります。

 

Sub test()
    Dim wb As Workbook
    Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\test.xlsx")
    wb.Sheets(1).Range("A1").Value = "abc" ' ブックを編集
    wb.Save ' 上書き保存
End Sub

 

 

2.ブックに名前をつけて保存する方法

 

新しくブックを作成して編集し名前をつけて保存する場合には以下のようにWorkbook.SaveAs()を使用します。

 

 

Sub test()
    Dim wb As Workbook
    Set wb = Workbooks.Add ' ブックを作成
    wb.Sheets(1).Range("A1").Value = "abc" ' 編集
    wb.SaveAs ("test.xlsx") ' 名前を付けて保存
End Sub

 

 

ただし、この時に既にファイルが存在する場合は、以下のダイアログメッセージが表示されます。

 

メッセージ「ファイルがすでにあります」

メッセージ「ファイルがすでにあります」

 

 

この場合、「はい」を選択すると上書き保存されます。


「いいえ」か「キャンセル」を選択した場合には、「エラー 1004 :SaveAsメソッドは失敗しました」が発生します。

 

メッセージ「SaveAsメソッドは失敗しました」

メッセージ「SaveAsメソッドは失敗しました」

 

このような場合の一番簡単な対処方法は、エラーを無視することです。


以下のように、 
「wb.SaveAs ("test.xlsx")」
の前に
「On Error Resume Next」
を実行することでエラーを無視します。


「wb.SaveAs ("test.xlsx")」
でエラーが発生した場合には、次の
「If Err.Number > 0 Then MsgBox "ファイルは保存されませんでした"」
で、
「ファイルは保存されませんでした」
というメッセージが表示されて終了します。

 

 

Sub test()
    Dim wb As Workbook
    Set wb = Workbooks.Add ' ブックを作成
    wb.Sheets(1).Range("A1").Value = "abc" ' 編集
    On Error Resume Next
    wb.SaveAs ("test.xlsx") ' 名前を付けて保存
    If Err.Number > 0 Then MsgBox "ファイルは保存されませんでした"
End Sub

 

3.ブックをコピーして保存する方法

 

 

ブックをコピーして保存する場合には以下のようにWorkbook.SaveCopyAs()を使用します。

 

Sub test()
    Dim wb As Workbook
    Set wb = Workbooks.Add 'ブックを作成
    wb.Sheets(1).Range("A1").Value = "abc" '編集
    wb.SaveCopyAs ("test.xlsx")    'コピーを名前を付けて保存
End Sub

 

このようにSaveCopyAs()を使用してコピー保存する場合にすでに同名のファイルが存在する場合には上書き保存されます。

 

 

4.名前を付けて保存ダイアログボックスを表示して保存する方法

 

 

「名前を付けて保存ダイアログボックス」を表示させてファイル名を指定して保存する場合は、Application.GetSaveAsFilenameメソッドを使用します。

 

たとえば、ActiveWorkbookに関して、名前を付けて保存ダイアログボックスを表示させてファイル名を指定して保存する場合は、以下のようになります。

 

 

Sub test()
    Dim filePath As Variant
    path = Application.GetSaveAsFilename ' 名前を付けて保存ダイアログを表示
    
    If path = False Then
        Exit Sub ' キャンセル
    End If
' 保存 ActiveWorkbook.SaveAs (path) ' 指定したpathに保存 End Sub

 

Application.GetSaveAsFilenameを使用してファイル名を含むpathを指定し、

ActiveWorkbook.SaveAs (path)

で保存します。

 

以上がExcel VBA でのファイルを保存する主な方法になります。

 

 

 

 

【Excel VBA】ファイルをクローズする方法


前回、ExcelVBAでのファイルをオープンする方法についての説明を記載しましたので、今回はファイルをクローズする方法についての説明になります。

 

 

 

目次

 

1.ファイルをクローズする方法

 

ファイルをクローズする場合には、以下のようにCloseを使用します。

 

Workbooks("test.xlsx").Close

 

これにより、開いている「test.xlsx」ファイルがクローズします。

 

 

 

2.保存確認用のメッセージを表示しないでクローズする方法

 

この場合、作成済で保存されていたファイルを開いて何らかの編集を行い閉じようとすると以下のような保存確認用のメッセージが表示されます。

 

 

保存確認用メッセージ

保存確認用メッセージ

 

それを回避しようとするには、

 

Application.DisplayAlerts = False

 

を前もって設定しておきます。

 

確認用メッセージを表示するかどうかを切り替えるにはApplicationオブジェクトのDisplayAlertsプロパティを使用します。

Falseを設定すると、確認メッセージが表示されなくなります。

 

実際には、

 

Application.DisplayAlerts = False
Workbooks("test.xlsx").Close
Application.DisplayAlerts = True

 

のように保存確認用のメッセージ表示設定を一旦Falseにして非表示設定にしてクローズした後Trueにして表示設定に戻します。

 

ただし、この場合には、ファイルは保存されずにクローズされます。

 

 

 

3.保存確認用のメッセージを表示しないで保存してからクローズする方法

 

そのため、ファイル保存してからクローズする場合には、以下のようにSaveを使用して保存してからクローズします。

 

 

Application.DisplayAlerts = False
Workbooks("test.xlsx").Save
Workbooks("test.xlsx").Close
Application.DisplayAlerts = True

 

Saveを実行してからCloseする場合には、元々保存確認用のメッセージは表示されなくなりますので、結果として、

 

Workbooks("test.xlsx").Save
Workbooks("test.xlsx").Close

 

でいいことになります。

 

 

 

4.使用例

 

これらを使用して、たとえば、Cドライブ直下の「test.xlsx」ファイルを開いて

ファイル編集を行って保存して閉じる場合は以下のようになります。

 

Sub test()
Dim wb As Workbook
If Dir("C:\test.xlsx") <> "" Then
Set wb = Workbooks.Open(Filename:="C:\test.xlsx")
'ファイル編集開始
':
':
'ファイル編集終了
wb.Save
wb.Close
Else MsgBox "ファイルが存在しません" End If
End Sub

 

もう1つ同様の内容ですが、同じフォルダ内の「test.xlsx」ファイルを開いて

ファイル編集を行って保存して閉じる場合は以下のようになります。

 

Set文のFilenameの設定の中身が変わっているだけです。

 

Sub test()
Dim wb As Workbook
If Dir(ThisWorkbook.Path & "\test.xlsx") <> "" Then
Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\test.xlsx")
'ファイル編集開始
':
':
'ファイル編集終了
wb.Save
wb.Close
Else MsgBox "ファイルが存在しません" End If
End Sub

 

 

ちなみに、1つめの使用例ではCドライブの直下を書き込み先としていますが、管理者権限でないと書き込めないということでエラーが出る場合があります。

その場合は、ドキュメントの下(C:\Users\(ユーザー名)\Documents)など書き込めるところに変更してください。

 

以上がExcel VBAでファイルをクローズする方法になります。

 

 

 

 

【Excel VBA】ファイルをオープンする方法


今回はExcelVBAでのファイルをオープンする方法についての説明になります。

 

 

 

目次

 

1.ファイルをオープンする方法

 

単にファイルをオープンする場合には、以下のようにOpenを使用します。

 

Workbooks.Open "C:\test.xlsx"

 

これにより、Cドライブ直下の「test.xlsx」ファイルがオープンします。

 

2.同じフォルダ内のファイルをオープンする方法

 

自ファイルと同じフォルダ内のファイルをオープンする場合には、

 

 Workbooks.Open ThisWorkbook.Path & "\test.xlsx"

 

のようにします。

 

 

3.オープンしたワークブックやアクティブファイル、アクティブシートを変数設定する方法

 

また、以下のようにオープンしたワークブックを変数に指定すると、ファイルをオープンした後に変数経由でワークブックを操作することができます。

メソッドの戻り値を使用する場合は引数を()で囲みます。

 

Dim wb As Workbook
Set wb = Workbooks.Open(Filename:="C:\test.xlsx")

 

 

以下のようにすると、「test.xlsx」をオープンし、その中の1枚目のシートのA1からC3までをコピーして、自身のマクロ記載のブックの1枚目のシートのA1からC3に貼りつけています。

 

Sub test()
    Dim wb As Workbook
    Set wb = Workbooks.Open(Filename:="C:\test.xlsx")

    'オープンしたファイルtest.xlsxから、マクロを記載したこのブックにコピー
    wb.Worksheets(1).Range("A1:C3").Copy _ 
Destination:=ThisWorkbook.Worksheets(1).Range("A1:C3") End Sub

 

 

オープンした後に、以下のようにブックやシートの名前を取得することで、変数にブックやシートの名前を設定することができます。

 

Workbooks.Open "C:\test.xlsx"
AFILE = ActiveWorkbook.Name: ASHT = ActiveSheet.Name

 

これらを使用して、たとえば、

 

Sub test()
Workbooks.Open "C:\test.xlsx"
AFILE = ActiveWorkbook.Name: ASHT = ActiveSheet.Name For i = 1 To 10 Sheets(ASHT).Cells(i, 1) = i Next i
End Sub

 

とすることで、「test.xlsx」ファイルをオープンし、そのファイル名と(オープンした時に選択されている)シート名を取得し、それぞれAFILE、ASHTという変数名をつけます。

その後、シート名「ASHT」の(1,1)~(10,1)にそれぞれ行番号と同じ番号を入力しています。

 

 

4.ファイル名を指定してファイルをオープンする方法

 

ファイルをオープンする方法のもう1つはファイル名を指定して開く方法です。

 

ファイル名を指定してファイルをオープンする場合には、Application.GetOpenFilename() を使用します。

 

たとえば以下のようにすると、

 

Sub test()
    Dim fileName  As String
    fileName  = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xls*")
    If fileName <> "False" Then
        Workbooks.Open fileName
    else
        Exit Sub
    End If
End Sub

 

Application.GetOpenFilename()にてファイルを開くダイアログボックスが表示されますので、ユーザーがファイルを選択して開くやり方になります。

 

ダイアログボックスでファイルを選択せずキャンセルされた場合にはFalseが返りますので「Exit Sub」でサブルーチンを抜けて(終了して)います。

 

ちなみに、この例の場合は、2行目でファイルの種類を「*.xls*」としていますので、ダイアログボックスにはすべてのExcelファイルの種類が表示されますが、以下のようにすると、拡張子が「xlsx」のみのファイルだけが表示されます。

 

fileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xlsx")

 

 

5.ファイルの存在を確認してからファイルをオープンする方法

 

最後の方法は、ファイルの存在を確認してからオープンする方法です。

 

以下の例ではDir()関数を使用してファイルの有無を確認してからファイルオープンしています。

 

ファイルが存在しなかった場合には、空文字が返されますので、その場合は「ファイルが存在しません」メッセージを表示し、そうでなかった場合にファイルをオープンしています。

 

 

Sub test()
    If Dir("C:\test.xlsx") <> "" Then
        Workbooks.Open "C:\test.xlsx"
    Else
        MsgBox "ファイルが存在しません"
    End If
End Sub

 

以上がExcel VBAでファイルをオープンする方法になります。

 

 

 

 

 

【Python】pyautoguiを使用したマウスの操作方法




前回はpyautoguiというライブラリを使用してキーボード入力する方法を紹介しましたが、pyautoguiはマウス操作もできますのでその紹介になります

 

 

 

目次

 

はじめに、前回同様pyautoguiのインストール方法を載せておきます。

 

1.pyautoguiのインストール

 

pyautoguiのインストールはコマンドプロンプトで以下のようなコマンドを実行することでできます。

 

pip install pyautogui

 

Python3.4以上なら標準で付属しています。

インストールされているかどうかの確認はコマンドプロンプトで「pip list」と実行することで確認できます。

 

>pip list
Package                   Version
------------------------- ---------
packaging                 21.3
pandas                    1.4.1
pip                       22.0.3
PyAutoGUI                 0.9.53
pyinstaller               5.1

 

 

2.マウスの位置の取得

 

 

pyautoguiを使用してマウスの位置を取得する場合には、position()を使用します。

以下が使用例です。

 

import pyautogui
# マウスの位置を取得 position = pyautogui.position() print(position)

 

これにより、マウスの位置が取得されてたとえば以下のように表示されます。

 

Point(x=1327, y=458)

 

 

3.画面サイズの取得

 

同様に、画面サイズを取得する場合には、size()を使用します。

以下が使用例です。

 

import pyautogui

# 画面サイズを取得
size = pyautogui.size()
print(size)

 

これにより、画面サイズが取得されてたとえば以下のように表示されます。

 

Size(width=1920, height=1080)

 

 

4.マウスの移動(絶対座標)

 

また、マウスの位置を移動させる場合には、moveTo()を使用します。

絶対座標(300,200)に移動させる場合には以下のようにします。

 

import pyautogui

# マウスを移動させる(絶対座標へ移動)
pyautogui.moveTo(300, 200)

 

これにより、瞬時に絶対座標(300,200)に移動します。

 

時間をかけて移動させたい場合には、duration=を指定します。

3秒かけて絶対座標(300,200)に移動させる場合には以下のようにします。

 

import pyautogui

# マウスを移動させる(絶対座標へ移動, duration=移動時間(秒数))
pyautogui.moveTo(300, 200, duration=3)

 

 

5.マウスの移動(相対座標)

 

絶対座標ではなくて相対座標で移動させたい場合には、moveRel()またはmove()を使用します。

以下ではマウスの位置が今いる場所から相対座標で(100,100)移動します。

 

import pyautogui
# マウスを移動させる(相対座標へ移動) pyautogui.moveRel(100, 100)

 

同様のことはmove()を使用して以下でも実現できます。

 

 

import pyautogui
# マウスを移動させる(相対座標へ移動) pyautogui.move(100, 100)

 

 

6.マウスのクリック

 

マウスをクリックする場合には、以下のようにclick()を使用します。

 

import pyautogui

# クリック
pyautogui.click()

 

また、以下のようにx,y座標、クリック数、クリック間のインターバル回数、クリックボタンの選択(右or左)を指定することもできます。

 

 

import pyautogui

# x=x座標、y=y座標、click=クリック回数、interval=クリック間の秒数、button=右クリックor左クリック指定
pyautogui.click(x=700, y=700, clicks=1, interval=1, button="Right")

 

ダブルクリックの場合には、以下のように指定します。

 

import pyautogui

# クリック
pyautogui.doubleClick()

 

さらに、mouseDown()、mouseUp()によりマウスをクリックして押したままにしたり、押されたマウスを離す操作もできます。

 

import pyautogui

# 左クリックを押す(押したまま)
pyautogui.mouseDown(button='left')

# 左クリックを離す
pyautogui.mouseUp(button='left')

 

 

7.マウスのドラッグ

 

ドラッグする場合には、dragTo()を使用します。

以下の例では、(300,500)まで5秒かけてドラッグします。

 

import pyautogui

# 絶対座標 x=300, y=500 まで5秒かけてドラッグ
pyautogui.dragTo(300, 500, duration=5)

 

同様に相対座標でドラッグさせる場合にはdragRel()を使用します。

 

import pyautogui

# 現在の位置から相対座標で xを100, yを100 5秒かけてドラッグ
pyautogui.dragRel(100, 100, duration=5)

 

 

以上が、pyautoguiを使用した主なマウスの操作の説明になります。

 

 

 

 

 
 
 

関連記事:

【Python】おすすめ学習本ランキング8選 - Django Girls and Boys 備忘録

 

【Python】キーボード、キー入力判定方法 - Django Girls and Boys 備忘録

 

【Python】keyboardライブラリでのキー入力検出に使用可能なキーの種類 - Django Girls and Boys 備忘録

 

【Python】Python、Selenium関連情報一覧(ダウンロード、インストール手順、各種やり方、使い方など) - Django Girls and Boys 備忘録

 

【Python Selenium(初心者向け)】PythonのインストールからWebサイトへのアクセスまで含めた簡単なスクレイピングを行うための一通りの手順 - Django Girls and Boys 備忘録

 

【Python】pipのバージョン確認、インストールとアップデート方法 - Django Girls and Boys 備忘録

 

【Python】range、break、continue、スライスによる範囲指定などfor文の基本的な使用方法 - Django Girls and Boys 備忘録

 

【Python】スライスによる範囲指定などスライスの使用方法 - Django Girls and Boys 備忘録

 

【Python】enumerate()関数、reversed()関数を使用したループ処理や辞書型オブジェクトdictのループ処理などのfor文の使用方法 - Django Girls and Boys 備忘録

 

【Python Selenium】各ブラウザ用のドライバーを自動アップデートする方法 - Django Girls and Boys 備忘録

 

【Python Selenium】Pythonで行うproxy環境設定方法 - Django Girls and Boys 備忘録

 

【PythonからWeb操作】seleniumのインストール手順 - Django Girls and Boys 備忘録

 

【PythonによるExcelファイルの読み書き】PythonのダウンロードからExcelファイルの読み書きまでの一通りすべての方法 - Django Girls and Boys 備忘録

 

【Python】pyautoguiを使用したマウスの操作方法 - Django Girls and Boys 備忘録

 

【Python】pyautoguiによるキーボード操作、キー入力方法 - Django Girls and Boys 備忘録

 

【Python】Seleniumで新しいタブを開く方法 - Django Girls and Boys 備忘録

 

【Python】CSVファイルからのデータの読み込み方法 - Django Girls and Boys 備忘録

 

【Python】CSVファイルへのデータの書き込み方法 - Django Girls and Boys 備忘録

 

【Python Selenium】ウインドウ表示時などでのWaitの方法、待機方法 - Django Girls and Boys 備忘録

 

【Python】pyautoguiによるキーボード操作、キー入力方法


以前キーボード入力の判定方法については以下のような過去の記事で紹介しましたが、今回はpyautoguiというライブラリを使用してキーボード入力する方法の紹介になります。

 

 

kuku81kuku81.hatenablog.com

 

 

 

目次

 

 

 

環境はWindows環境でPython3でやっています。

 

1.pyautoguiのインストール

 

pyautoguiのインストールはコマンドプロンプトで以下のようなコマンドを実行することでできます。

 

pip install pyautogui

 

Python3.4以上なら標準で付属しています。

インストールされているかどうかの確認はコマンドプロンプトで「pip list」と実行することで確認できます。

 

>pip list
Package                   Version
------------------------- ---------
packaging                 21.3
pandas                    1.4.1
pip                       22.0.3
PyAutoGUI                 0.9.53
pyinstaller               5.1

 

 

2.キーボード入力(文字入力)

 

 

pyautoguiでキーボード入力する場合には、write()を使用します。

以下の例では「abc」と入力できます。

 

pyautogui.write("abc")

 

実際に、yahooの検索画面で検索キーとして入力してみる場合には、たとえば、以下のように入力します。

 

from selenium import webdriver
from selenium.webdriver.chrome import service as fs
import os
import pyautogui

path_driver = os.getcwd()+'\chromedriver.exe'
# ドライバー指定でChromeブラウザを開く
chrome_service = fs.Service(executable_path=path_driver)
driver = webdriver.Chrome(service=chrome_service)

#指定したURLに遷移する
driver.get('https://www.yahoo.co.jp/')

pyautogui.write("abc")

 

これにて、yahooの検索画面に「abc」と入力されます。

 

入力と入力の間隔をあける場合には、「interval」を指定します。

先程の入力内容を若干変更して、

 

from selenium import webdriver
from selenium.webdriver.chrome import service as fs
import os
import pyautogui

path_driver = os.getcwd()+'\chromedriver.exe'
# ドライバー指定でChromeブラウザを開く
chrome_service = fs.Service(executable_path=path_driver)
driver = webdriver.Chrome(service=chrome_service)

#指定したURLに遷移する
driver.get('https://www.yahoo.co.jp/')

pyautogui.write("abc")
pyautogui.write("def", interval=3.0)
pyautogui.write("ghi")

 

とすると、yahooの検索画面に連続して「abcdefghi」と入力されますが、「def」のwriteの時に「interval=3.0」と指定しているので、「d」と「e」、「e」と「f」、「f」と「g」の間がそれぞれ3秒ずつ待って入力されます。

 

3.キーボード入力(特殊キー入力)

 

「enter」、「escape」などの特殊キーを入力したい場合には、press()を使用します。

以下の例では「enter」キーがクリックされます。

 

pyautogui.press("enter")

 

以下の例では、yahooの検索画面に「abc」と打って「enter」キーがクリックされますので検索結果が表示されます。

その後、5秒待ってウインドウが閉じられます。

 

from selenium import webdriver
from selenium.webdriver.chrome import service as fs
import os
import pyautogui
import time

path_driver = os.getcwd()+'\chromedriver.exe'
# ドライバー指定でChromeブラウザを開く
chrome_service = fs.Service(executable_path=path_driver)
driver = webdriver.Chrome(service=chrome_service)

#指定したURLに遷移する
driver.get('https://www.yahoo.co.jp/')

pyautogui.write("abc")
pyautogui.press("enter")

time.sleep(5)

# タブを閉じる
driver.close()

driver.quit()

 

特殊キーとしては、

「enter」、「escape」、「shift」、「space」、「del」、「alt」、「backspace」、「up」、「down」、「left」、「right」

などがあります。

 

下記にて、使用可能なキーを確認することもできます。

 

print(pyautogui.KEYBOARD_KEYS)

 

 

4.キーボード入力(キーの同時入力)

 

キーの同時入力を行いたい場合には、hotkey()を使用します。

hotkey()のカッコ内に同時入力したいキーを並べていきます。

以下の例では「ctrl」キーと[c]キーの同時クリックをしています。

 

pyautogui.hotkey("ctrl", "c")

 

これと同様の内容はkeyDown()、keyUp()を使用して以下でも実現できます。

「keyDown」はキーをクリックして押したままにする操作で、「keyUp」はキーを離す操作です。

 

pyautogui.keyDown("ctrl")
pyautogui.keyDown("c")
pyautogui.keyUp("c")
pyautogui.keyUp("ctrl")

 

 

以上が、pyautoguiによるキーボード操作、キー入力の説明になります。

 

 

 

関連記事:

【Python】おすすめ学習本ランキング8選 - Django Girls and Boys 備忘録

 

【Python】キーボード、キー入力判定方法 - Django Girls and Boys 備忘録

 

【Python】keyboardライブラリでのキー入力検出に使用可能なキーの種類 - Django Girls and Boys 備忘録

 

【Python】Python、Selenium関連情報一覧(ダウンロード、インストール手順、各種やり方、使い方など) - Django Girls and Boys 備忘録

 

【Python Selenium(初心者向け)】PythonのインストールからWebサイトへのアクセスまで含めた簡単なスクレイピングを行うための一通りの手順 - Django Girls and Boys 備忘録

 

【Python】pipのバージョン確認、インストールとアップデート方法 - Django Girls and Boys 備忘録

 

【Python】range、break、continue、スライスによる範囲指定などfor文の基本的な使用方法 - Django Girls and Boys 備忘録

 

【Python】スライスによる範囲指定などスライスの使用方法 - Django Girls and Boys 備忘録

 

【Python】enumerate()関数、reversed()関数を使用したループ処理や辞書型オブジェクトdictのループ処理などのfor文の使用方法 - Django Girls and Boys 備忘録

 

【Python Selenium】各ブラウザ用のドライバーを自動アップデートする方法 - Django Girls and Boys 備忘録

 

【Python Selenium】Pythonで行うproxy環境設定方法 - Django Girls and Boys 備忘録

 

【PythonからWeb操作】seleniumのインストール手順 - Django Girls and Boys 備忘録

 

【PythonによるExcelファイルの読み書き】PythonのダウンロードからExcelファイルの読み書きまでの一通りすべての方法 - Django Girls and Boys 備忘録

 

【Python】pyautoguiを使用したマウスの操作方法 - Django Girls and Boys 備忘録

 

【Python】pyautoguiによるキーボード操作、キー入力方法 - Django Girls and Boys 備忘録

 

【Python】Seleniumで新しいタブを開く方法 - Django Girls and Boys 備忘録

 

【Python】CSVファイルからのデータの読み込み方法 - Django Girls and Boys 備忘録

 

【Python】CSVファイルへのデータの書き込み方法 - Django Girls and Boys 備忘録

 

【Python Selenium】ウインドウ表示時などでのWaitの方法、待機方法 - Django Girls and Boys 備忘録

 

 

 

【Python】Seleniumで新しいタブを開く方法


今回はPythonSeleniumで新しいタブを開く方法の説明になります。

 

新タブはjavascriptの実行によりwindow.openを使用することで開くことができます。

 

 

もう1つ、driver.switch_to.new_window("tab")使用による方法もありますが、それは以下の記事などで用例中に記載しています。

 

kuku81kuku81.hatenablog.com

 

 

 

目次

 

 

1.Chromeの場合

 

具体的には、Chromeの場合には、同じフォルダ内にchromedriver.exeを入れておくことで、

 

from selenium import webdriver
from selenium.webdriver.chrome import service as fs
import os

path_driver = os.getcwd()+'\chromedriver.exe'
# ドライバー指定でChromeブラウザを開く
chrome_service = fs.Service(executable_path=path_driver)
driver = webdriver.Chrome(service=chrome_service)

#driver = webdriver.Chrome(path_driver)
 
# URLを指定して、新しいタブを開く
driver.execute_script("window.open('https://www.google.co.jp');")

# タブを閉じる
driver.close()

driver.quit()

 

にて、別タブでGoogleの検索画面が開きます。

 

7行目の、

 

driver = webdriver.Chrome(service=chrome_service)

 

で新しくウインドウが開きますが、

 

10行目の、

 

文driver.execute_script("window.open('https://www.google.co.jp');")

 

で、その中に別タブでGoogleの検索画面が開くことになります。

 

ウインドウを閉じる場合には、その次の、

 

driver.close()

 

で閉じ、

 

driver.quit()

 

でドライバーを抜けます。

 

2.Edgeの場合

 

ちなみに、Edgeの場合には、ほぼ同様ですが、

 

from selenium import webdriver
from selenium.webdriver.chrome import service as fs
import os

path_driver = os.getcwd()+'\msedgedriver.exe'
# ドライバー指定でEdgeブラウザを開く
edge_service = fs.Service(executable_path=path_driver)
driver = webdriver.Edge(service=edge_service)

# URLを指定して、新しいタブを開く
driver.execute_script("window.open('https://www.google.co.jp');")

# タブを閉じる
driver.close()

driver.quit()

 

にて新しいタブでGoogle画面が開いてその後閉じます。

 

3.空のタブを開くには

 

また、URLを指定せずに、以下のようにすると、

 

from selenium import webdriver
from selenium.webdriver.chrome import service as fs
import os

path_driver = os.getcwd()+'\chromedriver.exe'
# ドライバー指定でChromeブラウザを開く
chrome_service = fs.Service(executable_path=path_driver)
driver = webdriver.Chrome(service=chrome_service)

#driver = webdriver.Chrome(path_driver)
 
#空のタブを開く
#driver.execute_script("window.open();")
      
# タブを閉じる
driver.close()

driver.quit()

 

別タブを空のタブで開きます。

 

以上がSelenium関係で別タブを開く方法となります。

 

 

また、PythonにてSeleniumを活用してスクレイピング、RPA化などを行っていく場合に必要となりそうな内容の記事を一覧として以下にまとめましたのでよかったらご参照ください。

 

 

kuku81kuku81.hatenablog.com

 

 

 

関連記事:

【Python】おすすめ学習本ランキング8選 - Django Girls and Boys 備忘録

 

【Python】キーボード、キー入力判定方法 - Django Girls and Boys 備忘録

 

【Python】keyboardライブラリでのキー入力検出に使用可能なキーの種類 - Django Girls and Boys 備忘録

 

【Python】range、break、continue、スライスによる範囲指定などfor文の基本的な使用方法 - Django Girls and Boys 備忘録

 

【Python】スライスによる範囲指定などスライスの使用方法 - Django Girls and Boys 備忘録

 

【Python】enumerate()関数、reversed()関数を使用したループ処理や辞書型オブジェクトdictのループ処理などのfor文の使用方法 - Django Girls and Boys 備忘録

 

【Python Selenium】各ブラウザ用のドライバーを自動アップデートする方法 - Django Girls and Boys 備忘録

 

【Python Selenium】Pythonで行うproxy環境設定方法 - Django Girls and Boys 備忘録

 

【PythonからWeb操作】seleniumのインストール手順 - Django Girls and Boys 備忘録

 

【PythonによるExcelファイルの読み書き】PythonのダウンロードからExcelファイルの読み書きまでの一通りすべての方法 - Django Girls and Boys 備忘録

 

【Python】pyautoguiを使用したマウスの操作方法 - Django Girls and Boys 備忘録

 

【Python】pyautoguiによるキーボード操作、キー入力方法 - Django Girls and Boys 備忘録

 

【Python】Seleniumで新しいタブを開く方法 - Django Girls and Boys 備忘録

 

【Python】CSVファイルからのデータの読み込み方法 - Django Girls and Boys 備忘録

 

【Python】CSVファイルへのデータの書き込み方法 - Django Girls and Boys 備忘録

 

【Python Selenium】ウインドウ表示時などでのWaitの方法、待機方法 - Django Girls and Boys 備忘録