エクセルのマクロで編集を自動化する方法

このQ&Aのポイント
  • エクセルのマクロを使えば、編集作業を自動化することができます。
  • マクロを記憶しておき、特定の操作を自動化することができます。
  • 自動化するためには、特定の操作のみを記憶する必要があります。
回答を見る
  • ベストアンサー

エクセルのマクロの操作を記録するについて教えて下さい。

エクセルのマクロの操作を記録するについて教えて下さい。 マクロ・VBAを勉強しはじめた超初心者です。 毎日、CSVの新しいデータを取得します。 その中で、列の並び変えや文字の太さ、ここは¥マークをつけたい など編集したい事があるのですが、 それを毎日していると時間がかかってしまうので自動化したいので マクロというものを知りました。 実際に、新しいCSVファイルを開いて、 マクロの記憶→上記の編集操作→マクロ記憶終了→保存 とすると、行った動作ではなく、 今現に表示されているCSVの文字データも記憶されてしまいますよね?? 行った動作(列の並び変えや書式変更、関数入力)という行動”だけ”を 自動化するにはどうしたら良いのでしょうか? 毎日取得するCSVデータは 列の項目は一緒ですが、その中で数字や住所が違うデータです。 分かりにくい文章で申し訳ありませんが よろしくお願い致します。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>毎日、CSVの新しいデータを取得します。 >その中で、列の並び変えや文字の太さ、ここは¥マークをつけたい >など編集したい事がある たとえば。 1.CSVを開きます。 2.マクロの記録を開始します。マクロの保存先は個人用マクロブックに。 3.列を並べ替えます。 4.文字の太さを変えます。 5.ここで記録終了します。 6.¥マークを追記します。 7.保存します。 そして 8.次のCSVを開き,記録したマクロを実行し,出来映えを確認します。 9.¥マークを追記します。 10.保存します。 と,こんな具合に「並べ替える」「特定の行や列に書式を施す」などの「操作」だけ抜き出して記録してみるのが,最初はよいかもしれません。 そう割り切ってみると,作業の手順を変えて 1.CSVを開きます。 2.¥マークを追記します。 3.マクロの記録を開始します。マクロの保存先は個人用マクロブックに。 4.列を並べ替えます。 5.文字の太さを変えます。 6.保存します。 7.ここで記録終了します。 のようでも良いかもしれませんね。 続きは次のステップ(ステージ)になります。 >今現に表示されているCSVの文字データも記憶されてしまいますよね?? 「入力」を行ったらそうなります。「¥を追記」については記録されたマクロを若干編集するなど,次第にいわゆる「手書き作成マクロ」の領分へと近づいていきます。 同様に関数を打ち込むのも入力なので,少し色々工夫しないと上手くありません。 「入力」のマクロは,ご質問にあるように「入力する内容」が都度違うことも勿論ありますが,それ以上に「一体どのセルにそれをするのか」を毎回間違えず正しい場所にやらせる(=プログラムする)所にも細工や工夫が必要です。 作成例: 行数不定のデータシートのF列の最下行のセルの一つ下の空きセルに,F2から一つ上までのSUMの式を入れたい。 10行までデータがあったら F11に =SUM(F2:F11) 15行までデータがあったら F16に =SUM(F2:F15) のように,(1)式を入れるセルと,(2)具体的な式の内容が,毎回変化する。 手順: とりあえずいま15行までデータが入っている。 1.名前ボックスにF65536を入れてEnterし,F65536セルにジャンプする 2.相対参照記録ボタンを入れる(2003までのExcelは記録終了ツールバー,2007は開発タブ) 3.Ctrl+↑ 4.↓ 5.=SUM($F$2:$F15) と式を入れる 6.相対参照記録ボタンを解除し,記録終了する 記録されたマクロ(例) Sub Macro1() ' ' Macro1 Macro ' '  Application.Goto Reference:="R65536C6"  Selection.End(xlUp).Select  ActiveCell.Offset(1, 0).Range("A1").Select  ActiveCell.FormulaR1C1 = "=SUM(R2C6:R[-1]C6)"  ActiveCell.Offset(1, 0).Range("A1").Select End Sub 改めて,今度はF10までしかデータの入っていないシートで,今のマクロを実行して首尾を見てみる。

sanisann
質問者

お礼

ご回答ありがとうございました。 その方法で、試してみます! 皆様、文章力のない私の質問にもかかわらず 要点をついたご回答感謝致します。 手順を詳しく書いて頂いたので、 とても理解しやすくこちらの方をベストアンサーに選ばせて頂きました。 皆様ありがとうございました!!

その他の回答 (2)

回答No.3

ピンポイントで >今現に表示されているCSVの文字データも記憶されてしまいますよね?? 記録させるような操作をしていると思われます。 100 とセルに入力されていたらダブルクリックなどセルの編集状態にして 頭に¥マークをつけているのでは? 対象のセル範囲を選択してセルの書式を設定します (通貨スタイルのボタンを押す操作)

sanisann
質問者

お礼

はい、そうしていました… やってみます! ありがとうございました!

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

>実際に、新しいCSVファイルを開いて、 >マクロの記憶→上記の編集操作→マクロ記憶終了→保存 新しいブックを開いてマクロの記録、 そこからCSVファイルを選んで・・・・、とするのは やってみましたか?。 >今現に表示されているCSVの文字データも記憶されてしまいますよね?? というのは データが表示されているシートとこのマクロが同じブック?になってしまうと いうことですか??。

sanisann
質問者

お礼

ご回答ありがとうございます。 新しいブックを開いてマクロの記録 というのは、白紙の状態で編集し、記憶していくということですか??

sanisann
質問者

補足

おっしゃっている意味が理解できました!! ありがとうございました!!

関連するQ&A

  • Excelのマクロで作りたい

    こんにちは。 あるデータベースを使うシステムでエクセルにデータをエクスポートしたら数値を入れている列が文字列として認識してしまいます。 本来文字列が入るところに数値を入れているだけなのですが、エクスポートした時も数値しか入っていないのですが文字列として入っています。 エクセル上では数値しか見えませんノートパッドにペーストすると数値の後ろに「”」があります。しかも改行されていて2行ある状態になっています。 なのでセルの内容を編集(F2)で開いてバックスペース2回押し、Enterで初めて数値として認識されます。 この行為をマクロ化するにはどうすればいいのでしょうか? マイクの記憶で同じ動作をしてもそのセルの場所と中にある数値も一緒に記憶されるのでどこでやっても記憶した数値を貼り付けする事になってしまいます。 これをどの箇所でもマクロを押せばそのセルをF2してバックスペースを2回する様に設定することは可能でしょうか? 判りずらい説明ですがもし判る方が居たらご教授下さい。 宜しくお願いします。

  • Excelでマクロを組んで、データを繰り返し抜き出したいのですが

    Excelでマクロを組んで「データ取得→データ並び替え→データ取得・・」と繰り返す作業を自動的に行いたいと思っています。 元データ       一回目     二回目    │A│        │A│      │A│    │列│       │列│     │列│   ─┼─┼─  ──┼─┼  ──┼─┼ 1行 │k │    3行│m│   2行│d │ ──┼─┼─  ──┼─┼  ──┼─┼ 2行 │d │    5行│z │   4行│r │ ──┼─┼─  ──┼─┼  ──┼─┼ 3行 │m │    8行│e │   6行│p │ ──┼─┼─  ──┼─┼  ──┼─┼ 4行 │r │    9行│f │   7行│s │ 例えば、上記の元データのようにデータ(小文字アルファベット)を入力し、その後一回目、二回目・・・とデータの並べ替えを繰り返し、その都度上から二段目のデータのセルのデータ(この場合それぞれz、r)を取得して変数xに収めるという作業を繰り返し自動的に行うようにしたいのですが、「x=Cells(2,1)」とマクロを書くと非表示になっているセルA2のデータ(この場合d)を常に取得してしまいうまくいきません。 これはどのような方法で解決できるのでしょうか。 OSはWindows2000、ExcelはExcel2000を使っています。 よろしくお願いします。

  • データの置換 エクセルの操作とVBAマクロ…???

    A列に 17:00 と表示されているセルを 16:45 に 置換したいです。 普通にエクセルの操作(編集からダイアログボックスを表示して)行うと普通に実行されるのですが、その操作を記録したマクロを実行しても何も起こらないのです。(エラーも出ません) VBAには↓のとおり記録されました。 Columns("A:A").Select Selection.Replace What:="17:00", Replacement:="16:45", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False 実は、17:00 と表示されているセルに入力されているデータは、17:00:00 であり、ユーザー定義の書式設定で h:mm の形式で表示されています。 元データの書式設定を 17:00:00 (時刻)に変えてもやはり同様で、エクセル操作ではうまくいきますがマクロだと何も起こりません。 試しに元データの書式設定を標準(シリアル値)に変えてやってみるとマクロでも置換されましたが、実際の業務では大変不便そうです。 マクロを実行する時にはユーザー定義や時刻の書式は認識されないのでしょうか? それとも書式に原因を求めるのが間違ってるのでしょうか?

  • エクセルマクロ(VBA):並び替え

    エクセルマクロの並び替えをしたいのですが、その際、並び替えのキーになる列を指定しなければなりません。 となると、毎回基準が変動している場合は思い通りにいかなくなります。たとえば、1月はG列までのデータ、でも2月はH列までのデータで、毎回一番右のデータを基準にして降順にする場合など。 この例の操作をしようとして止まってしまいました。 だれかこのマクロをご存知の方はいらっしゃいませんか。いろいろ試行錯誤してはみたものの、やはり出来そうにありません。 どうかご教授願います。 よろしくお願いします。

  • 【VBA・マクロ】csvファイルの操作方法

    実験データ(csvファイル)をマクロを使用して編集・操作したいのですが、 データ量が多すぎ(65536行を超えている)て 「すべて読み込めませんでした」と出てしまいます。 そのためデータを一度ワードパッドで開き、必要なデータのみを抽出して 順番にエクセルシート(sheet1)に貼り付けたいと思っています。 多少はマクロを勉強して簡単な操作はできるのですが、 ワードパッドへの操作方法がわかりません。 よろしくお願いいたします。 使用エクセルバージョン:エクセル2000      1列目 2列目 3列目 4列目 1行目  A   C   良品   E 2行目  B   D  不良品   F ※良品となっている行のみのデータをエクセルへ貼り付けたいです。

  • エクセルマクロについて

    いつもお世話になっております。 エクセルのマクロについて質問させていただきます。 仕事上測定した10回データを、エクセルで計算させ平均やσ出すという処理を毎回しているのですが、測定したデータというのが、csvファイルで10個できあがり、それを一つずつ開いては貼っての繰り返しをしています。 この作業をマクロで自動的に出来ないものかと思い質問させていただきました。 装置によって毎回.csvの前のファイル名が変る恐れがあるので、csvファイルの入っているフォルダ(ディレクトリを指定)を指定し、その中にあるcsvファイルを自動的に貼る事が出来る事が理想です。 VBAではこのような処理のサンプルプログラムがあるのですが、VBAはあまり解らないので出来ればマクロの記録からできればと思います。 宜しくお願い致します。

  • エクセルのマクロでの検索

    「編集→「検索」でやるようなことをマクロでやりたいのです。 例えば列Aのデータを検索してそのデータがある行を表示させたいのですが ・同じブック内のシートの同じ列を検索する。 ・検索する文字列を含んでいる候補をマクロボタンを押すごとに表示させていく ということはできるでしょうか。

  • エクセルでマクロの記録が出来ません。

    エクセルでマクロの記録が出来ません。 エクセルのA列とB列に1,000行のデータがあります。 マクロの記録を起動します。 1.B1セルを選択 2.右クリックで挿入を選択 3.A列とC列にデータが有り、B列は空白となる。 4.B1セルを選択します。右クリックの貼り付けを選択。   マクロの起動前にクリップボードにあらかじめコピーしておいた   以下の式を貼り付けます。      =IF(A1="","",IF(ISERROR(FIND("-",ASC(A1))),IF(LEFT(ASC(A1),1)<>"9",MID(A1,1,3) &"-"&MID(A1,4,5)&"-"&MID(A1,9,2)&"-"&MID(A1,11,2)&"-"&MID(A1,13,2),IF(LEFT(ASC(A1),2)= "9X",MID(A1,1,3)&"-"&MID(A1,4,11),IF(LEFT(ASC(A1),1)="9",MID(A1,1,5)&"-"&MID(A1,6,5)& "-"&MID(A1,11,2)&"-"&MID(A1,13,2),""))),IF(FIND("-",ASC(A1))=6,A1,MID(A1,1,3)&"-"& MID(A1,4,11)))) 5.「Ctrl」+「C」 6.エクセルの左上の名前ボックスを   B1 → B1:B1000に変更。B列が選択されます。 7.「Ctrl」+「V」 8.B列に式で変換されたデータが入りました。B列が選択されたままです。 9.「Ctrl」+「C」 10.右クリックで形式を選択して貼り付けで「値」を選んでOKをおす。    セルに入っていた式は全て消えました。B列が選択されたままです。 11.マウスポインタをセルのA1におく。B列の選択が解除されました。 マクロの記録を終了 これでNO.4の操作の時に「記録できません」と表示されます。 データを一旦削除し、再度、A列とB列にデータを入れて マクロを実行してもデータB列がC列に移動しB列は空白です。 実際にマクロの記録中でもNO.1からNO.11の操作は出来ています。 なぜ記録されないのでしょうか? どうすれば記録できますか? よろしくお願いします。

  • EXCELのマクロで困ってます。

    EXCELのマクロで困ってます。 今EXCELでデータを処理しているのですが、 データが膨大にあり、処理するのにすごく時間がかかっています。 そこでマクロで何とかできないかと思っています。 EXCELに詳しい方のマクロ作成方法について教えてください。 質問内容は 画像の まずはB列の:の後ろにC列、D列、E列の文字を挿入し、それを次の列、次の列と進めていきたいのですが 可能でしょうか? それに開始ボタンと終了ボタンを作って 3人で作業したいと思っています。(後の二人はあまりマクロを知らないので簡単に動作させたい) コピペでは間に合わなく、ホントに困ってます。 よろしくお願いいたします。

  • Excel(csv)の自動編集

    Excelまたはcsvの自動編集について教えてください。 仕事で、システムで作成した見積をcsvで出力し編集する業務があるのですが、 出力後いつも同じ要領で手動で編集を行っております。 これを自動でできるようにならないかと思っております。 csvのままでは厳しいようでしたら、Excelで一度保存しなおし、 自動編集が実現できるようにする形でもいいかなと思っております。 こちらの実現方法を教えていただけないでしょうか。 具体的な内容といたしましては、 10行×10列くらいのデータの中で、 ・B列とD列、G列を削除 ・H列とI列の間に空白列を追加 ・すべてのフォントサイズを9ptに ・できたデータを表にするため、枠線を追加 ・F列は金額が入力されるため、桁区切りの「,」を書式に設定 上記の中で自動で実現できる内容を、ワンクリックで実行するためには、 どういう作業が必要でしょうか。。 そもそも自動でできるんでしょうか。。。

専門家に質問してみよう