ここから本文です

エクセル マクロでCSV→xlsxにして保存

アバター

ID非公開さん

2019/5/2407:43:36

エクセル マクロでCSV→xlsxにして保存

について教えて下さい。

ダウンロードしたあああ.csvを特定のフォルダにある、いいいxlsx.に上書き保存したいと思います。
そのコードを教えて頂けないでしょうか?
宜しくお願い致します。

閲覧数:
41
回答数:
2
お礼:
25枚

違反報告

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

hdu********さん

2019/5/2409:34:10

FileCopy "あああ.csv”, "いいいxlsx"

この回答は投票によってベストアンサーに選ばれました!

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

1〜1件/1件中

プロフィール画像

カテゴリマスター

lin********さん

2019/5/2410:25:24

「VBScript」による回答ですので、「Windows限定」です。

このプログラムは、これから「xlsx」化したい「csv」ファイルを、プログラムファイルにドラッグ&ドロップ(1つでも、複数でも可)するだけです。

ドラッグ&ドロップした「csv」ファイルが存在するフォルダ内に同じ名前(「abc.csv」→「abc.xlsx」)の結果ファイルを作成します。

★★★注意事項★★★
「csv」ファイルは、「,」区切り、文字コード「Shift-JIS」または「Unicode」のファイルに対応しています。

なお、「csv」ファイルの文字コードが「UTF-8」の場合は、文字化けしますが、16行目の「'.TextFilePlatform = 65001」の頭の「'」を外せば、「UTF-8」の「csv」ファイルに対応します。

ただし、今度は、「UTF-8」専用になりますので、「UTF-8」限定でお願いします。

以下のプログラムを、メモ帳かテキストエディタに貼り付け、「~.vbs」という名前で保存します。

「~」の部分は、何でもかまいませんが、「.vbs」の部分は、必ず、半角です。

できたプログラムファイル(「~.vbs」ファイル)に、これから「xlsx」化したい「csv」ファイルを、ドラッグ&ドロップ(1つでも、複数でも可)するだけです。

最後に「Finished!」と表示しますので、「OK」を押して、終了してください。

★★★注意事項★★★
「Finished!」が出るまで、すべてのエクセルブックは閉じておいてください(もちろん、エクセルを起動してもいけません)。

Option Explicit
Dim bk, ex, f, i, n, qt, sh, so, wa
Set so = CreateObject("Scripting.FileSystemObject")
Set ex = CreateObject("Excel.Application")
ex.Application.DisplayAlerts = False
ex.Visible = False
Set wa = WScript.Arguments
For i = 0 to wa.Count - 1
If LCase(so.GetExtensionName(wa(i))) = "csv" Then
f = so.GetParentFolderName(wa(i))
n = so.GetBaseName(wa(i))
Set bk = ex.Workbooks.Add()
Set sh = bk.ActiveSheet
Set qt = sh.QueryTables.Add("TEXT;" & wa(i), sh.Range("A1"))
With qt
'.TextFilePlatform = 65001
.TextFileParseType = 1
.TextFileCommaDelimiter = True
.RefreshStyle = 0
.Refresh
.Delete
End With
bk.SaveAs f & "\" & n & ".xlsx", 51
bk.Close
Set sh = Nothing
Set bk = Nothing
End If
Next
ex.Quit
Set ex = Nothing
Set wa = Nothing
Set so = Nothing
MsgBox("Finished!")

おおざっぱな説明。

Set ex = CreateObject("Excel.Application")

エクセルを扱えるようにしています。

Set wa = WScript.Arguments

ドラッグ&ドロップされるのを待っています。

For i = 0 to wa.Count - 1
If LCase(so.GetExtensionName(wa(i))) = "csv" Then
f = so.GetParentFolderName(wa(i))
n = so.GetBaseName(wa(i))
Set bk = ex.Workbooks.Add()
Set sh = bk.ActiveSheet
Set qt = sh.QueryTables.Add("TEXT;" & wa(i), sh.Range("A1"))
With qt
'.TextFilePlatform = 65001
.TextFileParseType = 1
.TextFileCommaDelimiter = True
.RefreshStyle = 0
.Refresh
.Delete
End With
bk.SaveAs f & "\" & n & ".xlsx", 51
bk.Close
Set sh = Nothing
Set bk = Nothing
End If
Next

ドラッグ&ドロップされたファイルを1つずつ、拡張子が「csv」なら、新規にブックを作成し、メニューの「データ」→「外部データの取り込み」→「テキストファイル」を実行して、同じフォルダ内に同じ名前で「xlsx」保存しています。

「.TextFilePlatform = 65001」の「65001」が「UTF-8」です。

あわせて知りたい

この質問につけられたタグ

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

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

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

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

閉じる

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

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

閉じる