YouTube_ExcelでTTMを自動取得|みずほヒストリカルデータを一瞬で更新する方法

YouTubeでお話していたファイルはこちらです。

共有用_みずほヒストリカルデータ_自動取得.xlsm

補足|VBAの解説

記載しているVBAは以下のとおりです。
ご興味あればご覧ください。

コード詳細
Option Explicit

Sub みずほTTMデータ取得()

    Dim url As String
    Dim wbThis As Workbook
    Dim wbCsv As Workbook
    Dim wsSet As Worksheet
    Dim wsRaw As Worksheet

    Set wbThis = ThisWorkbook
    Set wsSet = wbThis.Worksheets("設定")
    Set wsRaw = wbThis.Worksheets("TTM_raw")

    url = Trim(wsSet.Range("B2").Value)

    If url = "" Then
        MsgBox "設定シートのB2に、みずほCSVのURLを入力してください。", vbExclamation
        Exit Sub
    End If

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    On Error GoTo ErrHandler

    '既存データをクリア
    wsRaw.Cells.Clear

    'CSVをURLから別ブックとして開く
    Set wbCsv = Workbooks.Open(Filename:=url)

    'CSV全体をコピーして、TTM_rawに貼り付け
    wbCsv.Worksheets(1).UsedRange.Copy Destination:=wsRaw.Range("A1")

    'CSVブックを閉じる
    wbCsv.Close SaveChanges:=False
    Set wbCsv = Nothing

    wsRaw.Columns.AutoFit

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

    MsgBox "みずほTTMデータを取得しました。", vbInformation
    Exit Sub

ErrHandler:
    If Not wbCsv Is Nothing Then
        wbCsv.Close SaveChanges:=False
    End If

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

    MsgBox "取得に失敗しました。" & vbCrLf & _
           "URL、ネット接続、またはCSV仕様を確認してください。" & vbCrLf & _
           Err.Description, vbExclamation

End Sub
解説

このVBAでは、設定シートに入力したURLを読み込み、みずほヒストリカルデータのCSVをExcelで開いて、「TTM_raw」シートに貼り付けています。

まず、設定シートのB2セルからCSVのURLを取得します。

url = Trim(wsSet.Range("B2").Value)

Trim は、URLの前後に余計なスペースが入っていた場合に、それを取り除くための処理です。

URLが空欄の場合は、メッセージを表示して処理を止めます。

If url = "" Then
    MsgBox "設定シートのB2に、みずほCSVのURLを入力してください。", vbExclamation
    Exit Sub
End If

次に、マクロ実行中の画面のちらつきや確認メッセージを抑えるため、画面更新と警告表示を一時的に止めています。

Application.ScreenUpdating = False
Application.DisplayAlerts = False

貼り付け先である「TTM_raw」シートは、毎回いったんクリアします。

wsRaw.Cells.Clear

そのうえで、指定したURLのCSVファイルをExcelで開きます。

Set wbCsv = Workbooks.Open(Filename:=url)

開いたCSVの中身をすべてコピーし、「TTM_raw」シートのA1セルから貼り付けます。

wbCsv.Worksheets(1).UsedRange.Copy Destination:=wsRaw.Range("A1")

貼り付けが終わったら、開いていたCSVファイルを保存せずに閉じます。

wbCsv.Close SaveChanges:=False
Set wbCsv = Nothing

最後に、列幅を整えたうえで、最初に止めていた画面更新と警告表示を元に戻します。

wsRaw.Columns.AutoFit

Application.DisplayAlerts = True
Application.ScreenUpdating = True

また、途中でエラーが出た場合に備えて、エラー処理も入れています。

On Error GoTo ErrHandler

URLの誤り、ネット接続の問題、シート名の違いなどで処理に失敗した場合でも、開きっぱなしのCSVファイルを閉じ、Excelの設定を元に戻すようにしています。

このVBAで行っているのは、あくまで「URLを読む」「CSVを開く」「貼り付ける」「閉じる」という処理までです。

USDだけを抜き出す、日付に応じてレートを参照する、といった加工は、Excel関数側で行う想定にしています。

Excel関連記事