• ベストアンサー

EXCELのVBAについて教えて下さい。

VBA初心者です。 EXCEL操作は今まで何度もやっていて大体のことは分るのですが、この度、仕事の関係でマクロ、VBAを初めて使わなくてはいけなくなりました。早速はじめからつまずいています。どうか私にご教授くださればと思います。 やりたいことというのが、 (1)毎日の仕事として、まず、サーバーにあるデータを集計しcsvファイルとして保存します。 (2)そのcsvファイル(ファイル名:今日落としたファイルなら○○050620.csv)を××.xlsというファイルのワークシートにコピーします。 (3)その集計した表をピボットテーブルでさらに分りやすく分別。 (4)そのピボットテーブルからでてきた数字を××.xlsのSheet1の表のあてはまるところに数字をコピーし貼り付けていきます。 それによってグラフができます。 この操作の流れのうち(2)(3)(4)の部分をマクロニ組んでしまいたいのです。なかなかうまくいかないので良い方法を教えてください。ちなみにcsvファイルは毎日の作業なので年月部分のファイル名が毎日の日付が入ります。

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

  • ベストアンサー
  • exepieco
  • ベストアンサー率27% (25/91)
回答No.5

#1です。 >(2)の操作、(3)の操作、(4)の操作を別々にマクロで アプローチとして正解だと思います。 (VBAといえど、条件分岐と処理を組み合わせる以上、プログラムですから、本来全くの初めてならフローチャートから行くべきですが・・・) #3さんの言われる方法でファイル名は取得できます。 該当日付のファイルが無い場合、など、エラー処理なども考えたいところですが、それはさしあたり後回しにして、これをどうやって組み込むのかがわからない場合は、変数とか代入などについての基礎知識が必要で、残念ながら近道はありません。勉強するしかないですね。 余談ですが、昔、私も似たようなきっかけでVBAを始め、ほぼ独学でいろいろ業務ツールを作り、いまはSEなどやってます。動き始めると面白いものです、がんばってください。

kirarabb
質問者

補足

皆さんからいろいろとご解答いただきありがたく思います。まだ、毎日空いた時間を見ながらやっている最中できちんとしたご解答が出来ません。できれば皆さんがお勧めいただけるような初心者向けの書籍はありませんか? とりあえず会社帰りに「ExcelVBAマクロ組み方講座」「できるExcel2000マクロ&VBA編」「はじめてのExcelVBA」という本を図書館から借りて帰りました。 これらを見て思ったのですが、できればあれらの命令文等がわかりやすく説明してくれているものがあるといいのですが・・・。いろんな関数があると思うのですが初めてだと何がなんだか・・・って感じなのです。あと、皆様がはじめてVBAをさわっていたとき、どうやって自分のものにしていったのかなど教えていただけるとうれしいです。

その他の回答 (5)

  • seiya707
  • ベストアンサー率0% (0/1)
回答No.6

INPUTBOXや#3さんの方法でも良いですがこんな方法もあります。 MyPath = "C:\My documents\testA\*.csv" ' パスを設定 MyName = Dir(MyPath) ' 最初に見つかったファイル名を返す 但しフォルダにcsvファイルが1つだけの場合が条件です。 ですから使用するcsvが入ってるフォルダと使用したcsvを保存するフォルダを分けてもらえれば良いと思います。 例文ではcsvが入ってるフォルダ(testA) 使用したcsvを保存するフォルダ(testB) マクロを走らせた後一々移動させるのも面倒くさいのでマクロの最後で (MyNameの値を保持するかもう1度ファイル名の取得をして) Dim SourceFile, DestinationFile SourceFile = "C:\My documents\testA\" & MyName ' コピー元のファイル名を指定 DestinationFile = "C:\My documents\testB\" & MyName ' コピー先のファイル名を指定。 FileCopy SourceFile, DestinationFile ' ファイルをコピーします。 Kill "C:\My documents\testA\" & MyName ’ファイルの削除 これで移動させて元ファイルのほうは削除になります。 使用したcsvを保存しなくてもよければ最後のKill~一行ですみます。 私も数年前から本無し独学ExcelのHelpのみで勉強してます。 (その頃はこんな便利なサイトは無かった) 本があるにこしたことは無いですが、 少しずつでもやればどろくさくてもまわりくどくてもそれなりに動くものが出来ます。 頑張ってください。

kirarabb
質問者

お礼

大変御礼が遅くなり申し訳ございませんでした。こちらの欄にてご回答いただきました皆様にお礼をさせていただきます。 皆様からいろいろ詳しくご説明いただきありがとうございました。このあと、皆様からのアドバイスといろんな本を見たりしてなんとかできました。お礼を早く言いたかったのですが、仕事も忙しく、しかも自宅のHDが壊れてしまい、修理に出し、なかなか休日も時間がゆっくり取れなかったりしたのでこんなに遅くなってのお返事なりました。もっと早くお礼をさせていただきたかったのですが、私事の関係で遅くなりすみませんでした。

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

>毎日変わるCSVのファイル名はどうやって対応すればよいでしょうか INPUTBOX関数を使うとよいでしょう。 ここは人間が入れます。 昨日の日付のファイルを必ず今日やるにしても、土日祝が入ったりして、初心者には無理です。 >質問には、コピーが頻出するのですが 初心者には、値だけを問題にしますが、できるだけ代入でやることをお勧めします。 >マクロの記録も始めてということらしいが VBAの本も1冊も持っていないのでは。 WEB照会になれるか、VBAの本をある程度は買って読まないと進みませんよ。VBAといえども、持続的興味を持ってやる必要のあるものです。

kirarabb
質問者

お礼

きびしいご返答ありがとうございます。本はとりあえず給料日前なので図書館で借りてきてみました。あとはwebサイトも参考にしています。あと、会社にも買い置きが2冊ぐらいありました。それで、いろいろ本をめくったりwebサイトで調べたりしながらつくっています。でもまだいまいち動かないです。。。 今は例題のとおりのマクロを作ってみてそれを動かしてみて「へえ~っ」っと感心しながら覚えようとしています。 inputbox関数を教えていただきありがとうございます。ちょっと調べてみます。

  • dokinhime
  • ベストアンサー率30% (4/13)
回答No.3

どういった回答がほしいのかいまいちよくわからないのですが、日付のついたファイル名をとるには "○○" & Format(Date, "yymmdd") でいけると思いますが。

kirarabb
質問者

お礼

ご返答、ありがとうございます。こちらのやり方でためしに作ってみたマクロが動きました。もうひとつ聞いてもよろしいですか?実は会社に行ったときによくよくファイル名を確認しましたところ、実際のファイル名は”yy年mm月第x週(yymmdd).csv”でした。もちろんyyは今年の年、mmは月、xは1週から5週までの数字が入ります。今日の日付で言うと、”05年06月第4週(050623).csv”というとても几帳面な方が落としているファイル名なのですが、第4週の4という数字の部分はどのように指定してあげればいいでしょうか?

回答No.2

#1さんのおっしゃるとおり、マクロの記録でこの件はほとんど対応できます。 VBAとマクロの違いは、条件分岐により処理が異なる場合はVBA、そうではなく一本道の処理が続く場合はマクロというように考えればいいと思います。 (2)のcsvファイルを読み込むとシート名が○○050620と名前が付きますので、同じ処理をさせるには、このシートを、マクロの組み込んである別のエクセルブックのシートにデータのみコピペして、そこでマクロを動かせばいいと思います。

kirarabb
質問者

お礼

#1のexepiecoさんにもお答えしたのですが、毎日変わるファイル名に関してはどうやって処理すればよいでしょうか?そこでつまずいているんです(;_;) 上司に突然任されて四苦八苦です・・・。 簡単にボタンひとつでぱぱぱっと処理ができるんじゃないの?って言われてます。 とりあえず、初心者なのでいっぺんにこの操作をひとつのボタンでできるようにするには大変そうなので、練習もかねて(2)の操作、(3)の操作、(4)の操作を別々にマクロで動かしてみようとやっているところです。

  • exepieco
  • ベストアンサー率27% (25/91)
回答No.1

どこが「なかなかうまくいかない」んでしょう? まずは、ツール→マクロ→新しいマクロの記録 を行なって、生成されたマクロを読んで見るところからはじめてはいかがでしょうか? 不要な部分、変数として当てはめると出来る部分などを見つけて変更、ステップ実行(F8)で確認してみると、大抵のことは出来るようになりますよ。

kirarabb
質問者

お礼

早速のご返答ありがとうございます。”新しいマクロの記録”で通常の作業を記録してみました。それはうまく動きました。私も初めてでマクロの記録で動いてくれたのはうれしかったのですが、毎日変わるCSVのファイル名はどうやって対応すればよいでしょうか?会社の上司にはできれば、誰が触っても使えるように上記で手順で最終的に作成されうグラフのあたりに、ボタンを押せば簡単に毎日グラフ更新ができないだろうか?と言われています。 私がとりあえずやってみたのはあらかじめわかっているcsvファイルでコピーしたところまで。ピボットテーブルに関してはマクロを動かしてみるとうまく表を作成できずに途中で止まってしまいました。がんばってみてはいるのですが悪戦苦闘中です・・・。