Word 2016 VBAで報告書を保存できない

このQ&Aのポイント
  • 仕事で月次報告をする際に、Wordのファイルで保存しようとしていますが、VBAを利用して保存してもエラーが発生します。
  • VBAのコードでファイル名を生成し、指定したパスにファイルを保存する方法を探しています。
  • SaveAsメソッドに問題があると思われますが、対処方法がわかりません。エラーを回避し、ファイルの保存先とファイル名を自動的に生成できるようなコードを教えていただきたいです。
回答を見る
  • ベストアンサー

Word 2016 VBA で保存できない

仕事で月次報告をするのですが、報告書が Word のファイルであり、ファイル名のパターンが決まっているため、VBA でファイル名を生成し、VBA のコードで指定したパスにファイル保存させたいと考えています。 そこで、いろいろと調べて以下のコードを作ってみたのですが、保存する際に [実行時エラー 5152: ファイル名が正しくありません] と表示されます。 試しに以下のコードのうち、ファイルの保存先のパスと保存するファイル名を & でつなぎ Msgbox で表示したところ、ファイルの保存先とファイル名は意図したとおりに生成されています。 SaveAs メソッドに問題があるのではないかと考えていますが、ちょっとこれ以上は私では対処することができませんでした。 恐縮ですが、エラーを回避し、意図したパスに自動的にファイル名を生成して保存できるようにするためのコードを教えていただきたく思っています。よろしくお願いします。 以下は私が作成したサンプルです。 ------------------------------------------------- Sub 保存() 'レポート対象月の取得 dtDate = Format(Date, "yyyymm") '保存先フォルダーの指定 dtSaveFolder = "C:\Users\UserName\Documents\" & Year(Date) & "\" 'ファイル名の指定 dtSaveFileName = "XXXX" & dtDate & "YYYY.docx" '保存の実行 ThisDocument.SaveAs FileName:=dtSaveFolder & dtSaveFineName, FileFormat:=wdFormatDocument End Sub -------------------------------------------------

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

  • ベストアンサー
  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

とりあえず一つ明らかな間違いを指摘しておくと dtSaveFineNameではなく dtSaveFileName でしょうね 今のままだと必ずファイル名が空になってしまいます。 変数名は手で書くのは絶対やめた方がいいですよ。必ずコピーをしましょう。 他にも間違いがあるかもしれませんがとりあえず。

yamadadennki
質問者

お礼

ありがとうございます! 明日出社してから確認してみます。

その他の回答 (1)

回答No.1

確認ですが dtSaveFolder = "C:\Users\UserName\Documents\" & Year(Date) & "\" の「UserName」は、実際のログインユーザ名になっていますか?

yamadadennki
質問者

補足

コメントありがとうございます。 ご指摘の点ですが、UserName は私のログインユーザー名になっています。 この場なので、ユーザー名はマスクしています。 よろしくお願いいたします。

関連するQ&A

  • VBA 新規作成したファイルを開くときにエラー

    すみません、助けてください。 Excel 2007のVBAでActiveWorkbook.SaveAsを使って 新規にExcelファイルを生成するものを作成しているのですが、 新たに作成したExcelファイルを開くときにエラー(警告)が出てしまいます。 (ファイル自体は開けるのですが。。。) ソースは以下です。 ------------------------------------------------------------ ' シート枚数を指定 Application.SheetsInNewWorkbook = 3 Workbooks.Add ' 上書き保存 Application.DisplayAlerts = False ' ファイル名を指定して保存 ActiveWorkbook.SaveAs (ThisWorkbook.Path + "\" + "新しいファイル.xls")

  • VBAでPDFを保存する

    Excel2013です。VBAでPDFで保存するコードを書きたいのですが、通常の名前をつけて保存のように保存先とファイル名をその都度変更できるウィンドウを出したいのですが、どのようにすればいいのでしょうか?保存先とファイル名をあらかじめ指定する方法はネット検索でヒットするのですが、そうでない方法が探せません。 以下は現在のコードです。 Sub PDF保存() ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "c:\\xxx.pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False End Sub

  • VBAでの疑問

    以下のようなコードを見ました。 Private Sub Workbook_BeforeClose(Cancel As Boolean) With ThisWorkbook Application.DisplayAlerts = False If .Name <> .FullName Then SaveAs Else Me.Saved = True End If Application.DisplayAlerts = True End With End Sub これは何のためのコードでしょうか? If .Name <> .FullName Then って、パスなしのBOOK名とパス付BOOK名が同じじゃないのは当然で、同じになるのは新規に作成したばかりで保存する前のファイルくらいしか思いつきません。これでは必ず上書きされてしまうと思いますが、どういう意図が考えられるのかお分かりの方教えていただけないでしょうか?

  • (VBA)特定のシートのみを名前を付けて保存

    Excel2003です。 数シートあるうちの特定のシートのみを別のbookとして「名前を付けて保存」する下記のコードを書きました。一応うまく動くのですが、実はこの特定のシートには行の非表示部分があります。しかし、下記のコードではもちろん非表示部分も開かれた状態で保存がされますよね。 この非表示の状態で保存するにはどのようにすればよいのでしょうか? 【以下現在のコードです】 ------------------------------------------------ Sub 名前を付けて保存() '報告書を"名前を付けて保存" Sheets("報告書").Select Dim 既定ファイル名 As String Dim 保存ファイル名 As Variant 既定ファイル名 = "報告書" 保存ファイル名 = Application.GetSaveAsFilename(既定ファイル名, "Excel ブック(*.xls),*.xls") If 保存ファイル名 = False Then MsgBox "保存は中止されました。" Else With ThisWorkbook.ActiveSheet Workbooks.Add .Cells.Copy ActiveSheet.Range("A1") ActiveWorkbook.SaveAs 保存ファイル名, xlNormal ActiveWorkbook.Close False End With Sheets("報告書").Select Range("A1").Select MsgBox "報告書を作成しました。" End If End Sub ----------------------------------------------------

  • シンクライアントでのVBAによるファイル保存

    ExcelのテンプレートファイルにVBAマクロを記述しています。 VBAにより新しいブックを開き、データを作り込んだ後、テンプレートファイルが置かれているフォルダに保存するマクロを作成しました。 リッチクライアント上では問題なく動くのですが、シンクライアント上で実行すると、  ActiveWorkbook.SaveAs Filename:='フルパスのファイル名'  ※フルパスのファイル名は、"C:\folder\file.xlsx"というような形式になっています。 のところでエラーになってしまいます。 パス付きのファイル名について、作法があるようでしたらお教えいただけますか。 よろしくお願い致します。

  • ワード2000のVBAについて

    ワード2000を使っています。 VBAで、ダイアログボックスを開き、指定したファイルのファイル名をフルパスで取得したいのですが、下記のコードでは、ファイル名しか取得できません。 どのようにしたら、フルパスを取得できるのでしょうか? たびたびすみませんが、誰か教えてください。 Dim Name With Dialogs(wdDialogFileOpen) If .Display = -1 Then Name = .Name End If End With MsgBox ("ファイル名は" & Name & "です。")

  • word VBA ファイル名 保存

    wordで作成したファイルの最初の第1行名をファイル名として、名前を付けて保存できるマクロを作りたいのですが、うまくいきません。 Sub 保存() Dim ファイル名 As Variant ファイル名 = ActiveDocument.Paragraphs(1) & ".docx" ActiveDocument.SaveAs FileName:=(ファイル名), FileFormat:= _ wdFormatXMLDocument End Sub ではだめなのですが、どなたか添削よろしくお願いします。困っております。なにぶん初心者ですので基本的な文法のミスかもしれないですが、うまくいきません。

  • 保存場所を指定する(VBA)

    エクセルでVBAを使用し、業務書類を作っていますが、 書類を保存する際に、指定場所に自動で保存させたいと思っています。 現在使用しているものは、下記の通りですが、 これでは、元ファイルと同じ場所に保存されてしまうので 元ファイルを削除されてしまうなどの恐れがあります。 そこで、フォルダを作りそのフォルダに自動的に保存したいと 思っています。フォルダは元ファイルがある下に作りたいと思います。 宜しくお願いします。 下記現在のものです。 Sub 保存() タイトル = "確認" メッセージ = "ファイルを保存します。よろしいですか?" スタイル = vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal yesno = MsgBox(メッセージ, スタイル, タイトル) If yesno = vbYes Then Sheets("新築").Select パス = ActiveWorkbook.Path 別名 = Application.InputBox(prompt:="拡張子(.xls)は不要です", _ Title:="保存用のブック名を入力してください", Type:=2) ' 別名 = パス & "\" & 別名 & ".xls" Sheets(Array("見積新築")).Copy ActiveWindow.DisplayWorkbookTabs = False ActiveWorkbook.SaveAs Filename:=別名 ActiveWorkbook.Close MsgBox "書類を保存しました。", vbInformation, "保存完了" End If End Sub

  • VBA 名前を付けて保存の方法について

    VBAのコードにて名前を付けて保存のやり方ができません。 現在開いているファイルを 名前を付けて保存したいのですが ファイルの指定方法が間違っているのか保存できません。 やりたいこと 現在開いているファイル内のシート(設定画面)の A1セルとA2セルの文字を "G:¥●エクセル¥ソフト¥計画"のドライブにて 保存する(A1セルとA2のセルの文字をくっつけて名前を付けて保存したい) 例:元のbook1のファイル名をA1セルとA2セルの文字をくっつけた   名前にしてから保存したい。 保存先のドライブの指定方法が分からなかったため マクロの記録にてそのドライブへ名前を付けて保存してみて ドライブの名前の指定をしました。(この方法も間違っていますか?) コードを下記に記載しています。 すいませんがうまく動くコードを記載してもらえると 助かります。 回答よろしくお願いします。 Sub macro1() Dim wb As Workbook Dim ws As Worksheet Dim hozonPath As String Dim FolName As String Dim FilName As String Set wb = ThisWorkbook Set ws = Worksheets("設定画面") hozonPath = "G:¥●エクセル¥ソフト¥計画" FolName = ws.Range("A1").Value FilName = ws.Range("A2").Value wb.SaveAs fileName:=hozonPath & FolName & "¥" & FilName End Sub

  • 同じフォルダーに保存したい。

    報告書.xlsを一部加工後に実行するVBマクロで教えてください。同じフォルダー内で報告書.xlsを上書き保存しさらに4個のsheet(報告書、詳細、依頼書、関連写真)の内、2個のsheet(依頼書、関連写真)を削除した後にsheet(報告書)のセル"Z1"の名前で保存すべく作成したのですが(Z1).xlsが同じフォルダーに作成できません。マイドキュメントに出来てしまいます。 Sub Macro2() Dim strFilePath As String Dim strFileName As String Dim flg As Boolean '◆保存するパスの設定 strFilePath = ThisWorkbook.Path & "\" '◆保存するファイル名の指定 Application.DisplayAlerts = False strFileName = "報告書" ThisWorkbook.SaveAs strFilePath & strFileName Sheets("関連写真").Select ActiveWindow.SelectedSheets.Delete Sheets("依頼書").Select ActiveWindow.SelectedSheets.Delete Sheets("報告書").Select strFilePath = ThisWorkbook.Path & "\" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=ActiveSheet.Range("z1").Value End Sub

専門家に質問してみよう