エクセル マクロ ファイルの再起動

このQ&Aのポイント
  • エクセルのマクロでネットワークプリンターにワークシートを出力するコードで、リソース不足が発生する問題があります。
  • 保存しないで終了するとリセットされることが分かっていますが、同じファイルを再度開くことはマクロで可能でしょうか?
  • 質問者は新しい方法を探しており、アドバイスを受けたいと思っています。
回答を見る
  • ベストアンサー

エクセル マクロ ファイルの再起動

ネットワークプリンター2台にワークシートを出力するコードで悩んでいます。 下記のコードを繰り返すと110枚前後でリソース不足が発生することが分かりました。 保存しないで終了し再度開くとリセットされることも分かりました。 保存しないで終了は出来るのですが、同じファイルを再度開くことはマクロで出来ますか? 宜しくお願い致します。 =================================== '全ての Book を保存しないで閉じる '最後に Excel も終了する Sub excel_Quit() Dim w As Workbook '全ての Book を保存したことにする (保存はしない) For Each w In Workbooks w.Saved = True Next 'Excel を終了する Application.Quit 'Book を閉じる ThisWorkbook.Close False End Sub ============================== Sub チェンジプリンター() '印刷切り替え処理 If Worksheets("DeviceRead-Write").Cells(6, 13).Value = 1 Then 'I6 が1ならEPSON_Aに印刷する(D10000上位2ビットが1) プリンターA出力 ElseIf Worksheets("DeviceRead-Write").Cells(6, 13).Value = 2 Then 'I6 が1ならEPSON_Bに印刷する(D10000上位2ビットが2) プリンターB出力 Else DoEvents End If End Sub Sub プリンターA出力(): 'プリンターAに印刷 Application.ActivePrinter = "EPSON_A on Ne01:" 'プリンターAを指定 Worksheets("form").PrintOut 'シートFormの印刷 Exit Sub End Sub Sub プリンターB出力(): 'プリンターBに印刷 Application.ActivePrinter = "EPSON_B on Ne00:" 'プリンターBを指定 Worksheets("form").PrintOut 'シートFormの印刷 Exit Sub End Sub

  • mgm_0
  • お礼率71% (5/7)

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

閉じる前に保存する場合は、該当処理wコメントアウトしてください。 ■VBAコード Public Sub sample()   '上書き保存(必要であればコメントアウトを外してください)   'ThisWorkbook.Save   Application.OnTime Now, "OpenBook"   ThisWorkbook.Close End Sub Private Sub OpenBook()   ThisWorkbook.Activate End Sub

mgm_0
質問者

お礼

早速のアドバイスありがとうございます。 再起動出来ました。 こんなに簡単なコードで出来るなんて思ってもいませんでした。 本当にありがとうございます。 この1週間悩み続けましたのですっきりしました。

関連するQ&A

  • EXECL VBAにて自動印刷100枚でフリーズ

    フィリーズの原因 とりあえず、アクティブプリンターのみで印刷を連続すると異常なし 交互に印刷すると今度はリソース不足が出ました。 最後に、EPSON LPプリンターのみに連続印刷でやはりリソース不足が出ました。 どうもアクティブプリンターからの切替でリソースを必要としているみたいですが 対策はをご教示下さい。 ======================================== Sub チェンジプリンター() '印刷切り替え Dim myPrinter As String myPrinter = Application.ActivePrinter '現在のプリンターを記憶 If Worksheets("DeviceRead-Write").Cells(6, 13).Value = 2 Then 'I6が2ならEPSON_2プリンターに印刷する Application.ActivePrinter = "EPSON_2 on Ne00:" 'プリンターを切り替える ActiveSheet.PrintOut 'シートFormの印刷 Application.ActivePrinter = myPrinter 'プリンターを元に戻す End If If Worksheets("DeviceRead-Write").Cells(6, 13).Value = 1 Then 'I6が1ならEPSON LPプリンターに印刷する ActiveSheet.PrintOut 'シートFormの印刷 End If End Sub ==========================================

  • マクロでネットワーク経由の印刷をしたいのですが

    Excel2002を使用しています。2人の人間が各々のPCから 指定のプリンター(通常使うプリンターではない)で 印刷出来るようにしたいのですが、うまくいきません。 プリンターが接続されている「山田太郎」は印刷出来るのですが、 ネットワークを介している「田中花子」は、通常使うプリンターから 出力されてしまいます。 何が原因なのか、ご教授願います。 Sub 印刷確認() タイトル = "印刷確認" メッセージ = "今日の日付で印刷してよろしいですか?" スタイル = vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal yesno = MsgBox(メッセージ, スタイル, タイトル) If yesno = vbYes Then ユーザー名 = Application.UserName Select Case ユーザー名 Case "山田太郎" プリンター = "EPSON PM-840C on Ne03:" Case "田中花子" プリンター = "\\yamada\EPSON PM-840C on Ne0:5" End Select   Application.ActivePrinter = プリンター   ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _   プリンター, Collate:=True ThisWorkbook.Worksheets("住所録").Select Range("A3:A10000").ClearContents End If    Range("G14,I14").ClearContents Exit Sub End Sub

  • Execl VBA UserForm1の印刷先

    Execl VBA UserForm1の印刷先を変更したいのですが Execl VBAで困っています。 UserFormの印刷を条件を変えてプリンター1とプリンター2に振り分けたいのですが ネットを検索してもいい方法が見つかりません。 UserFormはOSのプリンターを参照するため思うように印刷できません。 一度下記を試しましたが、試通常使うプリンターでしか印刷出来ません UserFormのプリンター切替方法のご伝授宜しくお願い致します。 =========================================== Sub チェンジプリンター() Dim myPrinter As String myPrinter = Application.ActivePrinter '現在のプリンターを記憶 If Worksheets("DeviceRead-Write").Cells(6, 11).Value = 2 Then 'I6が2ならEPSON_2プリンターに印刷する Application.ActivePrinter = "EPSON_2 on Ne02:" 'プリンターを切り替える Range("A4").Value = Application.ActivePrinter 'プリンターの確認 UserForm1.PrintForm 'フォームの印刷 Application.ActivePrinter = myPrinter 'プリンターを元に戻す Range("A2").Value = Application.ActivePrinter 'プリンターの確認 End If If Worksheets("DeviceRead-Write").Cells(6, 11).Value = 1 Then 'I6が2ならEPSON_1プリンターに印刷する Range("D2").Value = Application.ActivePrinter 'プリンターの確認 UserForm1.PrintForm 'フォームの印刷 End If End Sub

  • エクセルのマクロで・・・

    初心者のためどうして良いのかわかりません。 教えてください。 設定したい内容は、 ◇ sheet名"入力"にあるボタンキーをクリックすると、非表示のsheet名"出力"を呼び出し印刷する。 ◇ 印刷条件として、sheet"出力"は3枚のページ(範囲A1-Q37,A38-Q74,A75-Q111)があるが、 2ページ目は"D41"、3ページ目は、"D78"がブランクなら印刷しない。 とりあえず、下記コードで印刷だけはできるようにはなったのですが、"出力"が、「visible=false」だとエラーが起きます。 Sub 出力へ() Dim vbyesno As Integer vbyesno = MsgBox("印刷します", _ vbOKCancel, "明細表") If vbyesno = vbOK Then Worksheets("出力").PrintOut Else Worksheets("入力").Select End If End Sub ここからどうアレンジしていけばいいのでしょうか? アドバイスだけでも結構ですので宜しくお願い致します。

  • まいと~くFAX エクセルマクロ

    初心者です。 まいと~くCOLORFAXでサンプルファイルを使用していたのが、 別のパソコンで使えなくて困っています。 OS・Excel2003で同じですが、FAX6や8PROでは、 A1に入力した送信先に送信出来ません。 何処を直せば良いか教えて頂きたくお願い致します。 Sub FAX送信() If Cells(1, 1) = 0 Then MsgBox ("A1にダイアル先") Exit Sub End If Set MfRemote1 = CreateObject("MFREMOTE.MfRemoteCtrl.1") '「FAX」の起動 intResult = MfRemote1.Connect '送信先設定 intResult = MfRemote1.SendTo(Cells(1, ), "dummy:name", "dummy:title", "dummy:Company") '送付状無 blnResult = MfRemote1.CoverPage("") 'ドライバ名取得 strNewPrinter = MfRemote1.GetPrinterName strNewPort = MfRemote1.GetPrinterPort strOldPrinter = Application.ActivePrinter '2000のプリンタ設定方法は他のバージョンとは異なる If Application.Version = "9.0" And Application.Build = "2823" Then 'Excel 2000初期バージョン(SRなし) strNewPrinter = strNewPort & " の " & strNewPrinterElse strNewPrinter = strNewPrinter & " on " & strNewPort 'Excel97、Excel2000SR1 End If Application.ActivePrinter = strNewPrinter On Error Resume Next '印刷 Worksheets("明細表").PrintOut Application.ActivePrinter = strOldPrinter MfRemote1.DisConnect Rem For intCount = 0 To lstSendTo.ListCount - 1 Rem lstSendTo.Selected(intCount) = False Rem Next intCountEnd Sub End Sub

  • エクセルのマクロについて

    お世話になります。エクセル2007のマクロについてですが、「A」というBOOKがありその中の任意のセルをクリックするとハイパーリンクで「B」というBOOKが開くようになっています。 ここで「B」が開いた時点で自動的に「A」を保存しないで終了させたいのですが、マクロの組み方がわかりません。 Sub Sample1() Workbooks("BookA.xlsx").Close End Sub と記述するとBook Aが閉じるのは調べてわかったのですが、ハイパーリンクでBが開いた時点でこのマクロを動かすようにするにはどうしたらいいのでしょうか?何か別の方法があるのでしょうか? 宜しくお願いします。

  • エクセルのマクロで。

    エクセルでマクロを組もうと思ったのですが 素人なので進みません。 何が悪いかも判りません。 教えてください。<(_ _)> 単純にシート入力のB1列のデーターの数を数えて シート出力のJ1にその数を入れるだけなんですが・・・。(T_T) Sub Macro1() ' ' Macro1 Macro ' ページ = Worksheets("入力").Range("B1").CurrentRegion.Row.Count Worksheets("出力").Range("J1") = Count End Sub 「ページ = Worksheets("入力").Range("B1").CurrentRegion.Row.Count」 ディバグすると上記の所で「オブジェクトが必要です」とエラーが出ます。 頭も爆発寸前です。(>_<)

  • エクセルで簡単なマクロを組んだのですが…。

    連続印刷を行う簡単なマクロを組んだのですが、指定行を変更しても1行目からまた印刷されてしまうのですがどうしてでしょうか?ちなみにこんなマクロです。 'リストを1行1枚の伝票形式で印刷するマクロ Sub 個票発行() Worksheets("個票").Activate Dim 個票カウンタ As Integer For 個票カウンタ = 1 To _ Application.WorksheetFunction.CountA(Worksheets("一覧表").Range("A1:A88")) Range("B1") = 個票カウンタ 印刷 Next 個票カウンタ End Sub よろしくお願いいたします。マクロ初心者です。

  • マクロExcel2003日付を付けてファイルを保存

    Excel2003でマクロを利用して、日付を付けた形でファイルを保存するようにしたいです。 条件としては、 (1)ファイルをz:\に「【ここに日付を八桁で保存】File1.xls」とする 例えば、20111127File1.xls (2)上書きする場合も、確認をせずに強制的に保存 (3)保存が終わったら、強制的にExcel2003を終了する という具合に書きたいです。 マクロの保存でやってみてわかっている所まで書きました。 Sub SaveEnd() ActiveWorkbook.SaveAs Filename:="Z:\【????】file1.xls", FileFormat:=xlNormal   【上書き保存で、確認をしない】   【Excel2003の強制終了】 End Sub どのように調べれば良いかも含めて、ご指導をいただければ幸いです。

  • Excelのマクロについて

    マクロ超初心者のものです。 Sub 印刷() Worksheets("縦背表紙").PrintOUT End Sub 上記のような、マクロを使い印刷をしているのですが、なぜか違うプリンタをを使用しているPCに、このマクロの入っているExcel実行すると書式が変更され当初設定した1枚の用紙に印刷されません。 ここで質問なのですが、各種プリンタを使用したPCどれでも対応できるようなページ設定を固定できるようなマクロを上記のマクロに挿入したのですが可能なものでしょうか? ちなみに、当初設定したページ設定は、ページの拡大縮小印刷が70%、余白が上0.5、下0.5、左1.0、右2.0、ヘッダー0.8、フッター0.8で設定しました。 乱文で申し訳ありませんが、超初心者にアドバイス等よろしくお願いいたします。

専門家に質問してみよう