エクセルの固定範囲にCSVを貼り付けるマクロとは?

このQ&Aのポイント
  • エクセルの固定範囲にCSVを貼り付けるマクロとは、ユーザーが選択したCSVファイルを、固定された範囲に貼り付けるマクロのことです。
  • 具体的には、エクセルファイル上でボタンをクリックすると、ユーザーが選択したCSVファイルの内容がエクセルの指定範囲に貼り付けられます。
  • マクロの作成にはエクセルのVBA(Visual Basic for Applications)を使用します。VBAはエクセルのマクロを作成するためのプログラミング言語であり、独自の文法や構文を持っています。
回答を見る
  • ベストアンサー

エクセルの固定範囲にCSVを貼り付ける。

エクセルの固定範囲にCSVを貼り付ける。 作ろうとしているのは、エクセルで作られた勤務表など 貼り付けすべき範囲が固定されているエクセルシートに、 ユーザーが選択したcsvを貼り付けるマクロです。 ユーザーが開いているエクセルファイル(勤務表.xlsとします) に設置するボタンクリックイベントで、押下しますと 1.CSVファイルをユーザーが選択して開くことができ、  (選択したCSVファイルをsamp1.csvとします) 2.そのsamp1.csvをエクセルで開いた時の固定範囲(B3からE33、など)を、   元のエクセルファイル、勤務表.xlsの固定位置   (Sheet1のC6からH36、など)に貼り付ける。 そんなマクロを作りたいと思っています。 エクセルのマクロに触れ始めて3時間余り、 エクセルマクロ入門系サイトや、 CSV貼り付け等のキーワードで検索し 類似件より引用しながら組んでいるのですが 知識も理解もあやふやなまま(当然かもしれませんが)なかなか作れません。 本来ならば入門書等に書かれている内容を読み、 その上で参考サイトを見て理解する程度になり、 その上で判らなければこちらで質問すべきと理解しているつもりですが、 今日中にと急かされながら3時間経っても理解が進まず半ばパニックに陥っております。 半ば丸投げな質問である事は承知しておりますが、 よろしければご教授、 ないしは私が目的とするマクロの参考になるサイトを 紹介して頂けませんでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • nak777r
  • ベストアンサー率36% (49/136)
回答No.2

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

wendy0303
質問者

お礼

nak777rさん、具体的なサンプルをありがとうございます。 早速試してみます。 解決後、再度報告に参ります。

その他の回答 (1)

  • Hardking
  • ベストアンサー率45% (73/160)
回答No.1

「前準備」 勤務表シートにコマンドボタン(検索ボタン)を付加する。 (コントロールツールボックスより選択) 検索ボタンクリック時の処理フロー (1).samp1.csvをVBAマクロで参照する (2).参照フィールドを該当のセルにデータ転記する コーディング例 '(1).samp1.csvをVBAマクロで参照する Dim field1,field2,field3 As String*/ 'CSVファイルOPEN Open "samp1.csv" For Input As #1 Do While Not EOF(1) 'CSVファイル参照 Input #1, field1, field2, field3     '(2).参照フィールドを該当のセルにデータ転記する ActiveSheet.Cells(1, 1).Value = field1 ActiveSheet.Cells(1, 2).Value = field2 ActiveSheet.Cells(1, 3).Value = field3 Loop 'CSVファイルCLOSE Close #1

wendy0303
質問者

お礼

Hardkingさん、 すっきりとしたサンプルコードをありがとうございます。 早速試してみます。 解決、再度後報告に参ります。

wendy0303
質問者

補足

報告が遅れて済みません。 アドバイス頂けた後、程なく目的を果たすマクロを作成する事ができました。 また、エクセルVBAへの理解を深める事もできました。 本当にどうすればいいか慌てていた時でしたので本当に助かりました。 ありがとうございました。

関連するQ&A

  • Excelの範囲指定セルににcsvファイルのデータを貼り付け

    Excelファイルの任意のセルにCSVファイルのデータを貼り付けたいと思っています。 各ワークシートにCSVファイルのデータを読み込むマクロを書いて実行していたのですが、ファイルが増えてしまったのでもっと簡単に処理ができたら、と思い相談させていただきます。 Visual C# 2008の勉強を始めて間もないので初歩的な質問かと思いますが、宜しくお願い致します。 希望する処理の流れは 1.「Excelファイル選択」ボタンを押すと、指定のフォルダ内のxlsファイルをリストボックスに表示 2.Excelファイル選択 3.「CSVファイル選択」ボタンを押すと、指定のフォルダ内のcsvファイルをリストボックスに表示 4.Excelファイルに対応するCSVファイル選択 5.「データ読込」ボタンでテキストファイルのデータをExcelファイルの指定のセルに貼り付け 6.Excelファイルを保存して終了 1.と3.のリストボックスへのファイル表示はできているのですが、選択したExcelファイルにcsvファイルのデータの貼り付けの方法がわかりません… それぞれのファイルを変数に格納して、更にcsvファイルのデータを配列変数に流して、繰り返し処理で貼り付けていくのかな?と想像しているのですが… http://support.microsoft.com/kb/302096/ja 上記のページを参考にしたのですが、外部ファイルのデータを指定のセルに入力するにはどうしたらよいのかわかりませんでした。 ・Excelファイルの指定のセルはB12~H1011までの7列1000行です。 ・csvファイルは1000行に満たないこともあります。 ・入力するデータ型は整数と文字列です。 PC環境 Windows XP SP3 Excel 2007 Visual C# 2008 要領を得ない説明で申し訳ありませんが、どうぞ宜しくお願い致します。

  • EXCEL csvの取り込み

    おそらく基本的なことなのかもしれませんが、うまく検索できなかったので質問させてください。 いまやりたいことは、 1:自分で表のテンプレートファイルを作って、 2:そのテンプレートのデータを表示したい領域にCSVファイルからデータを取り込む なのですが、今のところこのような形で行っています。 (テンプレートとなる表の枠組みは作成済み) 1:CSVファイルをexcelで開く. 2:範囲を選択してコピー 3:テンプレート中のデータを表示したい領域の一番左上のセルに「形式を選択して貼り付け(値)」 この方法で一応できるのですが、何分面倒です。 それで 「データ > 外部データの取り込み > データの取り込み」 で行うと, 先ほどよりは楽にcsvファイルからデータを 貼り付けられるのですが,今度はセルの幅が変わってしまいます(空間が切り詰められる) こういった場合はどのように操作すればよいのでしょうか。 アドバイスをお願いします。

  • csv形式のテキストファイルをexcelでCSV化するマクロについて

    今、ひとつのフォルダに大量にCSV形式で保存されているテキストファイルを excelのマクロを使って、ひとつのexcelにCSV形式(.xls)で保存するものを作成している のですが、今までマクロを使ったことがないため、まったく歯が立ちません。 もう少し詳しく書くと、テキストファイルの中身は、 01,54521,18:01:02,110230 というようになってます。 これを、excelのマクロを使い、カンマ区切りで取り込むような感じです。 すみませんが、回答お願いいたします。

  • csvをExcelに変換したい

    CSVファイルをEXCELで開いたとき、表の列毎に意味をもった表示がされているのですが、 それを拡張子を単にcsvをxlsに書き直したものを開くとデータが”、”で区切られただけでいわゆる1列の形にごちゃごちゃデータが詰まった形の表示になってしまう。最初に開いた形でそのままxlsの形にしたいのですがどうすれば、 なおExcel2000を使用しています。

  • excelのマクロでファイル一覧取得,グラフ作成

    以下のような作業をするために,EXCELのマクロを組もうと考えています. 指定したフォルダ以下のCSVファイルを取得(サブフォルダも含む)  ↓ 見つけたCSVファイルをエクセルで開き,値が含まれている範囲を選択してグラフを作成  ↓ "*.xls"として保存 エクセルのマクロは初めてなので,どうコーディングすればいいか全くわからず困っています. どなたかご教示くだされば幸いです. よろしくお願いいたします.

  • エクセルファイルをCSVファイルに変換する方法

    初歩的な質問ですいません。 時間のある方教えてください。 今、エクセルで保存しているものをCSVファイルへ変換するマクロを教えていただきたいのですが、 たとえばマクロを実行すると waka.xlsというファイルが、 waka.csv になるというだけなのですが、よく分からないので よろしくお願いします。

  • CSVを新しいExcelで開く方法

    CSVを新しいExcelで開く方法 Office 2003 を使っています。 概にExcel が起動している状態で(こちらのウィンドウを1とします)、 関連付けされたCSVファイルを開くと1に展開されます。 xlsファイルだと、右クリック→開くとしてやることで、 新しくエクセルが立ち上がり、そこに展開されます。 csvファイルを、xlsファイルと同じように しても既存のエクセル上に展開されてしまいます。 どうすれば良いでしょうか?

  • csvファイルをxlsファイルへ取り込み

    xlsファイルにシート「Sheet1」だけあったとします。 そこからマクロで、 「csvファイルの選択」   ↓ 「csvファイルを選択してそれをシートの末尾へ挿入していく」 ようなマクロができないか考えています。 すいませんが教えていただけないでしょうか?

  • ワード上でエクセルの表を固定する方法

    エクセルで作った表をワードに貼り付け加工できるようにしようと思い、 エクセルの表を必要範囲だけコピーして、 ワードで「形式を選択して貼り付け」→「エクセルワークシートオブジェクト」で貼り付けをしました。 が、ワード上でエクセルの加工を行なうと表示された表がずれてしまうことがあります。 必要なのはエクセル上の「A1からD6」だとしますと、 ワード上で加工しているときに表示範囲が「A3からD9」までずれたりすることがあるのですが、 エクセルの加工を終了しワードの編集に戻すと表示されている表が「A3からD6」の表になってしまいます。 必要な範囲だけで固定することは出来ないでしょうか?

  • 「dbf」「csv」などをマクロで「xls」に一括変換する方法

     お世話になっております。 タイトルの通りの質問なのですが、拡張子「dbf」「csv」などのエクセルで開けるファイルをマクロで「xls」に一括変換する方法が分からなかったので質問させていただきました。 まずやり方としてなのですが、 1:「dbf」もしくは「csv」ファイルをフォルダから選び開く。 2:何も変更せずにファイル→名前を付けて保存ボタン 3:ファイル名を変更せずに保存拡張子を「Microsoft Office Excel ブック(*.xls)」に変更し保存。 4:Excelブックを変更や保存せずに閉じる。 これだけの事なのですが、流石に200個ほどあるのでマクロで出来ないものかと思いまして質問させていただきました。 ・マクロを実行するとフォルダ選択にいき、新しく「xls」に変更したいファイルを選択し、実行すると「xls」が出来ている。と言うのが理想なのですが、そのような事は可能なのでしょうか? ・1つのフォルダに様々な箇所から集めた「dbf」や「csv」をまとめてありますので、どのファイルを選択するかの時に複数個選択出来ると非常に助かります。 ・「dbf」と「csv」両方対応していなくてもどちらかだけでも、構いません。 よろしくお願いします。

専門家に質問してみよう