質問: エクセルの固定範囲にcsvを貼り付ける。 エクセルの固定範囲にcsvを貼り付ける。 作ろうとしているのは、エクセルで作られた勤務表など 貼り付けすべき範囲が固定されているエクセルシートに、 ユーザーが選択したcsvを貼り付けるマクロです。 ユーザーが開いているエクセルファイル(勤務表.xlsとします) に設置するボタンクリックイベントで、押下しますと 1.csvファイルをユーザーが選択して開くことができ、 (選択したcsvファイルをsamp1.csvとします) 2.そのsamp1.csvをエクセルで開いた時の固定範囲(b3からe33、など)を、 元のエクセルファイル、勤務表.xlsの固定位置 (sheet1のc6からh36、など)に貼り付ける。 そんなマクロを作りたいと思っています。 エクセルのマクロに触れ始めて3時間余り、 エクセルマクロ入門系サイトや、 csv貼り付け等のキーワードで検索し 類似件より引用しながら組んでいるのですが 知識も理解もあやふやなまま(当然かもしれませんが)なかなか作れません。 本来ならば入門書等に書かれている内容を読み、 その上で参考サイトを見て理解する程度になり、 その上で判らなければこちらで質問すべきと理解しているつもりですが、 今日中にと急かされながら3時間経っても理解が進まず半ばパニックに陥っております。 半ば丸投げな質問である事は承知しておりますが、 よろしければご教授、 ないしは私が目的とするマクロの参考になるサイトを 紹介して頂けませんでしょうか? よろしくお願いします。
回答: sub ボタン1_click() dim strfilename as string ' オープンするcsvファイルのフォルダを c:\ として ' ファイルオープンのダイアログを開く chdir ("c:\") strfilename = application.getopenfilename("csvファイル (*.csv),*.csv", 1, "ファイルを選択") if (strfilename <> "false") then ' ファイル名が存在しない場合は抜ける if (trim(dir(strfilename)) = "") then call msgbox("ファイルが見つかりません", vbokonly, "確認") else ' ' とりあえず、 ' csvの 1行目1列目(a1) から 3行目 4列目(d3)を ' このマクロがあるブックの シート名が "sheet1" の b3~e5 ' にコピーする事にする ' ' まず、コピー先である、このマクロがあるブックの シート名が ' "sheet1" の b3~e5 の範囲をクリア thisworkbook.worksheets("sheet1").range("b3:e5").clearcontents ' 該当csvファイルを新規bookとして読込んで開く ' ' 範囲 a1~d4 をコピー ' ペースト先はデータシートのb3セルから workbooks.open filename:=strfilename activesheet.range("a1:d3").copy _ destination:=thisworkbook.worksheets("sheet1").range("b3") ' コピー後、csvファイルを閉じる activeworkbook.saved = true activeworkbook.close end if end if end sub