VBAの初心者です。詳しく教えてください。
1.下記のVBAでシートを非表示にしたときに実行時エラー1004が出るのですが  どうしたらよいのですか。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Sub printappointedrange()

Worksheets("シート1").Activate
Range("A1:AB42").Select 'セル範囲の選択

With ActiveSheet
.PageSetup.PrintArea = Selection.Address '印刷範囲の指定
.PrintOut '印刷
.PageSetup.PrintArea = False '印刷範囲のクリア
End With

End sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

2.シートに印刷ボタン作成して、印刷はできるのですが、印刷する前にプリンターの設定を変更する方法は無いのですか。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

シート2の表示、非表示にかかわらず、印刷を行います。


簡単にしてあります。

Sub printappointedrange()
  Dim ws As Worksheet 'ワークシート
  Set ws = Worksheets("シート2")

  Dim ws2visible As Boolean 'シート2の表示条件

  Application.ScreenUpdating = False '画面更新ストップ

  ws2visible = ws.Visible
    'シート2が非表示なら表示する
    If ws2visible = False Then
      ws.Visible = True
    End If

  ws.Activate
  ws.PageSetup.PrintArea = "A1:AB42" '印刷範囲の指定

  Application.Dialogs(xlDialogPrint).Show 'プリンタ設定

  'シート2の表示を戻す
  If ws2visible = False Then
    ws.Visible = False
  End If

  Worksheets("シート1").Activate
  Application.ScreenUpdating = True '画面更新

End Sub
    • good
    • 0
この回答へのお礼

いろいろ、教えていただきありがとうございます。
本に記載されている、マクロの記述と回答を頂いた記述が違ったので、悩みましたが、本より回答を頂いたほうが、よく分かりました。

お礼日時:2002/01/18 12:38

質問の『印刷する前にプリンターの設定を変更する方法』の意味がよくわからなかったので、


xlDialogPrintとxlDialogPrinterSetupを回答したのですが、補足では、『xlDialogPrint』が使ってあり、
このままでは、

1.『xlDialogPrint』のダイアログでOKボタンを押したためにボタンがあるシート1を印刷

2.マクロの『.PrintOut』でシート2の印刷

となって、シート1、シート2が印刷されるはずです。

A.『プリンターの設定』が印刷書式の設定なら『xlDialogPageSetup』を
B.『プリンターの設定』がプリンタの切替等なら『xlDialogPrinterSetup』を使用します。

C.『印刷』のダイアログをだすのなら『xlDialogPrint』ですが、このままだとシート1も印刷してしまいます。

『印刷する前にプリンターの設定を変更する方法』がCの場合は補足してください。

この回答への補足

申し訳ありませが、『印刷する前にプリンターの設定を変更する方法』Cの場合を教えてもらえますか。
よろしくお願いします。

補足日時:2002/01/13 22:53
    • good
    • 0

中に書き込んでみました。


非表示なら表示して印刷後非表示に戻しています。
非表示でも印刷しています。(質問でここが一番分からない。非表示なら印刷する?しない?)

プリンタの設定は『'』をはずして確認して下さい。

Sub printappointedrange()
  Dim Sheet1Visible As Boolean 'Sheet1のマクロ実行時のVisibleの設定

  'プリンタの設定→どちらのことでしょうか。『'』をはずして試して下さい。
  'Application.Dialogs(xlDialogPrint).Show
  'Application.Dialogs(xlDialogPrinterSetup).Show

  Sheet1Visible = Worksheets("シート1").Visible

  Application.ScreenUpdating = False '画面更新をストップ
  If Sheet1Visible = False Then
    '非表示ならSheet1を表示する
    '非表示の場合印刷しないなら Exit Sub を書く
    Worksheets("シート1").Visible = True
  End If
  '/// ここまで追記 ///

  Worksheets("シート1").Activate
  '/// このマクロがどのコードウインドウにあるか分からないので ActiveSheet. を追加 ///
  ActiveSheet.Range("A1:AB42").Select 'セル範囲の選択

  With ActiveSheet
    .PageSetup.PrintArea = Selection.Address '印刷範囲の指定
    .PrintPreview '印刷
    .PageSetup.PrintArea = False '印刷範囲のクリア
  End With

  '/// 以下を追記 ///
  '元に戻す
  Worksheets("シート1").Visible = Sheet1Visible
  Application.ScreenUpdating = True '画面更新を戻す

End Sub

この回答への補足

質問の仕方が悪かったので、すみませんが、もう少し教えてください。
○状況
・現在シート2を非表示にしてあります。
・シート1に印刷ボタンがあります。(ボタンをマクロ登録しています・・・下記 VBAです。)
・下記のVBAで「プリンタ設定、画面更新ストップ」を追加したときに、シート1及 びシート2(選択範囲のみ)が印刷されます。
○質問
・シート1及びシート2が印刷されるので、シート1を印刷しないようにし、シート2を印刷したいのです。
・プリンタの種類によっては、プリンタ設定を2回聞いてきます。(シート1とシ ート2が印刷されるからですか)
○その他
・下記のVBAは回答を頂いたのを、私なりに修正しました。
・下記のVBAで「プリンタ設定、画面更新ストップ」を記述しない場合はシート2し か印刷されませんでした。
---------------------------------------------------------------------
Sub printappointedrange()

Dim ws As Worksheet 'ワークシート
Dim PrintFlg As Boolean '印刷するかの判定

On Error GoTo ErrorHandler 'エラー対応(非表示シート対応)

Application.Dialogs(xlDialogPrint).Show 'プリンタ設定
Application.ScreenUpdating = False '画面更新ストップ

For Each ws In Worksheets '全てのシートを調べる
With ws
Select Case .Name
Case "シート2"
.PageSetup.PrintArea = "A1:AB42" '印刷範囲の指定
.PrintOut '印刷
.PageSetup.PrintArea = "" '印刷範囲クリア
End Select
End With
Next
Exit Sub '終わり

ErrorHandler:
'シートが非表示の場合
If Err = 1004 Then
ws.Visible = True '表示する
ws.PrintOut
ws.Visible = False '非表示に戻す
End If
Resume Next '次の処理
End Sub

---------------------------------------------------------------------

補足日時:2002/01/11 18:56
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAUTOCADをPDF変換して印刷したいのですが

AUTOCADをPDFに変換して印刷たいのですが
PDFでPC上ちゃんと見える線が印刷するとその線だけ消えています。
ワイプアウトで一部隠れてるのが原因かと思ったのですが
ちゃんと出てる図面もあります。

PDFをどうにかして印刷できないでしょうか?

AUTOCAD2010でDWG to PDFでPDF変換してます。
Adobe® Acrobat® 8 Standard を使ってます。

よろしくおねがいします。

Aベストアンサー

AutoCAD2010より低いバージョンでの話になるので参考までに。

新規作成した時に最初にできる「0」というレイヤーは印刷のときに不具合をおこす場合があるようです。
(印刷時に印刷されない等)

一度「0」のレイヤー内のオブジェクトを新たに作ったレイヤーに移して見てください!

また、Adobe Acrobatがインストールされている場合は
DWG to PDFではなく、「印刷→Adobe PDF→ファイルへ出力にチェック」を試してください!こちらの方が線がきれいにでると思います。

以上。
健闘を祈ります!!

QエクセルVBAのWith~End With構文

Win2000エクセル2000です。
下記のMacro11はTEST11のようにWith~End Withでくくれると思うのですがエラーになります。
どこがおかしいのでしょうか?

Sub Macro11()
ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120).Select
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10
Selection.ShapeRange.Fill.OneColorGradient msoGradientFromCorner, 1, 0.59
Selection.ShapeRange.Adjustments.Item(1) = 0.3016
Selection.ShapeRange.ThreeD.SetThreeDFormat msoThreeD7
Selection.ShapeRange.ThreeD.PresetMaterial = msoMaterialMetal
Selection.ShapeRange.ThreeD.Depth = 144#
End Sub

Sub TEST11()
With ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120)
.ShapeRange.Line.Weight = 0.75
.ShapeRange.Line.ForeColor.SchemeColor = 64
.ShapeRange.Fill.ForeColor.SchemeColor = 10
.ShapeRange.Fill.OneColorGradient msoGradientFromCorner, 1, 0.59
.ShapeRange.Adjustments.Item(1) = 0.3016
.ShapeRange.ThreeD.SetThreeDFormat msoThreeD7
.ShapeRange.ThreeD.PresetMaterial = msoMaterialMetal
.ShapeRange.ThreeD.Depth = 144#
End With
End Sub

Win2000エクセル2000です。
下記のMacro11はTEST11のようにWith~End Withでくくれると思うのですがエラーになります。
どこがおかしいのでしょうか?

Sub Macro11()
ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120).Select
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10
Selection.ShapeRange.Fill.OneColorGradient msoGradientFromCorner, 1, 0.59
...続きを読む

Aベストアンサー

こんにちは。maruru01です。

>出来ればSelectしないでShapeRangeの属性を一括変更したいのですが・・・。
Selectしないならこうです。


Sub TEST12()
With ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120)
.Line.Weight = 0.75
.Line.ForeColor.SchemeColor = 64
.Fill.ForeColor.SchemeColor = 10
.Fill.OneColorGradient msoGradientFromCorner, 1, 0.59
.Adjustments.Item(1) = 0.3016
.ThreeD.SetThreeDFormat msoThreeD7
.ThreeD.PresetMaterial = msoMaterialMetal
.ThreeD.Depth = 144#
End With
End Sub

Qillustrator10、印刷可能範囲だけPDFに変換できますか?

よろしくお願いします。

友達にweb上でチラシを見てもらおうとしてます。

pdfに変換してweb上にアップして、友達の自宅PCにて確認してもらおうとしてますが、
PDF変換すると、画像がある範囲すべてがPDF変換されてしまいます。

プリンタで印刷できる範囲のみだけにしたいのですが、イラレで表示されている印刷可能範囲の点線の内側のみをPDF変換することは可能でしょうか?

Aベストアンサー

色々やり方はあると思いますが、私なら・・・。

1)まず、元データを「複製を保存」か「別名で保存」で保存しておきます。

2)で、すべてのレイヤーを1つにまとめて、印刷範囲の白ベタを作って【最前面】に配置します。

3)そのまま、すべてを選択して「メニューバー→オブジェクト→クリッピングマスク」を実行します。

4)これで印刷範囲のデータ出来上がり。

5)「別名で保存」か「データの書き出し」でPDFデータを作って終わり。

Q実行時エラー'9' "インデックスが有効範囲にありません。"

こんにちは。
OS・・・Win95
Excel97
を使用しているマシンで、
既存ExcelBookを開いたり、新規にBookを開いたりするときに常にこのエラーがでます。
実行時エラー'9' "インデックスが有効範囲にありません。"
というエラーです。
過去ログを見てみるとマクロが関連しているかもしれないようですが、マクロは使ってません。
「終了」すると通常に使えますが、どうしたら直るのでしょうか?
どなたか教えてください。
よろしくお願いします。

Aベストアンサー

#1です。

Personal.xlsを別のフォルダに移動しましょう。
もし本当に不要ならゴミ箱へポイしても構いません。

その後Excelを起動したらどうでしょう?

Qコンビニword印刷、PDF変換でok

コンビニでusbに保存したwordをPDFにへんかんすればどこのコンビニからでも印刷できますでしょうか?

パソコンは今ネット環境がありません
なのでusbを使い、印刷するしか方法が無く印刷したいものが3枚ほどなので漫画喫茶は高くなるし困っています。
詳しい方教えてください
ちなみにPDF変換をしないとwordはどこのコンビニも印刷不可ということでしょうか?

Aベストアンサー

PDFであれば、多くのコンビニで備えているマルチコピー機を使って印刷できます。
Windowsのエクスプローラーのようにフォルダーが表示されるので、
フォルダー内のファイル(PDF)選択も簡単です。
wordの印刷機能はありません。

Q印刷したい範囲が2ヶ所ある時の印刷範囲に設定する場合

いつも御世話になります。
複数の印刷範囲を指定して印刷したいが何かいい方法がないでしょうか
例えば

A4:C16
G4:I16

と言う具合に2ヶ所があるときはどうすればいいでしょうか。
いい方法があればご指導下さい。
よろしく御願いします。

Aベストアンサー

D~F列番号をドラッグ選択し
右クリックで「非表示」にしてから
印刷するのではダメですか?

Qイラストレータ→PDF変換で、必要な部分だけ印刷したい

イラストレータCSで作成したものを、
イラストレータがインストールされてないパソコンから印刷したいため、
PDFファイルに変換して印刷しようと思っています。
しかし設定用紙サイズの枠外まで絵を描いてしまったので
PDFファイルにするとその印刷部分外まで一緒に保存されてしまい、
希望の用紙サイズとは全く違うサイズになっていまいます。

トンボなどは設定できるようですが、画像サイズの設定をして
そこだけPDF保存、ということは出来るのでしょうか?
若しくは印刷段階で「真ん中のここだけ印刷」みたいなことは出来るのでしょうか?
スライスを使用したりして多少の悪あがきはしてみましたが…
これが限界のようです。
何か良い知恵があれば是非是非ご教授のほどお願いいたします。

また、PDFファイルに変換すると絵全体が白っぽくなるのですが…
これの回避の仕方などはあるのでしょうか?
過去の質問を見たのですがMacでの質問しか見つけられなかったので、
これも一緒に質問させていただきます。

因みにパソコンはWin2000(イラレ搭載)とWinXP(印刷用)、
使用してるのはAcrobat Reader 5.0になります。
他足りない情報があればご指摘くださればすぐに補足させて頂きます。
どうぞよろしくお願いいたします。

イラストレータCSで作成したものを、
イラストレータがインストールされてないパソコンから印刷したいため、
PDFファイルに変換して印刷しようと思っています。
しかし設定用紙サイズの枠外まで絵を描いてしまったので
PDFファイルにするとその印刷部分外まで一緒に保存されてしまい、
希望の用紙サイズとは全く違うサイズになっていまいます。

トンボなどは設定できるようですが、画像サイズの設定をして
そこだけPDF保存、ということは出来るのでしょうか?
若しくは印刷段階で「真ん中のここだけ印刷...続きを読む

Aベストアンサー

「書類サイズ」が大きいのではないでしょうか。それを用紙サイズと同じにしてからpdfで保存すればその範囲のものしかできないと思います。
当方CSは使っていませんが同様では?違っていたらゴメンナサイ。

QエクセルシートのPPTへの挿入...おしえて。

すみません。どうしてもうまく行かないもので。(^_^;)?


日頃、細かい編集が楽なのでいろいろなプレゼンテーションのシートをエクセルで作っています。図の貼り付けや文字ベタガキも混在しています。

たまたま事情があって、それをPPT(=パワーポイント)に落とし込まなくてはいけなくなりました。

---

○ 指定のエクセルファイルの指定シートを開いた状態で保存。
○ PPTを開いて[挿入][オブジェクト]からエクセルファイルを指定します。

すると、欲しい1シートがまるごと入ってこなくて、部分的にしかインポートされません。全体の2/3ぐらいだけです。

元のエクセルシートには[ページ設定]としては100%~60%までいろいろあります。その設定をあえて100%に戻してみましたが状態は変わりません。

しかたなく[挿入]は使わないで、ふつうにコピー&ペーストもしてみましたが変わりませんでした。部分的です。

唯一成功したのは、新しくエクセルシートをつくって、[ページ設定]も100%としたダミーデータを作って[挿入]..をしてみたら全部入りました。ただ最初の1回だけで、その後元データを少々編集していたら、またいつものとおりになってしまいました。2/3ぐらいしか入ってきません。(+_+)


何かヒントはありますでしょうか?

すみません。どうしてもうまく行かないもので。(^_^;)?


日頃、細かい編集が楽なのでいろいろなプレゼンテーションのシートをエクセルで作っています。図の貼り付けや文字ベタガキも混在しています。

たまたま事情があって、それをPPT(=パワーポイント)に落とし込まなくてはいけなくなりました。

---

○ 指定のエクセルファイルの指定シートを開いた状態で保存。
○ PPTを開いて[挿入][オブジェクト]からエクセルファイルを指定します。

すると、欲しい1シートがまるごと入ってこ...続きを読む

Aベストアンサー

Microsoftのホームページに「Excel ワークシートに入力した文字列が一部しか表示されない」という記載がありました。
解決なるでしょうか?

参考URL:http://www.microsoft.com/JAPAN/support/kb/articles/J028/3/43.htm?LN=JA&SD=SO&FR=0

Qエクセルファイルを印刷のところからPDFに変換

こんにちは。
会社で私が使ってるパソコンだけが、ファイルメニューの印刷を選んで、出てきた印刷ウインドウの中にプリンターの名前と一緒にAdobe PDF とあるので、それを選択すると簡単にPDFファイルに変換出来ます。
これは他のパソコンには入っていないようです。他の人が同じようにしてくれと言ってきますが、私もどうしてこうなっているのか記憶にありません。何かのプラグインが入っているのでしょうか?

ウインドウズXP で オフィス2000です。

よろしくお願いします。

Aベストアンサー

Adobe Acrobat が導入されていると考えるのが普通でしょう。
http://www.kit-systems.co.jp/webkcore/maketemplate9/maketemplate9-2.htm

http://dopub.jp/aboutpdf.php
でそう表示されています。

ちなみに「CubePDF」ではAdobe PDFとは表示されず、CubePDFと表示されます。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1331cubepdf/cubepdf.html

QGoToRecordで実行時エラー '2105'

教えてください。Access2000です。

Private Sub 次へ_Click()
On Error GoTo Err_次へ_Click
On Error Resume Next
DoCmd.GoToRecord , , acNext
Exit_次へ_Click:
Exit Sub
Err_次へ_Click:
MsgBox ERR.Description
Resume Exit_次へ_Click

End Sub

って書いたのですが、最後のレコードまで行った後
「次へ」をクリックすると実行時エラーになってしまいます。
移動できませんとかメッセージで逃げたいのですがどうすればいいのでしょうか?
お願いします。

Aベストアンサー

こんにちは。maruru01です。

先頭レコードや末尾レコードは以下のように判定出来ます。


Dim tempRecNum As Long

tempRecNum = Me.CurrentRecord
Select Case tempRecNum
  Case Me.Recordset.RecordCount
    MsgBox "一番後ろのレコード"
  Case 1
    MsgBox "一番前のレコード"
  Case Else
    MsgBox tempRecNum & "番目のレコード"
End Select


人気Q&Aランキング