アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めまして。
現在Excelにマクロを組み込み、ボタンを押すと5行目以下が
csvファイルとして出力されるというプログラムを使っております。

しかしながら、多数のExcelファイルでこの作業をする必要が生じました。
そのため、フォルダ内の全てのExcelファイルに同じこと
(5行目以下をcsvファイルとして出力)をしたいのですが、

もしそのやり方をご存知でしたらお教えいただけませんでしょうか。
念のため現在使っているExcelマクロを記載致します。

Private Sub Workbook_Open()

ActiveWindow.ScrollRow = 1
MsgBox "Workbook_Openイベントが発生しました。"
Call AddMenu

End Sub

Sub AddMenu()

Dim NewM As Variant, NewC As Variant

Set NewM = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)
NewM.Caption = "変換ツール(&G)"

Set NewC = NewM.Controls.Add
With NewC
.Caption = "csv書き出し(&R)"
.OnAction = "henkan_conb"
.BeginGroup = False
.FaceId = 271
End With

End Sub

Sub henkan_conb()

Sheets("sheet1").Select
Rows("1:4").Select
Selection.Delete Shift:=xlUp

Row = 1
Do Until Cells(Row, 1) = ""
Row = Row + 1
Loop

If Cells(Row, 1) = "" Then
Rows(Row).Select
Selection.Delete Shift:=xlUp
End If

Range("A1").Select

ActiveWorkbook.SaveAs Filename:= _
"C:\file.csv", _
FileFormat:=xlCSV, CreateBackup:=False

End Sub

A 回答 (1件)

考え方だけね。



VBA コードを仕込むブックと、CSV の元になる多数のファイル(5行目以降にデータが書いてあるブック)とを分けて考える。
つまり、「プログラム」「データ」「出力物」にわけて考える。
大まかな流れは
1. プログラムブック(prog.xls)で、フォルダを指定して実行。
2. 指定されたフォルダにあるブックを 1冊ずつ開いては閉じる。
3. (2) の中で、5行目以降を CSV に出力する。
4. (2)(3) を最後のブックまで実行。

使うテクニックとしては、
1. 他のブックを開いたり閉じたりする。

2. オブジェクト変数に慣れる。
ブックやシートにアクセスする際に Workbook 型や Worksheet 型の変数を使うと非常に便利。
(1) の開くタイミングで、開いたブックを Workbook 型の変数で参照する。
目的のシートを(「左から数えて何番目」か「固定のシート名」を頼りにして)Worksheet 型の変数で参照する。

3. あるフォルダ内のすべてのブックのファイル名を取得できるようにする。

4. シートの内容を CSV に出力できるようにする。


がんばってください。
    • good
    • 0
この回答へのお礼

ありがとうございます!
やってみます!

お礼日時:2007/09/18 21:56

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