• ベストアンサー

Vistaでエクセルのマクロがエラーになります

XPのSP3でエクセル2000を使っていました。 今回、Vistaに替えて、今まで使っていたエクセル2000をインストールしました。 ワークシートの印刷はUSBで接続したエプソンG700で可能なのですが、下記のVBAを実行する時点でエラーとなり、「マイクロソフトエクセルで問題が発生しました」と表示され、エクセルそのものが終了してしまいます。 If kensu <= 23 Then Range("l39:r82").Select ActiveSheet.PageSetup.PrintArea = "l39:r82" ActiveWindow.SelectedSheets.PrintOut copies:=2 End If 印刷は、条件によりこの Range 以外のセル範囲も選択して印刷します。 このVBAが動かないので、日常事務が出来なくなっています。 止む無くXPを再度登場させ、使わざるを得ない状況に追い込まれています。 解決策をご教示頂きたく、お願いします。

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

  • ベストアンサー
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

マクロの自動記録で得られたコードをそのまま使っているように思われます。 変数もありますが。 2007でマクロの自動記録してみてコードを改造してはいかがでしょう? ※提示されているのはコードの一部だと思いますので、全部提示されたほうが 解決への早道だと思います。

taneyan
質問者

お礼

marbinさん、有難うございました。 出張しておりまして、お礼が遅れて申し訳ありません。 マイクロソフトの20周年記念パッケージのoffice2007を1万円ほどで入手できましたので、折角お教え頂いたVBAの書き換えを行わずにエクセル2007を導入してしまいました。 具体的なアドバイスを頂き、試した上でお礼を申し上げようと思っておりましたが、急な出張が入り、試す余裕がありませんでしたことをお詫び申し上げます。又何かありましたら、是非アドバイスをお願い申し上げます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

プリンタードライバーは、Vista版になってますか? まだなら、下記URLからVista用をダウンロードしてみましょう。 それで今回の件が解決するかどうかは別にして、 やはりOSに対応したものでないと。。。   http://www.epson.jp/dl_soft/list/1619.htm 対応済なら見なかったことに。。(^^;;;  

taneyan
質問者

お礼

有難うございます。プリンターは対応しました。正常に動きます。 VBAでのプリントが出来ません。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 http://www.microsoft.com/japan/office/previous/xp/evaluation/platform/office2000.mspx Microsoft Office 97、2000 の各 OS での対応表 動作保証しないという答えは、身もフタもないのですが、あちこちのサイトをみると、みなさん、Vista の、Excel2000でハングを出しながら頑張っているようです。そのマクロコードは記録マクロを起こしたような内容で、きちんとしたコードではないけれど、Vistaでも、そのコード自体はエラーを出すはずはないです。メーカー側の意図のままに、アップグレードせよとは言いませんが、今のままでは解決は難しいかな、と思います。(OSとアプリが同じ会社だから、このようなことになるのだと思いますが、いつまでこういうことが続くのでしょうね。)

taneyan
質問者

補足

有難うございます。対応表は見ました。しかし、いろいろネットで見るとエクセル2000を使ってらっしゃる方も多いようでしたので、2007を買わずに済ませました。 XPにダウングレードした方がよかったのかと悔やんでいます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル2007 印刷マクロ

    A1からE25までを印刷したいのですが,現在このようにしています。 ActiveSheet.PageSetup.PrintArea = "$A$1:$E$12" ActiveWindow.SelectedSheets.PrintOut Copies:=1 ActiveSheet.PageSetup.PrintArea = "$A$13:$E$25" ActiveWindow.SelectedSheets.PrintOut Copies:=1 これを,ActiveSheet.PageSetup.PrintArea = "$A$1:$E$25" にすると,1枚目と2枚目の区切りが自分の思うようになりません。 改ページプレビューを使って,ページ区切りを設定するのではなく, マクロで何とかしたいと考えています。 1枚目はA1:E12,2枚目はA13:E25に固定する方法を教えて下さい。

  • エクセル2007 メッセージボックスについて教えて下さい

    セルA1に"1"が入れば"b10~m60"を印刷(1ページ分)、 同様に、"2"が入れば"b61~m110"(2ページ分)、"3"が入れば"b111~m160"(2ページ分)を印刷する マクロボタンがあります。 現在、印刷を実行する前にメッセージボックスで「印刷します」→「OK」「キャンセル」の確認をしていますが このメッセージに、セルA1に入れた数値で確認したいのですができるでしょうか?? 例)セルA1="1"→MsgBox「1ページ印刷します」    セルA1="2"→MsgBox「2ページ印刷します」 分かりづらい説明で申し訳ありません。よろしくお願いします。 ↓現在の記述↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Sub test() If MsgBox("印刷します", vbOKCancel) = vbCancel Then Exit Sub End If Select Case Range("a1").Value   Case "1" ActiveSheet.PageSetup.PrintArea = "b10:m60" ActiveWindow.SelectedSheets.PrintOut Copies:=1  Case "2" ActiveSheet.PageSetup.PrintArea = "b61:m110" ActiveWindow.SelectedSheets.PrintOut Copies:=1   Case "3" ActiveSheet.PageSetup.PrintArea = "b111:m160" ActiveWindow.SelectedSheets.PrintOut Copies:=1  End Select End Sub

  • エクセルVBA実行後にファイルを自動で閉じるVBA

    Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルを呼び出し各シートを自動印刷して保存して閉じるVBAです。 質問ですがボタンの配置されたあるエクセルファイルの上記VBAの処理を全て完了した後に上書き保存を自動で実行し、自動であるエクセルファイルを閉じるVBAはどの様に追加すれば良いでしょうか?

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

    VBA初心者ですのでどうか詳しく教えてください。下記のマクロをエクセルで組んだのですが・・・ -------------------------------------------------------------------- Sub hideworksheets() Worksheets("sheet1").Visible = False End Sub Sub ボタン_Click() ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet4").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub ------------------------------------------------------------ 1.上記設定で"sheet5"という別シートにボタンを設置した場合、このボタンを実行すると、シート1~4のほかにシート5まで印刷されてしまいます。シート5を印刷したくない場合のVBAの記述について教えてください。 2.「Sub hideworksheets()  Worksheets("sheet1").Visible = False    End Sub」    の箇所で、シート1を非表示にしたいのですが、このマクロを実行時、「Sub ボタン_Click()」以下のマクロを実行しようとすると、「実行時エラー1004 worksheeクラスのselectメソッドが失敗しました」のエラーがでてしまいます。シート1を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

  • エクセルマクロ

    お世話になります。 下記の記述でどこがおかしいのでしょうか 上手く印刷できません。 Sub Macro13() ' ' 'Dim i As Long For i = 1 To 4 Range("Ai:Ei").Select Selection.Copy Sheets("カード").Select Range("G1:K1").Select Selection.Paste Range("A1:F21").Select Application.CutCopyMode = False ActiveSheet.PageSetup.PrintArea = "$A$1:$F$21" ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _ :=True Next i End Sub

  • マクロで印刷ができません

    簡単な表を作成し、デザインモードでフォームコントロールでボタンを作成し、マクロの作成をしました。 印刷するためにボタンをクリックしても 印刷プレビューで画面が止まってしまいます。 ところがプレビュー画面を閉じると印刷が始まります。 何度やりかえてもマクロで最後まで印刷ができません。 記述は次のようになっています。 プリントも記述されているようなのですが・・・・ エクセル2007を使っています。 どなたか助けてください Sub ボタン3_Click() ' ' ボタン3_Click Macro ' ' ActiveSheet.Shapes("Button 3").Select Selection.Characters.Text = "ボタン 3" Range("B3:E12").Select ActiveSheet.PageSetup.PrintArea = "$B$3:$E$12" ActiveWindow.SelectedSheets.PrintPreview ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub

  • excel vba 印刷部数設定

    excel 2002を使用しています。 マクロで印刷および印刷プレビューせずに、印刷部数を設定する方法を探しています。 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True  ではプレビューしてしまいます。 ActiveWindow.SelectedSheets.PrintOut Copies:=1  では印刷してしまいます。 印刷およびプレビューしない方法はないものなのでしょうか。 よろしくお願いします。

  • エクセルマクロで印刷実行時に「黒」の設定・・・

    どなたか教えてください。 マクロで印刷の実行をしています。 シート上にはカラー文字が含まれていますが「常に黒」の 単色で印刷させたいのですが、方法はないでしょうか? 現状はプリンターのプロパティーで(カラー/黒)の選択を 黒にして手動で印刷しています。EPSON PX-V500使っています。 よろしくお願いします(ponta_024) ---------------------------------------------------------- ActiveSheet.PageSetup.PrintArea = "$B$3:$I$31" ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _ :=True このような記述になっております。

  • Excel 印刷のマクロ

    前任がExcelで作成した請求書のファイルで 「全印刷」のボタンを実行すると 顧客の請求書を1枚ずつ印刷する仕組みになっています。 新しい顧客ができたら、別のシートのリストに名前や金額を追加していくようになっているのですが、しばらくはうまくいっていたのに、あるときから、新しい顧客の請求書だけが印刷されなくなってしまいました。 そこで、全印刷のマクロのコードを確認すると下記のようになっていました。 'リストを1行1枚の伝票形式で印刷するマクロ Sub 全印刷() Worksheets("請求書").Activate TDATA = Range("g3") For 伝票カウンタ = 1 To TDATA Range("C3") = 伝票カウンタ STYPE = Range("E3") If (STYPE = 0) Then Else 印刷 End If Next 伝票カウンタ End Sub Sub 印刷() ' Range("B4:G48").Select ActiveSheet.PageSetup.PrintArea = "$b$4:$g$48" ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub と記述がありました。 この中で、印刷するリストや範囲に関係するような記述が分かれば何とかなるのかと考えているのですが・・・。 何か分かる方、教えていただけませんか?おそらく、直接的な印刷対象の記述はないように思えるのですが・・・ ヒントでもあればと思っています。

  • 指定する曜日の時に特定のエクセルファイルを印刷

    Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True  ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルの各シートを自動印刷して保存するVBAです。 ボタンが設置されているシートのK1には「TODAY()」の式が入っています。これは当日の日付を自動で表記する様になっています。 質問ですがボタンを押すと毎日印刷シート+K1に記入されている日付の曜日のシートのみを印刷するVBAはどの様にすれば良いでしょうか? 例えば今日(2016年9月10日)で言うと土曜日なのでボタンを押すと工程分析.xlsファイルの毎日印刷シート+土曜日印刷のみ出力されると言う事です。 明日(2016年9月11日)は日曜日なのでボタンを押すと工程分析.xlsファイルの毎日印刷シート+日曜日印刷シートのみが出力される形です。 よろしくお願いします。

専門家に質問してみよう