[[20220817145517]] 『マクロで一連の動きを行いたい』(よーじ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロで一連の動きを行いたい』(よーじ)

A1セルにデスクトップにあるCSVファイルの名前が入力されています。
321.csvの場合は321と拡張子は省いています。
そこでマクロで以下の動作をしたいのですが・・・

1.sheet2にA1セルのCSVをコピーする。
2.次にsheet2のB5セルから入力されている一番右下のセルまでをコピーする。
3.Sheet3のA1セルに行/列の入れ替えで張り付ける。
4.Sheet3の1行目と2行目の間、B列とC列の間でウィンドウ枠の固定をする
5.Sheet3のD列の一番下のセルの下に2行目から入力されている一番下までの合計をSUM関数で求める
6.その計算式をAW列までコピーする

この一連の動作をマクロで行いたいです。
よろしくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


こんにちわ〜^^
2.と3.の関係を
エクセルの表形式で[見本、10行、10列くらいに省いても解ればOKですが(*^^*)]
さらに、ご説明賜ればお手伝い
出来るかもしれません。。。←。多分。。。かなり、←あやしいですが
少なくともたくさん、アドバイスが有ると思います。多分。。。^^;

どのあたりで、お困りで。。。
(隠居Z) 2022/08/17(水) 16:17

お返事ありがとうございます。

まずは2.ですが
CSVにより列行がちがいますので、一番右下に入力されているセルまでを全部コピーしたいです。
B列より何列まで入力されているかはCSVにより違いますが、途中に空白セルはありません。
B5より下はB5、B6、B7セル以外はこちらも空白セルはありません。
例としてはB5セルからAk76セルまでを選択してコピーするイメージです。
この時の空白セルはB5、B6、B7セルでそれ以外は入力されています。

分かりづらくてすいません。

3.ですが、
2.でコピーしたのをsheet3のA1セルを選択して、行/列の入れ替えの貼り付けをしたいです。

よろしくお願いいたします。
(よーじ) 2022/08/17(水) 16:30


何点か確認です。

■1
>この一連の動作をマクロで行いたいです。
して、現状どこまで出来ているのですか?
何らかの着手したものがあるのであれば、それを提示して、何処で詰まっているのかを相談されると具体的なアドバイスが得られると思います。

なお、提示されている大半のことは【マクロの記録】を使ってコード化してみると必要な命令は調べることができるとおもいます。

■2
>1.sheet2にA1セルのCSVをコピーする。
発想が「csvファイルをブックとして開く」というところにあると思うのですが、そのcsvファイルはブックとして開いて問題がないのですか?

(もこな2) 2022/08/17(水) 17:01


練習課題として作成してみました。
雑なマクロでごめんなさい。

 Sub Sample()
    'A1セルからファイル名(拡張子無し)を読み取る
    Dim FileName As String
    FileName = Range("A1").Value
    '「.csv」を付加
    FileName = FileName & ".csv"

    With Sheet2
        '1.sheet2にA1セルのCSVをコピーする。
        'デスクトップのフォルダパスを取得
        Dim WSH As Object
        Dim FolderPath As String
        Set WSH = CreateObject("WScript.Shell")
        FolderPath = WSH.SpecialFolders("Desktop") & "\"
        Set WSH = Nothing

        'ファイルの実在確認
        If Dir(FolderPath & FileName) = "" Then Exit Sub

        'CSVファイル読み込み
        With .QueryTables.Add(Connection:="text;" & FolderPath & FileName, Destination:=.Range("A1"))
            .TextFileCommaDelimiter = True
            .Refresh BackgroundQuery:=False
            .Delete
        End With

        '2.次にsheet2のB5セルから入力されている一番右下のセルまでをコピーする。
        Intersect(.UsedRange, .UsedRange.Offset(4, 1)).Copy
    End With

    With Sheet3
        '3.Sheet3のA1セルに行/列の入れ替えで張り付ける。
        .Activate
        .Range("A1").PasteSpecial Transpose:=True
        Application.CutCopyMode = False

        '4.Sheet3の1行目と2行目の間、B列とC列の間でウィンドウ枠の固定をする
        ActiveWindow.FreezePanes = False
        .Range("C2").Select
        ActiveWindow.FreezePanes = True

        '5.Sheet3のD列の一番下のセルの下に2行目から入力されている一番下までの合計をSUM関数で求める
        '6.その計算式をAW列までコピーする
        .Range("D" & Rows.Count).End(xlUp).Offset(1).Resize(, 46).Value = "=SUM(R2C:R[-1]C)"
    End With
 End Sub

(下手の横好き) 2022/08/17(水) 17:09


返事ありがとうございます。

■1
正直マクロには詳しくなくて3番4番ぐらいしかマクロの記録ではわかりません。
それ以外はどうしていいかわからないのが現状です。

■2
csvは開いても特に問題はありません。
常に色々なCSVファイルが送られてきますので・・・
一応別に保存はしてあります。

本当に分かりづらくてすいませんがよろしくお願いいたします。
(よーじ) 2022/08/17(水) 17:17


お返事ありがとうございます。

無事にできました。

ありがとうございました。
(よーじ) 2022/08/17(水) 18:09


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.