17

フォーム ボタンをクリックすると、現在の日付のファイル名でブックのコピーを保存したい Excel ワークブックがあります。

私は次のことを試し続けています ActiveWorkbook.SaveAs ("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))が、受け取っていますRun-time error '1004': Method 'SaveAs' of object'_Workbook' failed.

誰でもこれで私を助けることができますか? 私はまだExcelの開発に非常に慣れていません。

4

8 に答える 8

26

アクセスしようとしているパスが存在しない可能性があります。相対的な場所に保存しようとしているようですが、その文字列にファイル拡張子がありません。相対パスを使用する必要がある場合は、パスを解析できますActiveWorkbook.FullName

編集:より良い構文も

ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal
于 2013-06-18T16:20:57.963 に答える
10

この機能を使用する最も簡単な方法は、「マクロの記録」から開始することです。記録を開始したら、ファイルを任意の場所に任意の名前で保存し、もちろんファイルの種類を設定します。ほとんどの場合、「Excel マクロ有効ワークブック」〜「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 -> サブをボタンに割り当てて実行します。[注意] 新しいワークブックはデフォルトの自動保存場所に保存されるため、このスクリプトが機能する前に保存ファイルを作成する必要があります。

于 2015-09-11T12:33:39.927 に答える
1

デフォルトの形式がファイル拡張子と一致しない可能性があります。ファイル名とともにファイル形式を指定し、形式が拡張子と一致することを確認する必要があります。

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 形式です

xlWorkbookDefault51 の値でリストされています。これは、デフォルトの形式を変更できると思っていたので、私を困惑させます。

于 2015-12-10T22:31:38.617 に答える
0

1つのファイルで次のメソッドを正常に使用し、

しかし、まったく同じエラーが再び発生します...最後の行だけがエラーになります

Newpath = Mid(ThisWorkbook.FullName, 1, _
 Len(ThisWorkbook.FullName) - Len(ThisWorkbook.Name)) & "\" & "ABC - " & Format(Date, "dd-mm-yyyy") & ".xlsm"
ThisWorkbook.SaveAs (Newpath)
于 2015-01-20T23:14:16.743 に答える
0

これは古い投稿であることは知っていますが、似たようなものを探していました... Now() を使用すると、出力が「6/20/2014」になるという問題があったと思います...これはファイルの問題です名前に「/」が含まれています。ご存知かもしれませんが、ファイル名には特定の記号を使用できません。

乾杯

于 2014-06-20T12:25:17.053 に答える