• 締切済み

Excel VBA で 保存

VBAマクロで 終了ボタンを押した時に あるシートを削除をし TEST2 と言う名前で保存したいのですが 保存したシートを開こうとすると強制終了してしまいます。どなたか詳しい方ロジックを見ていただけませんか?よろしくお願いします。 ちなみに Excel2000 です。 以下ロジック Dim fs As Object Dim w As Object strWK_SaveBmnFile = "c:\TEST2.xls" '' ------------------------------ '' strWK_SaveBmnFile ファイルの存在チェック '' ------------------------------ Set fs = CreateObject("Scripting.FileSystemObject") If fs.FileExists(strWK_SaveBmnFile) Then Kill strWK_SaveBmnFile End If Set fs = Nothing Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=strWK_SaveBmnFile, _ FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False Windows("TEST2.xls").Activate Worksheets("DATA1").Select ActiveWindow.SelectedSheets.Delete Worksheets("DATA2").Select ActiveWindow.SelectedSheets.Delete ActiveWorkbook.Save Application.Quit

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

このコードを実行した後、ブック[TEST2.xls]には DATA1、DATA2以外にシートが残っているのでしょうか?

関連するQ&A

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

    報告書.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

  • VBA 同じ場所に保存する

    部署ごとに分割し、ブックで保存するコードです。 保存場所がデスクトップになっています。 これを同じ場所に保存する方法をお知らせください。 よろしくお願いします。 Sub macro1() Dim w As Worksheet Dim n As Long Dim r As Long Dim s As String Dim WSH As Variant Dim myPath As String Set w = ActiveSheet n = Worksheets.Count Application.ScreenUpdating = False On Error GoTo errhandle For r = 2 To w.Range("A65536").End(xlUp).Row s = w.Cells(r, "A") w.Rows(r).Copy Worksheets(s).Range("A65536").End(xlUp).Offset(1) Next r On Error GoTo 0 Set WSH = CreateObject("Wscript.Shell") myPath = WSH.specialfolders("Desktop") & "\" For r = Worksheets.Count To n + 1 Step -1 Worksheets(Worksheets.Count).Copy ActiveSheet.Columns.AutoFit ActiveWorkbook.SaveAs Filename:=myPath & ActiveSheet.Name ActiveWorkbook.Close False Application.DisplayAlerts = False Worksheets(Worksheets.Count).Delete Application.DisplayAlerts = True Next r w.Select Exit Sub errhandle: Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = s w.Rows(1).Copy Range("A1") Resume Application.ScreenUpdating = True End Sub

  • Excel ファイルに保存すると実行時エラーになる

    こんにちは。宮本と申します。VB6(SP5)で、 プログラミングをしております。 下記の様にプログラミングをしましたが、どうしても [実行時エラー’1004’ test_1.xlsにアクセスできません]と、なります。 c:\test.xls は、元々ある事を前提とし、c:\test_1.xlsに上書きをしたいのです。 宜しくお願い致します。 Dim wApp As Excel.Application Dim wExl As Object Set wApp = CreateObject("Excel.Application") Set wApp = CreateObject("Excel.Application") Set wExl = wApp.Workbooks.Open("c:\test.xls") wExl.Worksheets(1).Cells(1, 1).Value = 3000 wExl.Application.Visible = False wExl.Application.DisplayAlerts = False wExl.SaveAs "c:\test_1.xls" <---ここで、エラー

  • エクセルVBAでのエラー

    おはようございます。 昨日ここでいろいろ教えていただき、300のエクセルファイルから特定の範囲のデータ抽出方法を書いてみたのですが、セルが多すぎて実行できません、というエラーがでてしまいます。 これはどのように解消すればよろしいのでしょうか? Sub Test() Dim FPath1 As String, FPath2 As String Dim FName As String, myBook As String Const startROW As Long = 14, lastROW As Long = 20 Const startCOL As Long = 8, lastCOL As Long = 10 Const shtNAME As String = "sheet1" Application.ScreenUpdating = False FPath1 = "D:\MR5567\" FPath2 = "D:\New Microsoft Excel Worksheet\" Workbooks.Add myBook = ActiveWorkbook.Name FName = Dir$(FPath1 & "*.xls") Do While FName <> "" Workbooks.Open Filename:=FPath1 & FName ActiveWorkbook.Sheets.Select Sheets(1).Activate Sheets.Copy After:=Workbooks(myBook).Sheets(Sheets.Count) Workbooks(FName).Activate Application.DisplayAlerts = False ActiveWorkbook.Close FName = Dir$ Loop ActiveWorkbook.SaveAs Filename:=FPath2 & "Renketsu.xls", FileFormat:=xlNormal ActiveWorkbook.Close Application.ScreenUpdating = True End Sub

  • エクセルのVBAで指定フォルダにアクセスしてくれません。

    下記のような流れでVBAを作成したところ、xls形式でダイアログを指定する際に指定のフォルダにアクセスしてくれません。記述がおかしいのでしょうか。教えてください。 '**************************************** 'ダイアログ表示(csv形式) Dim MyFileA As String MyFileA = "c:\test\bonaplus" & Format(Date, "yyyymmdd") Sheets("test").Copy Application.DisplayAlerts = False 'arg2:=6(csvファイル形式) Application.Dialogs(xlDialogSaveAs).Show arg1:=MyFileA, arg2:=6 ActiveWindow.Close Application.DisplayAlerts = True 'ダイアログ表示(xls形式) Sheets("data").Select Range("A1").Select Dim MyFileB As String MyFileB = "c:\test\bonaplus" & Format(Date, "yyyymmdd") Application.DisplayAlerts = False 'arg2:=1(xlsファイル形式) Application.Dialogs(xlDialogSaveAs).Show arg1:=MyFileB, arg2:=1 'ActiveWindow.Close Sheets("data").Select Range("A1").Select MsgBox "c:\testにファイルが作成されました。" ThisWorkbook.Close Application.DisplayAlerts = True '**************************************** *************マクロの説明始***************** 指定フォルダにcsv形式でダイアログを表示させる 指定フォルダにxls形式でダイアログを表示させる エクセルを閉じる *************マクロの説明終*****************

  • エクセルVBA

    よろしくお願いいたします。 エクセルのVBAですが、下記のコードを実行すると処理が遅いです。処理が早くなるコード教えてください。 よろしくお願いいたします。 Sub Macro3() Dim aa As Variant Dim i As Variant Application.ScreenUpdating = False Range("A14:i46").Select aa = ActiveSheet.Name ActiveWorkbook.Worksheets(aa).Sort.SortFields.Clear ActiveWorkbook.Worksheets(aa).Sort.SortFields.Add Key:=Range("B15:B46"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets(aa).Sort.SortFields.Add Key:=Range("C15:C46"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets(aa).Sort .SetRange Range("A14:i46") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With For i = 0 To 31 Cells(15 + i, 7).Select If Selection.Value = 0 Then Selection.EntireRow.Hidden = True End If Next i Range("A1").Select Application.ScreenUpdating = True End Sub

  • ACCESSのVBAにてExcelのシートをコピーしたい

    入庫.xlsに現在、"原紙"というシートがあります。 入庫.xlsには、"原紙"と入庫のあった日のシートがあるようにしたいのです。 今日、入庫があれば、入庫.xlsには "原紙"と"20"のシートが存在するようにしたいのです。 AccessのVBAにて1文でシートのコピーってできないでしょうか? Dim oApp As Object Dim StWk1 As String Dim SHizk As String Dim Hizk As Integer Hizk = DatePart("d", Me![入庫日付]) SHizk = CStr(Hizk) StWk1 = "c:入庫.xls" Set Xls = GetObject(StWk1) Xls.Application.Windows(1).Visible = True Xls.Application.worksheets("原紙").Copy After:=Xls.Application.worksheets(SHizk) Xls.Application.worksheets(SHizk).Activate 上記のように作成してみたのですが、実行すると、 Xls.Application.worksheets("原紙").Copy After:=Xls.Application.worksheets(SHizk) のところで、エラーになります。 実行エラー'9': インデックスが有効範囲にありません。 のメッセージが表示されます。 教えてください。

  • ExcelのVBAでブックを保存

    住所録Aと住所録Bがあります。 AとBを比較して、差異をを別ファイルに出力しようとしています。 比較元となるファイルは、AでもBでもかまいません。 比較、判定、ファイルへの出力部分は、省略していますが、保存 する場合は、どこに行うのがよいのですか bookですか。sheetですか。 両方で、SaveAsができまが、使い分けがあるのでしょうか。 どのように使い分けするのでしょうか。 書き方、使い方のおかしいところを指摘して頂くとありがたい です。 --------------------------------------------------------------------------------------------------- Option Explicit Sub test() Dim ret As Integer Dim row1 As Long Dim col1 As Long Dim row2 As Long Dim col2 As Long Dim myRtn As Boolean Dim fno1 As String Dim fno2 As String Dim OutBook As New Workbook Dim OutSheet As New Worksheet Dim OutFileName As String Dim cnt As Integer Dim I As Integer ret = MsgBox("処理を開始します。" + Chr(13) + Chr(10) + "よろしいですか。?", _ vbYesNo + vbQuestion) If ret = vbNo Then End End If myRtn = Application.Dialogs(xlDialogOpen).Show If myRtn = False Then MsgBox "[キャンセル]が選択されました" & vbCr & _ "処理を終了します" Exit Sub End If fno1 = Application.ActiveWorkbook.Name myRtn = Application.Dialogs(xlDialogOpen).Show If myRtn = False Then MsgBox "[キャンセル]が選択されました" & vbCr & _ "処理を終了します" Exit Sub End If fno2 = Application.ActiveWorkbook.Name Set OutBook = Workbooks.Add Set OutSheet = ActiveSheet OutBook.Worksheets(1).Name = "テスト" OutFileName = "テスト.xls" With Application.Workbooks(fno1).Worksheets(1) row1 = 1 col1 = 1 cnt = 1 Do While .Cells(row1, 1) <> "" 処理 (省略) Loop End With MsgBox "処理が終了しました。", vbOKOnly + vbInformation, "確認" Application.Workbooks(fno1).Close Application.Workbooks(fno2).Close OutSheet.SaveAs Filename:=OutFileName OutBook.SaveAs Filename:=OutFileName OutBook.Close End Sub --------------------------------------------------------------------------------------------------- OutSheet.SaveAs Filename:=OutFileName or OutBook.SaveAs Filename:=OutFileName のどちらでも保存ができます。 また、書き方、使い方のおかしいところを指摘して頂くとありがたいです。

  • VBAのコピー

    VBAのコピー Dim xls As New Excel.Application Dim wbk As New Excel.Workbook Dim sh3 As Worksheet Set sh3 = Worksheets("全") sh3.Activate sh3.Range("A1:Z65536").Select Selection.Clear Set wbk = xls.Workbooks.Open("\\***.***.*.***\管理\全データ抽出.xls") wbk.Worksheets("全").Activate 'ワークシートをアクティブにする wbk.Worksheets("全").Range("A1:Z65536").Copy 'コピーする 'ActiveSheet.Paste Destination:=Worksheets("全").Range("A1") '貼り付ける Worksheets("全").Range("A1").PasteSpecial Paste:=xlPasteValues wbk.Close SaveChanges:=False 'Worksheets("メイン").Cells(1, 1).Select を実行すると 『wbk.Close SaveChanges:=False』のところで クリップボードに大きな情報があります。・・・・ と言うメッセージがでて必ずとまってしまうのですが メッセージをでないようにしたいのですが 教えてください。お願いします。

  • エクセル VBA

    印刷ページを指定して印刷したいのですが 以下の文章だと何処が間違いなのでしょうか。 Windows("あああ.xls").Activate Sheets("かかか").Select Dim c As Integer c = Range("A1").Value Sheets("さささ").Select ActiveWindow.SelectedSheets.PrintOut From:=1, To:=c, Copies:=1, Collate _ 仕事で詰まってしまいました。 自分のPC(エクセル2000)だと動くのですが、 他のPCへメールで飛ばしたら 最後の文章でエラーが出るそうなんですが。