Excel에서 Zaim에 쓰기
본래라면 외부 앱에서 Zaim에 게시할 때는 Zaim API를 사용하는 것이 근사일 것입니다만, 귀찮아서, 목적대로의 입력이 생겼는지 확인하고 싶기 때문에, IE 객체로 Zaim의 화면을 표시한다 결정했습니다.
※ 또한 VBA 매크로를 사용하기 때문에 파일은 xlsm 형식으로 저장해야합니다.
메커니즘
구조는 매우 간단합니다. IE 객체를 사용하여 Zaim을 표시하고 폼에 데이터를 씁니다 (본래라면 Edge 등을 사용해야 할 곳이겠지만 OLE에서 만지기위한 정보를 찾을 수 없었습니다 ...).
지금은 IE에서도 QuerySelector()를 사용하여 요소를 가져오고 쓸 수 있으므로 편해졌습니다.
코드
코드입니다. 이번은 「이체」만의 코드입니다만, 입금시도 출금시도 대략적으로는 같을 것입니다.
Public Sub ShowWindow(Amount As Integer, FromID As Long, ToID As Long, TransactionDate As String, Comment As String)
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
Call IE.Navigate("https://zaim.net/money/new?toggle=transfer")
Do While IE.Busy = True Or IE.readyState <> 4
DoEvents
Loop
If IE.LocationURL <> "https://zaim.net/money/new?toggle=transfer" Then
' 目的のページにいけてないと言うことは、ログインがそもそもできてないと思われる。エラーで落とす
Call MsgBox("ログインしてください")
Exit Sub
End If
IE.Document.QuerySelector("#transfer_amount").Value = Amount
IE.Document.QuerySelector("#transfer_from_account_id").Value = FromID
IE.Document.QuerySelector("#transfer_to_account_id").Value = ToID
IE.Document.QuerySelector("#transfer_date").Value = TransactionDate
IE.Document.QuerySelector("#transfer_comment").Value = Comment
End Sub
Zaim에서는 계좌의 정보는 ID로 관리되고 있으므로, 그 ID만 지정하면 계좌를 지정할 수 있습니다 (입출금 페이지 등을 브라우저의 개발자 도구로 보는 것으로 확인할 수 있습니다). 계좌 수치가 크기 때문에 Integer가 아닌 Long으로 지정해 둡시다.
또, 날짜에 대해서는 Zaim은 "yyyy년 mm월 dd일"밖에 받아들여주지 않는 것 같습니다 (yyyy/mm/dd에서는 안 되었습니다). 미리 Excel측에서 yyyy년 mm월 dd일에 일자의 서식을 설정해 두고, 그것을 인수로 지정합시다.
그리고는 Excel측으로부터 어떠한 방법을 사용해 이 메소드를 호출하면, 값이 모두 설정되어 있는 상태로, 대체 윈도우가 표시됩니다. 값을 확인하고 "입력"버튼을 누르면 입력이 가능합니다.
다른 웹 사이트 · 웹 서비스를 Excel에서 만질 때에도 응용이 효과가 있을까.
Reference
이 문제에 관하여(Excel에서 Zaim에 쓰기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TakamiChie/items/142b17f23e6999347e4d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
코드입니다. 이번은 「이체」만의 코드입니다만, 입금시도 출금시도 대략적으로는 같을 것입니다.
Public Sub ShowWindow(Amount As Integer, FromID As Long, ToID As Long, TransactionDate As String, Comment As String)
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
Call IE.Navigate("https://zaim.net/money/new?toggle=transfer")
Do While IE.Busy = True Or IE.readyState <> 4
DoEvents
Loop
If IE.LocationURL <> "https://zaim.net/money/new?toggle=transfer" Then
' 目的のページにいけてないと言うことは、ログインがそもそもできてないと思われる。エラーで落とす
Call MsgBox("ログインしてください")
Exit Sub
End If
IE.Document.QuerySelector("#transfer_amount").Value = Amount
IE.Document.QuerySelector("#transfer_from_account_id").Value = FromID
IE.Document.QuerySelector("#transfer_to_account_id").Value = ToID
IE.Document.QuerySelector("#transfer_date").Value = TransactionDate
IE.Document.QuerySelector("#transfer_comment").Value = Comment
End Sub
Zaim에서는 계좌의 정보는 ID로 관리되고 있으므로, 그 ID만 지정하면 계좌를 지정할 수 있습니다 (입출금 페이지 등을 브라우저의 개발자 도구로 보는 것으로 확인할 수 있습니다). 계좌 수치가 크기 때문에 Integer가 아닌 Long으로 지정해 둡시다.
또, 날짜에 대해서는 Zaim은 "yyyy년 mm월 dd일"밖에 받아들여주지 않는 것 같습니다 (yyyy/mm/dd에서는 안 되었습니다). 미리 Excel측에서 yyyy년 mm월 dd일에 일자의 서식을 설정해 두고, 그것을 인수로 지정합시다.
그리고는 Excel측으로부터 어떠한 방법을 사용해 이 메소드를 호출하면, 값이 모두 설정되어 있는 상태로, 대체 윈도우가 표시됩니다. 값을 확인하고 "입력"버튼을 누르면 입력이 가능합니다.
다른 웹 사이트 · 웹 서비스를 Excel에서 만질 때에도 응용이 효과가 있을까.
Reference
이 문제에 관하여(Excel에서 Zaim에 쓰기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TakamiChie/items/142b17f23e6999347e4d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)