最近Excel2010でマクロVBAを独学で始めた初心者です。本を購入して学習を進めていますが、本当に基本的なことしか書いていなかったり、ピンポイントで私の使いたいマクロがみつからなかったり、で、結局インターネットで検索してコピーしたり、必要な個所のみ変更したりしてどうにかこうにか学習し、実務(営業事務)に使用しています。
教えていただきたいことは、タイトルにも書きましたが、
1)あるフォルダに格納されている複数のExcelファイルからファイル名の新しいものを選び出し(例:SalesData_20150801, SalesData_20150802.......であれば選び出すのはSalesData_20150802 )
2)別のExcel fileのシートにコピーしたいのです。
以下で詳しく述べますが、1)と2)の作業を切り離して別々に作業したところ、それぞれは動作がきちんとできました。ですが一連の動作をどのように行うのかがわかりません。できるだけ簡単なコードを教えていただけると幸いです。よろしくお願いいたします。
まず、2)のほうのコードから考えてみたところ、ファイル名を指定した上でですが、きちんと作動しました。
Sub DataCopy()
Dim readBook As Workbook
Set readBook = Workbooks.Open("C:\xxx\xxx\xxx.xlsx")
Dim readSheet As Worksheet
Set readSheet = readBook.Worksheets("xxx")
Workbooks("xxx.xlsx").Worksheets("xxx").Cells.Copy ThisWorkbook.Worksheets("xxx“).Range("A1")
readBook.Close False
Set readSheet = Nothing
Set readBook = Nothing
End Sub
次に1)を別個に考えてみました。ネットでみつけたコードをそのままコピーし必要な変更を加えただけなのですが、こちらも、正しいファイル(最新の日付のファイル)がきちんと検索されました。
Sub 最新フォルダを取得()
Dim sDir As String
Dim sTitleHead As String
Dim sTemp As String
Dim sReturn As String
' ' 「指定フォルダ」へのパスをドライブ名から指定
sDir = "C:\xxx\xxx\xxx"
' ' ファイル名を前方一致で篩に掛ける「タイトル」を指定
sTitleHead = "xxx"
' ' Dir関数でファイル名を取得
sTemp = Dir(sDir & "" & sTitleHead & "*")
' ' Dir関数をループ
Do While sTemp <> "" ' Dir関数でファイル名を取得し尽したらループ終了
' ' ファイル名が「タイトル」で始まるものだけ篩に掛ける
If sTemp Like sTitleHead & "*" Then
If sTemp > sReturn Then sReturn = sTemp
End If
sTemp = Dir() ' ' Dir関数で次のファイル名を取得
Loop
MsgBox "フォルダ:" & sDir & vbLf & "タイトル:" & sTitleHead & vbLf & "最新:" & sReturn
End Sub