• 締切済み

Excel CSVファイル セル名を名前として保存

いつもありがとうございます。エクセル2003XPです。 毎回USBメモリーに上書きされてくる、同名のCSVファイルを別エクセルファイルに読み込む作業をしております。 その作業は外部データの読み込みを記憶マクロとして問題ないのですが、エクセルに読み込んだCSVファイルは、かぶらないようにそのつど、Kill を使い削除しております。 ただ完全に削除なので対策として、 読み込んだCSVファイルの1行目のセル名をファイル名として名前を変えて保存、 PCの"C:\Documents and Settings\元データ に毎回CSVもしくは、エクセルファイルに名前を変更して保存する処理をボタンひとつで出来ないか、考えております。 ネットで色々と検索をしておりますが、勉強不足です。 参考でサンプルマクロは見つけましたが、どのように変更すれば良いか分かりません。ご享受いただければ助かります。 CSVファイル名 : log001.csv(毎回、USB) 保存したいファイル名 : CSVファイルを開いた時のA1のセル名(日付です) 保存場所 : PCのマイドキュメントの元データファイル 保存したいファイル形式 : CSVもしくはExcelファイル Sub THSFILE_SAVE() Dim myFname0 As String Dim myFname As String On Error GoTo ERRH '現在のファイル名取得 myFname0 = ThisWorkbook.Name '新しいファイル名をセルA1の値とする myFname = Sheets(1).Range("A1").Value '同じ階層に保存 ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & myFname If myFname0 <> myFname & ".xls" Then '前の名前のファイルを削除する場合は下の一行を有効にしてください 'Kill ThisWorkbook.Path & "\" & myFname0 End If Exit Sub ERRH: End Sub この処理はCSVファイルの読み込み先のエクセルファイルから、行いたいと考えております。 よろしくお願致します。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

本来、WScript で十分だと思います。それをデスクトップに置けばよいのですが、わざわざ、VBAにしたところで、どこかのブックに置かなくてはなりません。以下のマクロの登録先は、PERSONAL.XLS や一般のブックに登録することになります。 Kill ThisWorkbook.Path & "\" & myFname0 もとのマクロですが、ThisWorkbookというのは変ですね。 以下は、log数字.csv なら通るようにしてあります。 '// Sub CsvConvertFile()  Dim FName As String  Dim oFName As String  Dim oFullName As String  Dim oName As String  Dim sPath As String  Dim sExt As String  Dim i As Long  sExt = IIf(Val(Application.Version) > 11, ".xlsx", ".xls")  'デフォルトパス  sPath = Application.DefaultFilePath  oFName = ActiveWorkbook.Name  oFullName = ActiveWorkbook.FullName  If Not StrConv(oFName, vbLowerCase) Like "log###*" Then MsgBox "Logファイルではありません。", 16: Exit Sub  If InStrRev(oFName, ".csv", , 1) = 0 Then MsgBox "csvファイルではありません。", 16: Exit Sub  If ActiveSheet.Range("A1").Value = "" Then   MsgBox "A1に文字がありません。", vbCritical   Exit Sub  End If  FName = ActiveSheet.Range("A1").Value  '同名ファイルがあった場合に名前を変更  oName = FName  Do   If Dir(sPath & FName & sExt) <> "" Then    i = i + 1    FName = oName & Format(i, "(0)") '重複があった時のファイル名   End If  Loop Until Dir(sPath & FName & sExt) = ""  ActiveWorkbook.SaveAs sPath & FName, FileFormat:=xlWorkbookNormal  If MsgBox(oFName & "を削除してよろしいですか?", vbOKCancel) = vbOK Then   Kill oFullName  End If End Sub

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

以下の様にしてはどうでしょうか? Sub THSFILE_SAVE() Dim myFname0 As String Dim myFname As String myFname0 = Workbooks("log001.csv").FullName myFname = Workbooks("log001.csv").Sheets(1).Range("A1").Value '実行しているブックと同じパスにCSVファイルのコピーを保存 Workbooks("log001.csv").SaveCopyAs ThisWorkbook.Path & "\" & myFname & ".csv" 'CSVファイルを保存しないで閉じる Workbooks("log001.csv").Close False '削除 Kill myFname0 End Sub

関連するQ&A

  • デスクトップ上のCSVファイルの削除について

    いつもお世話になっております。 VBAでまた難問に詰まってしまいました。ご教授お願い致します。 別のフォルダに保存されているマクロを利用して、とあるデータを作成するのですが 途中でデスクトップ上に一回保存をしたCSVファイルを最後に削除する という動きをさせたいです。 下記のマクロだと、マクロとCSVファイルがデスクトップ上にあれば削除出来るのですが マクロは常にとあるフォルダに保管されており、使用する人間はバラバラです。 ※CSVファイルの他に3種類程データを作成するのですが  マクロを使った人が使っているPCのデスクトップ上に保管する事になっております。  上記の事から、Killステートメントでファイル指定が出来ない状態(不特定のデスクトップ)です。   Sub test() Dim myPath As String Dim i As String myPath = ThisWorkbook.Path & "\" i = "テストデータ.csv" If InStr(i, ".csv") = 0 Then i = i & ".csv" If Dir(myPath & i) <> "" Then Kill myPath & i Else End If End Sub 不特定のデスクトップ上にあるcsvファイルを削除する事は可能でしょうか? 以上、宜しくお願い致します。 環境 WindowsXP Excel2003

  • エクセルで保存時のファイル名

    エクセルでファイルを書き込む(「ファイル」-「名前を付けて保存」) 時に、セル内にあるテキストをファイル名として自動的に書き込み時に 指定する事はできるでしょうか。 例えば A1セルに"名古屋"、A2セルに"10月"と入っている時に 「名前を付けて保存」で、ファイル名=名古屋10月.csv (ファイルの種類はCSV)としたいのですが。 ご教授、よろしくお願いいたします。

  • エクセルからCSVファイルに出力したい?

    エクセルのシートからマクロを使ってCSVファイルに出力したいです。 そこで調べたのですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2376607 こちらの質問で以下のようなコードが参考になりました。 Sub Macro1() Dim myBook As String myBook = ActiveWorkbook.FullName myBook = Left(myBook, Len(myBook) - 3) & "CSV" ActiveSheet.Copy ActiveWorkbook.SaveAs Filename:=myBook, FileFormat:=xlCSV ActiveWindow.Close False End Sub このコードではCSVのファイル名がエクセルシートのファイル名になってしまいます。 今回の質問ですが、CSVファイルを違う名前で保存するにはどのようにすればいいのでしょうか? (CSVファイルの名前は常にabc.csvで保存するものとします)

  • csvファイルの読み込みができません。

    csvファイルの読み込みができません。 過去にExcelで作成したデータをcsvに変換するマクロを作ってもらいました。 (Excel表の中にマクロを登録したボタンがあって、それをクリックするとcsvファイルが作成される) そのcsvファイルをそのまま使用すると、読み込みができますが、一旦csvファイルを開いて一部データの変更をして保存すると読み込みができなくなります。 また、自動にファイル名が設定されるので、わかりやすいようにファイル名を変更しただけでも読み込みができなくなります。 csvファイルにも種類があるんでしょうか?

  • Excelのマクロで、セル内の文字をファイル名にしたい

    ”プロト.xls”というExcelファイルの中に、以下の動作をするマクロを作成したいのです。 (1)”C:\顧客\顧客納期連絡.xls”というExcelファイルを開き、  それを”C:\顧客\A.csv”という名前のcsvファイルにする。 (2)”C:\顧客\A.csv”を”xxxxxxxxxxxxxxxxxx”(※注1)という名前にしてコピーする。 ※注1:”xxxxxxxxxxxxxxxxxx”の部分は、”プロト.xls”ファイルのSheet”マスター”のセルD9から取得させる。 そのセルは、 C:\顧客\ABCDEF0215.csv と記述しています。 (3)コピー後、”C:\顧客\A.csv”を削除する。 ------------------------------------------------------------------- Sub 顧客納期連絡() ' ' 顧客納期連絡 Macro ' マクロ記録日 : 2010/2/15 ユーザー名 : xxxxxxx ' ' ChDir "C:\顧客" Workbooks.Open Filename:="C:\顧客\顧客納期連絡.xls" ActiveWorkbook.SaveAs Filename:="C:\顧客\A.csv", FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Save ActiveWindow.Close ActiveWorkbook.Save Dim fname1 As String Dim fname2 As String fname1 = "C:\顧客\A.csv" fname2 = Workbooks("プロト.xls"), Sheets("マスター"), Cells("D9") FileCopy fname1, fname2 Kill "C:\顧客\A.csv" End Sub ------------------------------------------------------------------- 上記のマクロを作成したのですが、FileCopyの行で、構文エラーか型に一致していない、 というエラーになりマクロ再生が停止します。 セルの内容をファイル名にしたいのですが、何か良い方法はございませんでしょうか? 私は超初心者なので、何卒宜しくお願い致します。

  • エクセルでマクロを使ってCSV保存時のファイル名

    初めてエクセルでマクロ(マクロの記録と言うのを使って)をトライしている初心者です。自分なりに色々調べて見ましたが、イマイチ分からないので以下2つ教えて頂けないでしょうか? 他のアプリに取込む為、通常使っているエクセルのデータをCSV形式で保存するまでをマクロで作成しマクロボタンまでを作ることは出来ました。それを使いたいと言う同僚が何人かいて、その人にエクセルを渡す場合についてです。 (1)CSV保存するファイル名を、各人好みの元々のエクセルのファイル名にしたい。 (2)保存する場所を、同僚各自のデスクトップにしたい。または各自に指定して保存させたい。 のですが、私が記録したマクロの保存該当部分は以下と思いますが、自分用なので、自分のPCの名前(以下、XXXX部分)になっていて、かつ自分が指定した毎回同じファイル名(以下、AAAA部分)になっているのが問題で、同僚のPCではマクロが実行できませんでした。 この、XXXXとAAAAやその前後の言葉をマクロの修正(VBAで)で書き換えればいいのでしょうか?その場合どのようにすればいいか教えてください。 ChDir "C:\Users\XXXX\Desktop" ActiveWorkbook.SaveAs Filename:= _ "C:\Users\XXXX\Desktop\AAAA.csv", FileFormat:=xlCSV, _ CreateBackup:=False End Sub 長くなりましたが、どうぞ宜しくお願い致します。

  • エクセルVBAでファイルをCSV保存の仕方

    エクセルのシートをCSVファイルに保存するため以下のようなマクロを書きました。 Sub Macro1() Cells.Select Selection.Copy Workbooks.Add ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\デスクトップ\Book1.csv", FileFormat _ :=xlCSV, CreateBackup:=False ActiveWindow.Close ThisWorkbook.Activate End Sub 一応これで保存できるのですが、自動記録でやったためファイルの名前が出てしまいました。 この部分をわたし以外の誰でも任意の名前をつけ、任意のフォルダーに保存できるように書き換えたいのです。 どのように記述すれば良いかお教えください。お願いします。

  • ExcelファイルをCSV 形式で保存するには?

    ExcelファイルをCSV 形式 (Windows、カンマ区切り) (*.csv)にして書類を提出するように言われたのですが、その方法について教えてください。 データの内容は会社の詳細で、1社につき100項目のデータがあり、それが50社あります。その場合、1社目のデータをA列に、2社目のデータをB列にというように入力すればよいのでしょうか? Excel の [名前を付けて保存] ([ファイル] メニュー) を使って、CSV (カンマ区切り) (*.csv)ファイルで保存すると、各項目がカンマで区切られるのでしょうか? 1レコード目と2レコード目はどういった区切りになるのでしょうか? またファイル形式はCSV 形式でと言うことですが、提出するファイル名の拡張子を.txtとしないといけないのですが、それはどうすればいいのでしょうか?

  • 【Excel】Excelで作ったファイルをCSVで保存するには?

    超初心者な質問ですみません。(>_<) Excelで作成したファイルをCSVで保存したいんです。 (1)Excelファイルを開く。 (2)「名前をつけて保存」を選択し、ファイル名のお尻にYYYYMMDDをつけ(Product_20050901.csv)、「ファイルの種類」を「CSV(カンマ区切り)」にして保存する。 (3)指定フォルダにCSVファイルが作成される。 (4)出来上がったCSVファイルを開こうとすると、「SYLK:ファイル形式が正しくありません」という警告が出てファイルが開かない。 という現象が起きてしまいます。 何がいけなかったんでしょう? どうしたらCSVで保存できますか?教えてください!

  • CSVファイルをエクセルで扱うときのカンマの使い方について

    よろしくお願いいたします。 CSVファイルをエクセルで読み込んで、 編集後、またCSVファイルとして保存したいと思います。 CSVファイルをエクセルで読み込んだとき、 エクセルの中の各セルを編集しようとすると、 文字の前にカンマがついていますが、 これがあるのと、ないのでどのような違いが出ますでしょうか。 困っています。 どなたかよろしくお願いいたします。 エクセルで編集時に、カンマを削除してしまうと、 何が起こりますか。 意図したようにCSVとして保存できないのでしょうか。

専門家に質問してみよう