• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:新規CSVデータの2行目以下を追加するVBA)

VBAを使って新規CSVデータの2行目以下を追加する方法

このQ&Aのポイント
  • 店舗で導入した新しい電子決済端末のデータをローカルのExcelで分析する必要があります。そのため、新規取得のCSVデータの2行目以下のデータを、既存のBookファイルに追加したいと思っています。
  • csvファイルは、月6回(5日ごと)のファイルとなっており、列は最長AZ列までカバーしています。データの行数は売上数が毎日変動するため、毎回異なります。
  • 以前Excel VBAを使っていた経験があるので、コードさえあれば実装できます。ネットで探したコードでは実現できなかったため、質問させていただきました。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (774/1619)
回答No.4

てっきり上に挿入するのだと思いました。上画像を新規データと思ってしまいました。 下追加なら、 Option Explicit ' Sub Macro2()   Dim FileName As String   Dim Cell As Range '   FileName = Application.GetOpenFilename("CSVファイル,*.csv") '   If FileName = "False" Then     End   End If   Set Cell = Cells(Rows.Count, "A").End(xlUp).Offset(1) '   With ActiveSheet.QueryTables.Add("TEXT;" & FileName, Cell)     .AdjustColumnWidth = False     .TextFileStartRow = 2     .TextFileCommaDelimiter = True     .Refresh   End With   Cell.QueryTable.Delete End Sub

ketae
質問者

お礼

わざわざありがとうございます 個人的にはWindowsそのものにAIが搭載されるというニュースを聞いて、Excel上でもやりたい作業を聞けばVBA書いてくれるようになるかなと思っていますが、いまのところ貴君のようなプロフェッショナルな方に相談したほうが、悩む時間が少なくて助かります、 心より、御礼を申し上げます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

VBAはゆっくり勉強してもらうとして、(昔VBAをやったからと言って拘らない方がよい) 本件ではないが、最近はエクセルもPower何とかいうのがはやりのようだが。 WEB照会もしていないようだ。やれば、ほぼ課題に近いVBAコードは見つかる。 ーーー お勧めは、 メモ帳(やテキストエディタ―)に、CSVデータを手動で、コピペして統合データを作ってはどうか。 張り付けは挿入貼り付け(行割り込み)になるし。削除、修正も簡単できる。 其の後(完成後)はExcelのシートに読み込ませるのは簡単。 今ではCSVデータは、エクセルファイル扱いのように見える。 ーー VBAは下記のようなのを確認した。参考まで。 Sub test01() Dim tmp As Variant file_name = "C:\Users\XXXX\Documents\CSV例.csv" 'ファイル指定 フルパスで 要修正 j = 10 'データを書き出すシートのスタート行番号 要修正 Open file_name For Input As #1 Do Until EOF(1) Line Input #1, buf '1行分読み込み tmp = Split(buf, ",") 'カンマ区切り単位で各セルデータ化=分割 Range(Cells(j, 1), Cells(j, 4)) = tmp 'A列より以右列に張り付け '元データが4列分の場合の例 要修正 j = j + 1 '次レコード設定のため、次行を指す Loop Close #1 End Sub 売りはRange(Cells(j, 1), Cells(j, 4)) = tmpの部分です。各セルに繰り返し処理に見えないだろう。 質問用には、勿論CSVの数だけ繰り返しのコードに作り替えないとならないが簡単なので略。 直前作業の「最終行の次行から」貼り付けを繰り返すというコードも常識、略。 ーー 本件、商売用の課題を、そのままあげて、回答者に作業をやらす、のはどうかな。

ketae
質問者

お礼

ありがとうございます 「どうかな。」というのは意味するところはわかりますが、 ・AI登場でGoogleのキーワード検索がほとんど機能しない時代になった ・AIがコードやプログラム、アプリも書く時代になった ・AIでほとんどのことが一瞬または短時間に終わる ことを考えると、わたしのようなVBAを専門としない人間がここ(Okwave)で質問する意味としては、経験者にソリューションを質問して提示・提供いただき、ユーザは感謝を伝える、という使い方しかないと思っています 時代のスピードにのってOfficeなどアプリを利用するユーザーは、もうVBAプログラミングを覚える必要がない時代に突入したと思っています ともあれ、ご示唆ありがとうございます

  • SI299792
  • ベストアンサー率47% (774/1619)
回答No.2

旧データを下に下げて 新規取得の CSVデータを 2行目以下に追加すればいいのですね。 ファイル名をどうするかわからないので、ダイアログボックス選択にしました。 Option Explicit ' Sub Macro1()   Dim FileName As String   Dim I As Worksheet   Dim REnd As Long '   FileName = Application.GetOpenFilename("CSVファイル,*.csv") '   If FileName = "False" Then     End   End If   Set I = ActiveSheet   Workbooks.Open FileName, False   REnd = ActiveSheet.UsedRange.Rows.Count   I.Rows("2:" & REnd).Insert   Rows("2:" & REnd).Copy I.[A2]   ActiveWorkbook.Close End Sub

ketae
質問者

お礼

ありがとうございます 追加した新しいレコードが既存のsheetのレコードの上に挿入されてしまいましたが、フィルターで日付でソートすればいいので、助かりました 動きもとても早く軽くて助かりました

回答No.1

私はコードを0から書けないので、毎回、マクロ記録した1つの操作を関数に加工、その関数をストック & 再利用することで全部やってきたので、今回もそれと同じ方法で行けるはずですよ。 変更箇所はファイル名くらいでしょう。

ketae
質問者

お礼

ありがとうございます マクロ操作だと修正が必要な箇所が多くでたので、専門の方に聞く方が早く、正確かなと思いました

関連するQ&A