excelでマクロボタンを付けたファイルAがあります。そのマクロ動作はボタンを押すとダイアログを開き、ファイルを指定すると指定したファイルを開きコピー&Aのワークシートに貼り付け、それを元に計算の後結果を、A上の別のワークシートにコピー。先ほど指定されたファイルを閉じるという物。指定するファイルはCSVでファイルネームはバラバラ。数は特定のフォルダの中に約2000個。これを一度のボタン操作で完了させたい。できれば処理の終わったCSVファイルも削除したい。そんなマクロ。そのものズバリ希望です。お願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/01/17 09:35:07
  • 終了:--

回答(1件)

id:kamicha1 No.1

kamicha1回答回数94ベストアンサー獲得回数02004/01/17 11:22:16

ポイント60pt

上記URLの「フォルダ内のすべてのブックを処理するには?(Windows)」を参照しています。

下記のコードを標準モジュールに貼り付けて、Excelファイルのあるフォルダ配下にDATAフォルダを作成し、そこに対象のCSVファイルをコピーしてSample_Workbooksマクロを実行してください。

Dim ActiveWorkBookName As String

Dim sFileName As String

Sub Sample_Workbooks()

Dim sFolderName As String

Dim sFileNameCount As Long

’対象フォルダの設定

’このExcelファイルのあるフォルダ配下のDATAフォルダを指定

sFolderName = ThisWorkbook.Path & ”¥DATA¥”

’CSVファイル名を取得

sFileName = Dir$(sFolderName & ”*.csv”)

ActiveWorkBookName = ActiveWorkbook.Name

’ファイル名の列挙が終わるまで実行します

sFileNameCount = 0

Do Until sFileName = ””

sFileNameCount = sFileNameCount + 1

’ブックを開きます

Workbooks.Open sFolderName & sFileName

’ブックに対する共通処理

Sample_Proc

’次のファイル名を取得

sFileName = Dir$()

Loop

MsgBox sFileNameCount & ”ファイルを処理しました。”

End Sub

’ブックに対する共通処理

Sub Sample_Proc()

’コピー&Aのワークシートに貼り付け、

Cells.Copy

Workbooks(ActiveWorkBookName).Activate

Sheets(”Sheet1”).Select

Range(”A1”).Select

ActiveSheet.Paste

Application.CutCopyMode = False

’それを元に計算

’ 〜計算処理を記述?(どういう計算かは不明なので詳細は省略)

’計算の後結果を、A上の別のワークシートにコピー

Workbooks(ActiveWorkBookName).Activate

Sheets(”Sheet1”).Select

Cells.Copy

’別のワークシート名がSheet2の場合

’このままだと、すべてのファイルがSheet2にコピーされてしまうので注意

’また、1ファイルの最大シート数は、公開されていませんが、あまり多すぎるのも無理があります。

’ということで、1CSVファイル1シートという考え方は避けたほうがいいと思います。

Sheets(”Sheet2”).Select

ActiveSheet.Paste

Range(”A1”).Select

Application.CutCopyMode = False

’コピー元のワークシートは、どうするのか?

Sheets(”Sheet1”).Select

Range(”A1”).Select

’コピー元ワークシートの消去(削除ではない)

Cells.ClearContents

’先ほど指定されたファイルを閉じる

Workbooks(sFileName).Close False

End Sub

http://www2.moug.net/app/bbs/thread.php?cat=exvba

Excel VBA を学ぶなら moug モーグ

ExcelVBAに関してご不明な点があれば、こちらでおたずねしては、いかがでしょうか?

id:garyu

ちょっと感動して泣きそうになりました(;_;)

本当にありがとうございました♪

2004/01/17 12:14:28

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません