お世話になります。
以下の条件で動作するマクロを必要としています。
詳しい方、ご教授のほどよろしくお願いします。
細かな条件もあり恐縮です。一部無理でも結構です。
1.複数のcsvファイルのデータを1つのエクセルファイルにコピー統合したい。
2.ファイル名は「帳票00」~「帳票10」となっており、番号順に開いてコピーする。
3.ファイルは一部「帳票5(1)」「帳票5(2)」と分かれている。
4.ファイルは一部「帳票7」の次が「帳票9」(8は欠番)などととなっている。
5.コピーは行列を入れ替えてコピーする。
6.2つ目以降のファイルをコピーする位置は、前ファイルの次の行からとする。
 (帳票00が10行まで入っていたら、帳票01は11行A列から入るようにする。)
7.2つ目の「帳票01」以降はA列B列はコピー不要とする。
 (A列B列は見出しとなっていて、はじめに1回コピーされればよい。)

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>ファイル名の番号の若い順から開くにはどうすればよいでしょうか。



3&4の回答で書いたDirのあとソートすればできます。
以下はサンプルです。

-----------------------------------------------
Sub ファイルリスト作成()

'初期設定
Dim Line As Long
Dim Filename As String
Dim Filenames As String
Sheet1.Cells.ClearContents
'リスト作成
Line = 1
Filename = Dir(ThisWorkbook.Path & "\*.*")
Do While Filename <> ""
Filenames = StrConv(Filename, vbLowerCase)
If Not (Filenames Like "*.xls" Or Filenames Like "*.bat" ) _
Then
Line = Line + 1
Cells(Line, 1) = Filename
End If
Filename = Dir()
Loop

If Line = 1 Then
MsgBox "対象となるファイルがありません"
Exit Sub
End If

'ソート
[A1].Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin

End Sub
    • good
    • 0
この回答へのお礼

詳しいご回答ありがとうございました。
参考になりました!

お礼日時:2009/05/20 00:33

サンプルの前提条件を書き忘れました。



このサンプルのあるエクセルブックが、対象となるcsvファイルと同じフォルダにあることを想定しています。
    • good
    • 0

こんばんは



とりあえずすぐに回答できるところから。

1&2
csvを順次「Worksheets.Open」で開きコピー&ペーストします。

3&4
「元データのcsvファイルがすべて同じフォルダにある」&「そのフォルダには余計なcsvファイルは置かれていない」という条件なら、Dir関数を使って対象ファイルのリストを作ることができます。


PasteSpecial メソッドの「Transpose」のオプションで設定できます。
マクロの記録で、形式を指定して貼り付け(行列を入れ替えるにチェック)で試してみてください。

6&7
Ifで分岐できます。

質問にはありませんが元データのcsvファイルの最終行を取得するには
Cells(Rows.Count, "A").End(xlUp).Row
が使えます。(バージョン2000~2007に対応、エクセルの最終行までデータが入っていないことが条件)

以上、参考になれば。
追加で回答できる部分があれば、改めて回答します。
また、詳細が分からない場合には、「補足」に書き込みしてください。

この回答への補足

早速のご回答ありがとうございます。
補足ですが、ファイルは実際は100個ほど同じフォルダ内にあります。
他に余計なファイルはありません。
ファイル名の番号の若い順から開くにはどうすればよいでしょうか。

補足日時:2009/05/16 23:56
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBA(マクロ)を勉強したい

VBAを勉強したいのですが、オススメの本等教えて下さい。
今FOM出版のマクロ入門を買って勉強しています。大体の基本操作は分かった気がします。

Aベストアンサー

こんにちは。

ここら辺が参考になると思います。

日本VBA協会の参考書籍
の準拠本
http://www.vbaa.jp/training/books.htm

アマゾンのExcelVBA
http://www.amazon.co.jp/exec/obidos/ASIN/4774119660/vbaajpn-22/249-7235447-7367506

Qアクセス A列コピー B列貼り付け 更新クエリ?

お世話になります
アクセスで、たぶん更新クエリだと思うのですが

A列をコピーしB列に貼り付けさせたいのですが
初歩的な質問で申し訳ありません
わかる方お願いします

Aベストアンサー

えーと、細かい状況は分からないのですが、下記操作で解決できますか?
1.元の文字列データが入ってるテーブルを表示させる。
2.テーブルのウィンドウのタイトルのところで右クリック。
3.「テーブル デザイン」を選択。
4.「フィールド名」が空白になっている所に適当なフィールド名を入力
5.その右隣のデータ型の欄のドロップダウンメニューから「日付/時刻型」を選択。
6.もう一度タイトルのところで右クリック。
7.「データシートビュー」を選択。
8.元のデータのフィールド名のところで右クリック。
9.「コピー」をして、4.で作ったフィールド名で右クリック。
10.「貼り付け」を選択。
11.貼り付けていいかどうかのポップアップウィンドウが出てくるので、「はい」を選択。

以上でどうでしょう?
他からインポートしてきたデータを使ったことがないので、自信はないですが、通常ならこれでいけるかと思います。
また、補足が必要なら明日以降になってしまいますが補足いたします。

QマクロとVBAの違いは?

最近officeのVBAを勉強してるのですが「マクロ」と「VBA」って何が違うのでしょうか?

アクセスはマクロとVBA(VBE)が別れてるけど、
エクセルは「マクロの記録」でVBAコードが取得できますよね。

マクロとVBAは同じ意味なのか、違う意味なのか教えていただけますか?

Aベストアンサー

こんにちは。

#2さんの引用先と同じ内容ですが、日本語として出ていたはずです。

マクロとVBAを、一応、定義として把握していないと、きちんと人には教えられないと思いますね。アクセスには、一般的に、VBA側で作られたものは、マクロとは呼べません。

理由は、「マクロ」というのは、その取り扱い言語は別として、ひとつの作業(タスク)の自動実行を目的とする機能のことです。逆にいうと、ひとつの作業を実行できないものは、マクロとは呼びません。例えば、引数を必要とするユーザー定義関数は、マクロの範疇から外れます。

マイクロソフトでは、こう定義しています。

以下は、内容的に、あくまでも、VBAの範疇に対して書かれています。

マクロは、より意味の限定された用語で、引数を持たないパブリックなSub プロシージャのことだけを指します。すべてのマクロはプロシージャですが、すべてのプロシージャがマクロであるとは限りません。マクロの記録機能を使って生成されるプロシージャとOffice アプリケーションの[マクロ]ダイアログボックスから実行できるプロシージャは、すべてマクロです。

それに反して、VBAというのは、アプリケーション用のVisual Basic プログラミング言語です。

「VBA」で書かれたものを総称して、プロシージャと呼び、マクロとは厳密には意味が異なります。また、Ver.4 の「マクロ関数」で書かれたものも、プロシージャで自動実行で作業をするものも、総称してマクロと呼びます。また、ひとつのブックにあるモジュール(=プロシージャを呼び出すためのオブジェクト)群をプロジェクトと呼び、「モジュール」を組み合わせ一貫した仕事をするようにしたものを「システム」と呼んだりします。

これで、違いが分かっていただけたかと思います。

こんにちは。

#2さんの引用先と同じ内容ですが、日本語として出ていたはずです。

マクロとVBAを、一応、定義として把握していないと、きちんと人には教えられないと思いますね。アクセスには、一般的に、VBA側で作られたものは、マクロとは呼べません。

理由は、「マクロ」というのは、その取り扱い言語は別として、ひとつの作業(タスク)の自動実行を目的とする機能のことです。逆にいうと、ひとつの作業を実行できないものは、マクロとは呼びません。例えば、引数を必要とするユーザー定義関数は、マクロの...続きを読む

Qアクセスで表示書式「00-00-00」

アクセスの2000を使っています。

フォームのテキストボックスで表示形式を「00-00-00」にしたいのですが、「\」を入力しても、決定すると消えてしまってハイフンが表示されません。
何がいけないのでしょうか?

よろしくお願い致します。

Aベストアンサー

@@-@@-@@
文字列なんじゃないでしょうか

QVBAとマクロ

お世話になります。田吾作7です。

ふと思ったのですが。。。

VBAとマクロの違いって何でしょう?
「マクロの記録」ボタンを押したのがマクロですか?
VBAは、MS-Officeのモジュールにユーザ自身が書き込んだら、それはVBAですか?
もしそうなら、[マクロの記録]ボタンはなぜ[VisualBasicツールバー]にボタンがあるのでしょうか。マクロを編集しやすくするためでしょうか?

記録で
Range("A1").select
それを編集で
Range("A2").select
としたらVBA?

さらに最初っから
Range("A2").select
と記録したマクロは、やっぱりマクロ?


VBAとマクロって違いあるのでしょうか?
いつも疑問に感じて、モヤモヤしてます。
だれか、このモヤモヤ感を解消してください。

よろしくお願いします。


余談ですが・・・
VBAは[VB for Application]ですよね?
Office関連のためのVBってことですよね。
でもAPIを使ってWINDOWSを制御することもできるから[for App]の意味が無いような気がする今日この頃・・・

お世話になります。田吾作7です。

ふと思ったのですが。。。

VBAとマクロの違いって何でしょう?
「マクロの記録」ボタンを押したのがマクロですか?
VBAは、MS-Officeのモジュールにユーザ自身が書き込んだら、それはVBAですか?
もしそうなら、[マクロの記録]ボタンはなぜ[VisualBasicツールバー]にボタンがあるのでしょうか。マクロを編集しやすくするためでしょうか?

記録で
Range("A1").select
それを編集で
Range("A2").select
としたらVBA?

さらに最初っから
...続きを読む

Aベストアンサー

マクロという言語があるわけではないので
決まった処理を登録しておいて後で実行できる機能を
マクロと呼んでいるんじゃないですか?

そのマクロの情報をスクリプトとして保存しておきますので
そのスクリプトがVBAという事だと思いますが。

Q(アクセス)「1:00:00」を「60」もしくは「1:00」と表示させたい

アクセスのクエリなのですが
デザインビューでフィールドに
「時間: CDate(0.041672)」と入力して
データシートビューで見ると
「1:00:00」(1時間)と表示されます。
これを
「60」もしくは「1:00」と表示するにはどうすればいいでしょう?

Aベストアンサー

フィールドプロパティの「書式」に
「h:nn」 でいかが?

QVBAとマクロの違い

こんばんは。エクセル初心者です。
VBAとマクロの違いについて教えてください。
VBAというのは、プログラミング言語のことで
よろしいのでしょうか?
そのVBAで記述されたものをマクロとよぶ
といったイメージでよろしいのでしょうか?

たとえば、あるエクセルにはいってるマクロを
実行する、ということを作業マニュアルに記述
する場合
「○○マクロを実行する」というのが
正しいのでしょうか?それとも
「VBAを実行する」というのが正しいのでしょうか?

まったく見当違いのご質問だったら申し訳ありません。
教えてください。

Aベストアンサー

「○○マクロを実行する」というほうが正しいです。

VBAは言語のことです。
マクロとは特定の操作手順をプログラムとして記述して自動化することです。

今回の場合、特定の処理なので「マクロ」という表現を使いましょう。

Qアクセス Aというファイルの内容の一部をBのそれに直す

こんにちは。アクセスを使ってデータを修正したいのですが、やり方が複雑で検討がつきません。
二つのファイルに、今の時点では何も主キーとなるものが
ない状態なので、何をキーにすればいいのか分かりません。どうぞご教授よろしくお願いします!
以下はファイルの説明です。(長文すみません)

【ファイルA:間違いファイル】        
・レコードそれぞれにアパ名NOがついている
(アパートに複数在住の場合あるので,
 同じNOで部屋NOが違うものアリ)
NO 住所1 住所2 アパ名1  アパ名2 アパ名3     3- A町- 102- ○アパート- 1号室-(空白)
1- K町- 55- ×アパート- 2棟-6号室 
9- M区- 11- アパート- 2号室-(空白) 


【ファイルB:合っているファイル】
住所1 住所2 アパ名 部屋NO
M区- 11- ○アパート- 2号室 
A町- 102- ○アパート- 1号室
K町- 55- ×アパート2棟- 6号室 
      ※直したい箇所
この例で言うと、K町55の物件は、Aでは「×アパート」「2棟」になっているが、Bでの「×アパート2棟」という形式にしたい。

レコード総数は15000件くらいです。
よろしくお願い致します。

こんにちは。アクセスを使ってデータを修正したいのですが、やり方が複雑で検討がつきません。
二つのファイルに、今の時点では何も主キーとなるものが
ない状態なので、何をキーにすればいいのか分かりません。どうぞご教授よろしくお願いします!
以下はファイルの説明です。(長文すみません)

【ファイルA:間違いファイル】        
・レコードそれぞれにアパ名NOがついている
(アパートに複数在住の場合あるので,
 同じNOで部屋NOが違うものアリ)
NO 住所1 住所2 アパ名1  アパ名2...続きを読む

Aベストアンサー

クエリの新規作成でデザインビューで作りSQLビューを開き下記のSQLをコピーしてください。

UPDATE ファイルA INNER JOIN ファイルB ON (ファイルA.住所1 = ファイルB.住所1) AND (ファイルA.住所2 = ファイルB.住所2) SET ファイルA.アパ名1 = ファイルB!アパ名;

このクエリでファイルAとファイルBを住所1同士・住所2同士を結合してファイルAのアパ名1にファイルBのアパ名を更新させます。
ファイルAのアパ名のフィールドのみ更新をかけられます。更新は更新したいフィールドのみ指定すれば良いのでアパ名1のみであれば上記でOKです。
更新のフィールドの追加も出来ます。デザインビューで開けば簡単にフィールドの追加等できると思います。

参考にしていただければ。

QVBAとマクロの違い

VBA初心者です。
会社の人からVBAとマクロの違いについて質問され、ちゃんと説明できませんでした。
なにがちがうんでしょうか?
私は「VBAのプログラミング=マクロを組む」と思ってました。
よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。

Excel(2000)については、No.1の方の説明通り、
「マクロ = VBAというプログラミング言語で記述された一塊の動作」
です。
したがって、miyacさんの、
「VBAのプログラミング=マクロを組む」
で、おおよそあっています。
また、自分で書いたコードをマクロとして登録することも出来ます。
しかし、Access(2000)での"マクロ"は少しニュアンスが異なります。
Accessの場合は、マクロはいくつかの動作・操作は順に登録しておき、それを自動実行させる、という使い方です。自分で書いたコードをマクロとして登録するというやり方ではありません。(本当はそういうやり方も出来ますが。)
したがって、VBAとマクロは何となく別物のような印象を受けます。
それにAccessでは、「マクロを組む」という表現は通常使いません。
ただし、マクロをVBAに変換することが出来ますし、マクロに登録する各動作・操作も、VBAで自分で書くことが出来ます。
ですから、結局同じことなんですけどね。
まとめると、「マクロは自動実行処理を登録すること」で、「VBAはそのアプリケーションのあらゆる操作を記述すること」ですかね。
では。

こんにちは。maruru01です。

Excel(2000)については、No.1の方の説明通り、
「マクロ = VBAというプログラミング言語で記述された一塊の動作」
です。
したがって、miyacさんの、
「VBAのプログラミング=マクロを組む」
で、おおよそあっています。
また、自分で書いたコードをマクロとして登録することも出来ます。
しかし、Access(2000)での"マクロ"は少しニュアンスが異なります。
Accessの場合は、マクロはいくつかの動作・操作は順に登録しておき、それを自動実行させる、という使い方です。...続きを読む

QAccess 初心者 テーブルの住所録→レポート帳票形式→A4用紙に6件レコード表示(3行2列)

初心者です。
Access2003でテーブルで住所録を作成しています。
目的は、その住所録で作成したデータを印刷し、封筒に貼るという作業をしたいのです。
今レポートの帳票形式で作成し、デザインビューの詳細で作成すると、A4に縦に3件の住所が表示されました。しかし、A4用紙右半分が空いている状態です。無駄なのでその部分にも印刷し、合計6件の住所をA4で印刷したいと思っています。

試した事:デザインビューの詳細に直接6件表示するように作成しましたが、同じ住所がA4用紙に印刷されます。
帳票形式がだめでしょうか?
何かアドバスでもなんでもよろしくお願いします。

VBAでプログラムした事ないのですが、単純な方法はないでしょうか?
本当によろしくお願いします。
今日中にこの作業を終わらせたいと思っています。

Aベストアンサー

作業は出来ましたか、既に回答済みですが、私のPC(Access2002)で確認しました。
オブジェクト レポートで新規作成をクリック
宛名ラベルウィザード をクリック、使用する住所のテーブル(クエリ)を選択
取り合えず 2列のものを選択してもOKですし、ユーザー定義でも大丈夫かと
次へで一枚のラベルに印刷したいフィールドを配置していけば大丈夫です。
印刷プレビューみながら、印刷位置の調整もできますよ。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング