テーブル機能の備忘録 番外1 各行をメモ帳に転記

先日から、マクロによるテーブル機能の扱いを纏めている(備忘録)。
今日は、番外編。
↓ こちらとテーブルのコラボに挑戦。
gorilla-strong.hatenablog.com

今回は、テーブルの各行を、メモ帳に書き出してみる。
書き出しに関しては、↓ こちらのSample2を参照した。
www.moug.net

書き出されるテーブルがこちら。
f:id:Infoment:20200304225931p:plain

一行ずつ書き出すことから、ループを使用する。行全体は、ListRowオブジェクトのRangeメンバーで指定することにした。

Sample2を参照したサイトに記載の通り、PC環境によっては処理速度が速すぎて、ペーストする前に次のメモ帳が立ち上がってしまう。

そこで、メモ帳起動直後と、コピー内容を張り付けた直後に、強制的に1秒の待ち時間を設けてみた。

Sub test()
    Dim Tb As ListObject
    Set Tb = ActiveSheet.ListObjects(1)
    Dim ListRow As Excel.ListRow
    Dim rc As Long
        For Each ListRow In Tb.ListRows
            ListRow.Range.Copy
            rc = Shell("notepad.exe", vbNormalFocus)
            Application.Wait [Now() + "00:00:01"]
            If rc <> 0 Then
                Application.SendKeys "%EP", True
                Application.Wait [Now() + "00:00:01"]
            End If
        Next
        Application.CutCopyMode = False
End Sub

結果がこちら。
f:id:Infoment:20200304230521g:plain

なお、待ち時間の妥当性については検証していない。
もっと短くても、良いかもしれない。

次回に続きます。

参考まで。