フォームボタンをクリックして、現在の日付のファイル名でブックのコピーを保存するExcelブックがあります。
次のActiveWorkbook.SaveAs ("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))
を試し続けていますが、Run-time error '1004': Method 'SaveAs' of object'_Workbook' failed.
を受信しています
誰もこれで私を助けることができますか?私はまだExcel向けの開発を始めたばかりです。
ほとんどの場合、アクセスしようとしているパスは存在しません。相対的な場所に保存しようとしており、その文字列にファイル拡張子がありません。相対パスを使用する必要がある場合は、ActiveWorkbook.FullName
からパスを解析できます
編集:より良い構文もなります
ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal
この関数を使用する最も簡単な方法は、「マクロの記録」から開始することです。記録を開始したら、ファイルを目的の場所に目的の名前で保存し、もちろんファイルタイプを設定します。ほとんどの場合は「Excel Macro Enabled Workbook」〜「XLSM」
記録を停止すると、コードの検査を開始できます。
ファイルが元々あった場所のパスを使用してワークブックを保存できるようにするコードを以下に記述し、「イベント[セル[A1]の日付]」と命名しました。
Option Explicit
Sub SaveFile()
Dim fdate As Date
Dim fname As String
Dim path As String
fdate = Range("A1").Value
path = Application.ActiveWorkbook.path
If fdate > 0 Then
fname = "Event " & fdate
Application.ActiveWorkbook.SaveAs Filename:=path & "\" & fname, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Else
MsgBox "Chose a date for the event", vbOKOnly
End If
End Sub
コードを新しいモジュールにコピーし、セル「A1」に日付を書き込みます。 01-01-2016->サブルーチンをボタンに割り当てて実行します。 [注意]新しいワークブックはデフォルトの自動保存場所に保存されるため、このスクリプトが機能する前に保存ファイルを作成する必要があります。
デフォルトのフォーマットがファイル拡張子と一致しない可能性があります。ファイル名とともにファイル形式を指定し、形式が拡張子と一致することを確認する必要があります。
With someWorkbook
.SaveAs "C:\someDirector\Awesome.xlsm", fileformat:=xlOpenXMLWorkbookMacroEnabled
End With
OTOH、.SaveAsファイル名に拡張子がありません。これをプログラムで行う場合は、1つ提供する必要があるかもしれません。 GUIインターフェースから拡張機能を提供する必要がないのは理にかなっていますが、プログラマーは明確なコードを書くことが期待されています。拡張機能と一致する形式を追加することをお勧めします。ファイル形式のリストについては、 このmsdnページ を参照してください。正直に言うと、説明についてはあまり認識していません。
xlExcel8 = 56は.xls形式です
xlExcel12 = 50は.xlsb形式です
xlOpenXMLWorkbook = 51は.xlsx形式です
xlOpenXMLWorkbookMacroEnabled = 52は.xlsm形式です
xlWorkbookDefaultはalsoの値51でリストされています。これは、デフォルトのフォーマットを変更できると思ったので困惑しています。
私はこれが古い投稿であることを知っていますが、似たようなものを探していました...あなたの問題は、Now()を使用すると、出力が「6/20/2014」になることだと思います...これはファイルの問題です名前に「/」が含まれているため。ご存知かもしれませんが、ファイル名に特定の記号を使用することはできません。
乾杯
1つのファイルで次のメソッドを正常に使用しましたが、
しかし、まったく同じエラーが再び発生します...最後の行のみがエラーになります
Newpath = Mid(ThisWorkbook.FullName, 1, _
Len(ThisWorkbook.FullName) - Len(ThisWorkbook.Name)) & "\" & "ABC - " & Format(Date, "dd-mm-yyyy") & ".xlsm"
ThisWorkbook.SaveAs (Newpath)
私は苦労していましたが、最終的には以下がうまくいきました!
Dim WB As Workbook
Set WB = Workbooks.Open("\\users\path\Desktop\test.xlsx")
WB.SaveAs fileName:="\\users\path\Desktop\test.xls", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False