• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel マクロで.xlsx形式で保存したい)

Excelマクロで.xlsx形式で保存する方法とエラー対処法

このQ&Aのポイント
  • Excelマクロを使用してCSVファイルを加工し、名前を付けて保存する方法についてご説明します。また、.xlsx形式で保存する際に発生するエラー1004の対処法も解説します。
  • マクロを実行すると、ファイル形式が.xlsxで保存されないエラーが発生する場合があります。エラーの内容は「この拡張子は、選択したファイル形式には使用できません。」です。
  • エラーが発生した場合は、保存するファイルの拡張子を変更するか、別のファイル形式を選択する必要があります。マクロで使用する保存フォーマットを適切に指定することで、エラーを回避することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

・コードを読むと、保存しようとしているのはマクロが入っている自ブックになっていますが、「xlsなら保存できる」と言う事はこの処理自体は間違いでは無いんですよね? ・4行目がコメントアウトされていますが、変数saveFilePathには、ちゃんと保存ファイル名が拡張子のxlsxまで含め、フルパスで入っているという事で間違いないですね? ・xlsmとxlsxの違いを理解したうえでxlsxで保存しようとしていますね? で、あればコードを以下の様に変更してみてください。 ThisWorkbook.SaveAs saveFilePath   '←ここでエラーが発生しています。 ↓ Application.DisplayAlerts = False ThisWorkbook.SaveAs saveFilePath, FileFormat:=xlOpenXMLWorkbook

chi_ko6262
質問者

お礼

早速のお返事有難うございます。すべてクリアーになりました。感謝、感謝です。本当に有難うございました。

その他の回答 (2)

回答No.3

保存のタイミングで確実にフォーカスがあるのであれば ActiveWorkbookの方が良いかもしれませんね。 開くと同時に変数に格納してしまうのがベターではありますが。 SaveAs を使って拡張子を変えようとするには、 ファイルの形式も併せて指定してやりましょう。 簡単に言うと、csv形式で開いている状態を保持しているので、 拡張子に「xlsx」を指定しちゃダメですよ、ってことですね。 以下、2003以前だとコンパイルエラーになるかもしれませんが、 強制的に2007以降のブック(xlsx)で保存します。     initPath = "\\fileserver\ANT\IT\91_Users\700_SUBJECT\その他業務\Excel\"     saveFilePath = Application.GetSaveAsFilename(initPath, "Excel File (*.xlsx),*.xlsx")     ActiveWorkbook.SaveAs FileName:=saveFilePath, _                 FileFormat:=xlOpenXMLWorkbook xlWorkbookNormal でもおそらく大丈夫ですが、 これだと仮に2003以前をいまだにお使いなのであれば 2003以前のデフォルトファイル形式であるxls形式が選択されます。

chi_ko6262
質問者

お礼

早速のお返事有難うございます。参考になりました。感謝の気持ちでいっぱいです。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは マクロで開いたCSVファイルが、ThisWorkbookっておかしくないですか? マクロブックの拡張子は「xlsm」だとして、開いたCSVファイルを「xlsx」形式で 保存して閉じるなら、 Sub test()   Dim csvF As Workbook   Dim initPath As String   Dim saveFilePath As Variant   Set csvF = Workbooks.Open("C:\temp\test.csv")   initPath = "C:\temp\" '"\\fileserver\ANT\IT\91_Users\700_SUBJECT\その他業務\Excel\"   saveFilePath = Application.GetSaveAsFilename(initPath, "Excel File (*.xlsx),*.xlsx")   If Not (saveFilePath = "False") Then     csvF.SaveAs saveFilePath, xlWorkbookDefault   '←ここでエラーが発生しています。     csvF.Close   Else     MsgBox "キャンセルされました。"     Exit Sub   End If End Sub こんな感じです。

chi_ko6262
質問者

お礼

お手数をお掛け致しましたが、色々考えて出来る様になりました。大変に参考になりました。本当に有難うございました。感謝、感謝です。

chi_ko6262
質問者

補足

早速のお返事有難うございます。少し質問が有るのですが、「Set csvF = Workbooks.Open("C:\temp\test.csv")」とは何ですか? CSVファイルも\\fileserver・・・・・・・・・・の中にあり、たまにはCSVファイルでない場合もあるので何のファイルでも.xlsxに変換したいと思っております。 わがままばかり言って申し訳ございませんが、何卒ご指導の程、宜しくお願い致します。

関連するQ&A