エクセル勉強会 上級者② エクセルVBAでメール受信(OutLookの操作)
で作成したファイルを、特定のフォルダに保存します。(マクロ有効ブックで)
そのファイルには、xlsm が人るだけ
準備
1、新しいブックで、データリストの一部をコピー、貼付け
2、名前を付けて保存(今度は Excelブック .xlsx形式)
3、適当に、ファイルを複数作成します。
完成状態
フォルダー内に、マクロ有効ブックが一つ、他にExcelブック .xlsx形式が複数ある、
これが、各支店からメールで送られてきたファイルと仮定
やりたい事
1、ボタンをクリックすると、同じフォルダー内のxlsx形式を順番に開いて
データリストの下に追加していく。
2、追加の作業が終了した、xlsx形式のファイルを削除する。
手順
1、保存したマクロ有効ブックのシート上にボタンを配置、VBエディター起動して
2、以下のコードを張り付ける
buf = Dir(ThisWorkbook.Path & "\*.xlsx")
With ThisWorkbook.Sheets("データリスト")
Do While buf <> ""
GYOU = .Range("A" & Rows.Count).End(xlUp).Row + 1
Workbooks.Open ThisWorkbook.Path & "\" & buf
.Range("A" & GYOU & ":F" & GYOU + 1000).Value = Range("A2:F1002").Value
ActiveWorkbook.Close SaveChanges:=False
buf = Dir()
Loop
End With
を張り付けて閉じる。
3、ボタンをクリックして、xlsx形式にファイルが、マクロ有効ブックのデータリストに追加されればOK
新しいコード Dir関数
Dir(ThisWorkbook.Path & "\*.xlsx")
このファイルと同じフォルダにある、エクセルファイル名(*.xlsx)が変数 bufに入ります。
しかし、エクセルファイル(*.xlsx)が一つとは限りません。
buf = Dir() を実行すると、次にファイル名になります。
Do While buf <> ""
と
Loop
で繰り返して、bufが空白に(Dir関数で全てをファイル確認)なるまで
全てのファイルを確認したら終了 と云う変わった関数です。
最後に
Kill ThisWorkbook.Path & "\*.xlsx" を実行させる。
※このKill のコマンドは、ThisWorkbook.Path & "\*.xlsx" マクロ実行するファイル内の全てのエクセルファイルを一瞬で削除します。
使い方を間違ったら大変です、注意しましょう。