プロが教えるわが家の防犯対策術!

いつもお世話になっています。

表題の通りなのですが、これらを複数のファイルに適用していきたいと考えています。
具体例を挙げますと、
「A」というフォルダに名前の全く異なるcsvファイルが100個並んでいます。
これを「B」というフォルダにxlsx形式で同じ名前のまますべてのファイルを保存し、
かつ「A」のフォルダにはcsvファイルが残らないようにしたいと考えています。

最終的には「A」にはファイルがなく、「B」にはxlsx済みのファイルが100個でき、
終了時に「変換が終わりました」というコメントが出るマクロを作りたかったのですが、
力不足で同名保存と元となったcsvファイルを消すという工程で躓いてしまいました。

皆さんのお力を借りたいと思います。
お手数ですがよろしくお願いします。

A 回答 (1件)

こんにちは。



このマクロを扱い始めて1年ぐらい経った人がよく作るものだと思いますが、以下は、一旦、配列においているところが変則的です。しかし、そのほうが、途中で処理が必要になった時に、加工がし易いからです。
なお、コードの中のDoEvents は、あまり意味がありません。

'//
Sub ConvertCSV2xlsx()
 Const SORPATH As String = "C:\Users\Test1\"  '末尾は必ず¥をつける
 Const DESTPATH As String = "C:\Users\Test2\"  '""
 
 Dim FName As String, MyPath As String
 Dim newFName As String
 Dim i As Long
 Dim MyAry()
 Dim n
 Dim wb As Workbook
 MyPath = SORPATH
 FName = Dir(MyPath & "*.csv", vbNormal)
 Do While FName <> ""
  If (GetAttr(MyPath & FName) And vbNormal) = vbNormal Then
   ReDim Preserve MyAry(i)
   MyAry(i) = FName
   i = i + 1
  End If
  FName = Dir
 Loop
 i = 0
 Application.ScreenUpdating = False
 For Each n In MyAry
  newFName = Mid(n, 1, InStrRev(n, ".") - 1)
  With Workbooks.Open(SORPATH & n)
    .SaveAs DESTPATH & newFName, xlWorkbookDefault
    .Close False
    DoEvents
  End With
  Kill SORPATH & n
  i = i + 1
 Next
 Application.ScreenUpdating = True
 
 MsgBox i & "個のファイル、変換が終わりました!", vbInformation
End Sub
    • good
    • 0

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