1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

みずほ銀行の為替のヒストリカルデータダウンロード→エクセルに集計まで ほぼ1クリックで

Last updated at Posted at 2020-03-04

#自動化したい
当方、経理職として戦っているのですが、毎日のドルレートを活用して海外送金取引等の仕訳に利用しているわけなのですが(´・ω・`)毎日毎日、みずほ銀行からヒストリカルデータのCSVをダウンロードしてエクセルに張り付けているのであります。そこでこんなルーチンワークこそ自動化の出番だということで作ったのが今回のコーディングです。

#以下コード

qiita.rb
from selenium import webdriver
import time
import pathlib
import csv
import datetime
import openpyxl


def download_csv(save_dir):
    profile=webdriver.FirefoxProfile()
    profile.set_preference("browser.donwload.folderlist",2)
    profile.set_preference("browser.download.manager.sjpwmwjemStarting",False)
    profile.set_preference("browser.download.dir", save_dir)
    profile.set_preference("browser.helperApps.neverASK.savedTodisk","text/csv")

    driver=webdriver.Firefox(firefox_profile=profile)
    driver.get("https://www.mizuhobank.co.jp/market/historical.html")
    time.sleep(1)
    driver.find_element_by_css_selector("#mainCol > article > div > div.section > div.inner > table > tbody > tr:nth-child(2) > th > span > a").click()


def open_csv_to_excel():
    path=pathlib.Path(r"C:\Users\name\Downloads")
    for pass_obj in path.iterdir():
        
        if pass_obj.match("quote.csv"):
            
            with open(pass_obj)as x:
                reader=csv.reader(x)
                
                for row in reader:
                    if row[0]==today:
                        print(row[1])
                        wb=openpyxl.load_workbook(r"C:\Users\name\Documents\excel_python\data\レート表.xlsx")
                        sh=wb.active
                        
                        for dt_row in range(2,sh.max_row+1): #(2行から最終行まで繰り返し 変数dt_row)
                             
                            for dt_column in range(2,sh.max_column+1): #(2列から最終列まで繰り返し 変数dt_column)
                                
                                if sh.cell(dt_row,dt_column).value != None: #datetime.datetime形式を文字列(str型)に変換
                                    date=sh.cell(dt_row,dt_column).value    
                                    date_sec="{}/{}/{}".format(date.year,date.month,date.day) 
                                    
                                    if date_sec==today:    
                                        sh.cell(dt_row,dt_column+1).value=row[1]                            

                                        wb.save(r"C:\Users\name\Documents\excel_python\data\レート表.xlsx")
                               
                   
now=datetime.datetime.today()
today="{}/{}/{}".format(now.year,now.month,now.day)
download_csv(r"C:\Users\name\Downloads\為替レート表")
time.sleep(8)
open_csv_to_excel()

内容としてはseleniumを活用してみずほ銀行のヒストリカルデータをダウンロード、その間8秒間はスリープをかけて保存しきるのを待ってから、続いてエクセルに集計するという段取りです。最新の日付を見やすいように所定の文字列型に直すのに一工夫いりました。

#職場で試してみて
まぁ、環境構築に時間が結構取られてしまいました。firefoxの準備とブラウザ操作のドライバですね。これを別のPCに入れ込むというのを考えると改めてエクセルのVBAの環境構築不要な面は魅力的だなと感じる次第です。あと、職場のPCは性能が悪いので処理に30秒くらいかかりますね。(;´Д`)何でわざわざダウンロードしてエクセルに集計するかというと帳票(エビデンス)として残すためであります。つまりのこの操作で帳票づくりもやってしまおうという魂胆です。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?