• ベストアンサー

VBAでエクセル保存方法

Excel2003のVBAで保存処理を下記のように行います。  Book.SaveAs ("ファイル名") しかし問題があり、ファイルを開くとVBAで記入更新したシートが 表れず別のシートが最初に表示されます。 一番最後に更新したシートを開いたときに表示される方法は ありますか? よろしくお願いいたします。

  • fm0606
  • お礼率13% (100/761)

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

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.1

お早うございます。 ファイルを更新する前に、一番最後に更新したシートをActiveにしてみてください。 Sheets("一番最後に更新したシート").Activate '←一番最後に更新したシートをActiveにしてからファイルを更新する Book.SaveAs ("ファイル名")

fm0606
質問者

お礼

お返事が遅くなり申し訳ございません。 実装し、問題なく動いております。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

最後にアクチブにしたシートが開かれたとき前面に出るはずです。 これで普通対処できるとおもいますが 他に 細かい要求があるなら ファイルー作業状態の保存というのがあります。 これの利用は考えられないですか。 VBAでは Book.SaveAs ("ファイル名") のほかに Book.SaveAs ("ファイル名.xlw") をあわせて行うのだと思います。 ダイアロウグで「作業状態の保存」 Application.Dialogs(xlDialogSaveWorkspace).Show もあります。

関連するQ&A

  • ExcelのVBAでブックの保存

    ExcelのVBAでブックを追加し保存を行っています。 その際、保存は、どこに行うのがよいのですか bookですか。sheetですか。 両方で、SaveAsができまが、使い分けがあるのでしょうか。 どのように使い分けするのでしょうか。 Workbooks.Add ActiveSheet.Name = "サンプル" ActiveSheet.SaveAs OutFileName ActiveWorkbook.SaveAs OutFileName ActiveWorkbook.Close

  • Perlでエクセルの「名前をつけて保存」ダイアログを表示する方法を教えてください

    PerlのWin32::OLEモジュールを使用してMS-Excelファイルを作成しています。 作成したExcelファイルを $book->SaveAs("ファイル名");のように記述して保存はできるのですが、 「名前を付けて保存」ダイアログボックスを表示して保存先を指定できるようにしたいのですが可能でしょうか? VBAでは、「Application.GetSaveAsFilename」で表示できるようですが、PerlのWin32::OLEモジュールでも同じように表示出来ないでしょうか?

  • Excel VBA で困っています。

    Excel VBA で困っています。 下記のプログラムで、「名前を付けて保存」→「キャンセル」 を選択した場合のエラーは回避できたのですが、 「名前を付けて保存」→「保存」→「同じ名前のファイルが既に ありますが置き換えますか?」→「いいえ(またはキャンセル)」 の時にエラーが出てしまいます。 どう直したら良いでしょうか。 よろしくお願いいたします。 Public Sub SaveBook() Dim myBook As Variant '「名前を付けて保存」ダイアログ myBook = Application.GetSaveAsFilename("test.xls", _ "Excelファイル,*.xls", , "Excelブックを保存") 'キャンセル時の処理 If StrConv(myBook, vbUpperCase) = "FALSE" Then Exit Sub 'ブックの保存 ActiveWorkbook.SaveAs Filename:=myBook End Sub

  • (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 ----------------------------------------------------

  • 【Excel VBA】1つのファイルにまとめる方法

    1つのフォルダの中に複数のExcelファイルが保存されています。 seat1だけを1つに集めたExcelファイルを新規で作成したいです。 ※シート1をどんどん追加させるイメージです。 ※フォルダの中に入っているExcelファイル数は毎月変わります。 手順(1)フォルダに入っているExcelシートを開く 手順(2)sheet1を【シートの移動またはコピー】新規BOOKにコピー 手順(3)フォルダに入っているExcel分繰り返す。 手順(4)シート名を変更する。    どういう風にVBAコードを記入すればいいかわからないので教えていただきたいです。どうぞよろしくお願いいたします。

  • Excel VBAを後ろで動かす方法

    VBAが書かれたEXCELのブックがあります。これは、一定時間ごとに処理を行います。その間、別のEXCELブックをひらいて、アクティブにしておきます。そして、VBAが書かれたEXCELファイルの一定間隔ごとの処理が呼ばれたときに、エラーメッセージが表示されます。 エラーメッセージ  実行時エラー 1004  RangeクラスのSelectメソッドが失敗しました。 エラー発生箇所  ThisWorkbook.Sheets("シート1").Range("A2:AZ")).Select エラー発生箇所の前に ThisWorkbook.Activate を入れるとエラーが発生しませんが、画面が切り替わってしまいます。 画面が切り替わらずに、処理を続ける方法を教えてください。 宜しくお願いします。

  • エクセルへのエクスポート

    ACCESS 2003 の VBA で下記の命令を実行してエクセルファイルをエクスポートします。 (環境はSQLserver2008、XP+ACCESS2003+EXCEL2003) DoCmd.OutputTo acOutputStoredProcedure, "テーブル名", acFormatXLS, "C:\ACCESS\テーブル名.xls" (1) 日付型(datetime)のフィールドの表示が「20-Dec-09」となってしまいます。 最初から「2009/11/20」と云う型でエクスポートできないのでしょうか? (2) エクスポートされたファイルを開いて保存するときに 「Excel 5.0/95 ブックです。最新の Excel のファイル形式に更新しますか?」 と表示されます。 (VISTA+Access2003+Excel2007は表示されません) 最初から2003のファイル形式でエクスポートする方法はありませんか?

  • EXCEL VBA 複数ブックを自動オープン

    お世話になります。田中と申します。 Excel VBAを使って下記(1)、(2)の処理を実現したいと思っております。 どなたかVBAロジックをご教授いただけませんでしょうか。 (1)集計.xlsxというブックがあります。このブックに[ファイル]というシートがありまして A1のパス、B1にファイル名が記入されています。 この組み合わせのファイル数は可変ですが下記のように大体10個程度あります。 A2(パス)+B2(ファイル名) A3(パス)+B3(ファイル名) A4(パス)+B4(ファイル名) A5(パス)+B5(ファイル名) ・・・ (2)このシートに[開く]というボタンを配置して、クリックされたらA1(パス)+B1(ファイル名)でファイルを開いて何もしないですぐに閉じて、次のファイルを開いて閉じて、また次のファイルを開いて閉じて。。という動きをファイル数分繰り返したいのです。 変な処理ですが、本Excelのリンクの値がリンク先のファイルを開かないと値が飛んでこないので、リンク先のファイルを開く処理を自動化したかったのです。 どなたかご教授いただけますでしょうか。 よろしくお願い致します。 環境 Excel2013

  • エクセル VBAによる名前を付けて保存?

    エクセルのVBAにて名前(本日日付&NO.)を付けてブックを保存 したいのですが下記のように書込作成しました。 ActiveWorkbook.SaveAs _ Filename:="C:\発注書\" _& "発注済" & Format(Date, "mm.dd")   & "(" & ".xls" 上記で 発注済(  までの名前を付けの保存は出来たのですが (  のあとに発注書シート内のセルU12にあるNOを入れたいのですが 色々試してみましたがコンパイルエラーが出てしまいます。 セルをどの様に指定すれば宜しいでしょうか?

  • VBAでも新規ファイル作成

    Excel2003です。 下記のコードであるシートを別ファイルにして保存するコードを書いています。ただ、このコードでは、コピー元のシートにExcel関数が入っているために、出来上がった新規ファイルを開くときに常に”リンクの更新”を聞かれてしまいます。リンクの更新をする必要はないのでファイルを開くたびに”更新しない”を選択してもよいのですが、初めからこの”リンクの更新”メッセージが出ないようにするには何か良い手立てはないでしょうか? ------------------------------------------------------------- Sub ファイル作成() '報告書を"名前を付けて保存" Sheets("Sheet1").Select Dim 既定ファイル名 As String Dim 保存ファイル名 As Variant 既定ファイル名 = "新規報告書" 保存ファイル名 = Application.GetSaveAsFilename(既定ファイル名, "Excel ブック(*.xls),*.xls") If 保存ファイル名 = False Then MsgBox "保存は中止されました。" Sheets("Sheet1").Select Else With ThisWorkbook.ActiveSheet Workbooks.Add .Copy After:=ActiveWorkbook.Sheets(1) Application.DisplayAlerts = False ActiveWorkbook.Sheets(1).Delete Application.DisplayAlerts = True ActiveWorkbook.SaveAs 保存ファイル名, xlNormal ActiveWorkbook.Close False End With Sheets("Sheet1").Select End If End Sub ---------------------------------------------------------------

専門家に質問してみよう