Excelデータを業務に使用しているソフトに自動入力するプログラムを作成しました。
Excelブック「Book1」のセルA2から以下(A3,A4,A5,,)に入力されたデータがあります、データ数は毎回違います。
「Book1」にデータが入力されたらxlwingsでPythonコード「自動入力」を手動で実行
「自動入力」でopenpyxl・pyautogui・pyperclipを用いデータをソフトに入力していくという流れです。
import openpyxl as xl import pyautogui import pyperclip as pc import time def shori(): v_wb = xl.load_workbook(r"C:\Users\○○○\Desktop\Book1.xlsm") v_ws = v_wb.active v_type = v_ws["a1"].value for i in range(2, v_ws.max_row + 1): pyautogui.click(1094,334) #ソフトを選択して自動入力 v_type = v_ws['a' + str(i)].value pc.copy(v_type) time.sleep(0.2) pyautogui.hotkey("ctrl","v") time.sleep(0.1) pyautogui.press("down") time.sleep(0.1) pyautogui.hotkey('ctrl', 'enter') time.sleep(6) shori()
実行をして「Book1」からソフトへの入力はうまくいきました、しかし実行後以下のエラーがExcelから?メッセージBOXのようなもので毎回出ます。
コードの作り方に問題があるのでしょうか、エラーが出ないようにすることはできるのでしょうか?
お詳しい方宜しくお願いいたします。Error
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\users\○○○\desktop\自動入力.py", line 28, in <module>
shori()
File "c:\users\○○○\desktop\自動入力.py", line 17, in shori
pc.copy(v_type)
File "C:\Users\○○○\AppData\Local\Programs\Python\Python39\lib\site-packages\pyperclip_init_.py", line 463, in copy_windows
text = _stringifyText(text) # Converts non-str values to str.
File "C:\Users\○○○\AppData\Local\Programs\Python\Python39\lib\site-packages\pyperclip_init_.py", line 111, in _stringifyText
raise PyperclipException('only str, int, float, and bool values can be copied to the clipboard, not %s' % (text.__class__.__name__))
pyperclip.PyperclipException: only str, int, float, and bool values can be copied to the clipboard, not NoneType
Press Ctrl+C to copy this message to the clipboard.
OK
回答1件
0
まず、
File "C:\Users\○○○\AppData\Local\Programs\Python\Python39\lib\site-packages\pyperclip\init.py", line 111, in _stringifyText
raise PyperclipException('only str, int, float, and bool values can be copied to the clipboard, not %s' % (text.class.name))
pyperclip.PyperclipException: only str, int, float, and bool values can be copied to the clipboard, not NoneType
をグーグル翻訳仮名に可で日本語に翻訳して読みましょう。
それをもとに、どういうデータでエラーが起きるかを考えて、そのデータを調べましょう。それで分からなければ、データを示して質問してください。
投稿2021/08/11 22:56
総合スコア24660
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
回答へのコメント
2021/08/12 01:37
ご回答ありがとうございます。 ○テキストを文字列化する ○クリップボードにコピーできるのはstr、int、float、boolの値のみであり、コピーすることはできません。 ○pyperclip.PyperclipException:str、int、float、およびboolの値のみをクリップボードにコピーでき、NoneTypeはコピーできません。 翻訳をかけたところ、上記の結果が出ました。 データの中身は10桁の数字です。 これをstr、int、float、boolの値に変換(文字列に変換)しないといけないということだと思います。 コード16行目 v_type = v_ws['a' + str(i)].valueを v_type = v_ws[str('a' )+ str(i)].value に変更すれば良いのでしょうか?
2021/08/14 04:20
検証致しました。 v_type = v_ws[str('a' )+ str(i)].valueに変更では状況は変わりませんでした。 「only str, int, float, and bool values can be copied to the clipboard, not %s' % 」 %s' %ではなく、str、int、float、およびboolの値のみをクリップボードにコピーできます。 の「%s' %」の部分にヒントがあるのでしょうか?