ここから本文です

【至急】csvをxlsxに変換して保存するVBA csvファイルのデータ処理マクロを実行...

msh********さん

2018/12/222:49:02

【至急】csvをxlsxに変換して保存するVBA

csvファイルのデータ処理マクロを実行しcsvファイル同じフォルダーにxlsxとして保存したいです。

操作手順
①C:\test\result\0001.csvファイルを開く
②C:\test\macro.xlsmを開く
③上記のファイルに組み込まれているマクロ実行し、0001.csvデータ処理を実行する
④xlsxとしてファイルを保存
⑤xlsxファイルを閉じる


*ActiveWorkbook.SaveAs FileFormat:=xlNormalをしようすると
xlsmのファイルと同じ階層のフォルダに保存されてしまします。

閲覧数:
73
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

lin********さん

2018/12/308:44:56

申し訳ございません(この質問の回答ではありません)。

昨晩、ベストアンサーを頂いたのですが、最後の「dataSum」フォルダにまとめる処理が抜けていましたので、再回答しておきます。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q121998731...

ただ、最後にまとめるのではなく、最初に、「dataSum」フォルダの有無を調べ、存在しなければ、「dataSum」フォルダを作成し、結果の「~.xlsx」ファイルを、最初から「dataSum」フォルダに保存します。

Sub Sample()
Dim so As Object, gf As Object
Dim bk As Workbook, sh As Worksheet
Dim f As Object, i As Long, r As Long
Dim qt As QueryTable, n As String, p As String
Set so = CreateObject("Scripting.FileSystemObject")
Set gf = so.GetFolder(ThisWorkbook.Path)
p = gf & "\dataSum"
If so.FolderExists(p) = False Then
so.CreateFolder (p)
End If
Application.ScreenUpdating = False
For Each f In gf.SubFolders
If LCase(Left(f.Name, 4)) = "data" And IsNumeric(Mid(f.Name, 5)) = True Then
Set bk = Workbooks.Add
Set sh = bk.ActiveSheet
For i = 1 To 999
n = f & "\" & Right("00" & i, 3) & ".csv"
If so.FileExists(n) = True Then
r = sh.Cells(Rows.Count, "A").End(xlUp).Row + 1
If r = 2 Then
r = 1
End If
Set qt = sh.QueryTables.Add(Connection:="TEXT;" & n, Destination:=sh.Range("A" & r))
With qt
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.RefreshStyle = xlOverwriteCells
.Refresh
.Delete
End With
Else
Exit For
End If
Next i
bk.SaveAs Filename:=p & "\" & f.Name & ".xlsx", FileFormat:=xlWorkbookDefault
bk.Close
Set sh = Nothing
Set bk = Nothing
End If
Next f
Application.ScreenUpdating = True
Set gf = Nothing
Set so = Nothing
MsgBox ("Finished!")
End Sub

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tra********さん

2018/12/223:11:14

C:\test\macro.xlsmにマクロを組み込み実行してください

Sub sample()
Dim xName As String
With Workbooks.Open("C:\test\result\0001.csv")
xName = CreateObject("Scripting.FileSystemObject").GetBaseName(.Name)
.SaveAs Filename:=.Path & "\" & xName, FileFormat:=xlOpenXMLWorkbook
End With
End Sub

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる