AccessでExcelの印刷範囲を設定する方法

このQ&Aのポイント
  • AccessからデータをExcelへエクスポートする際、印刷範囲の指定を行いたい場合、いくつかの手順があります。
  • しかし、指定したセルに値をセットした後に印刷範囲を設定する方法は通常は機能しないようです。
  • Access上ではExcelの印刷範囲を指定することは難しいかもしれません。
回答を見る
  • ベストアンサー

AccessにてExcelの印刷範囲を設定したい

お世話になっております。 ご存知の方がいらっしゃいましたら、お手数ですがご教授願えますでしょうか? AccessからデータをExcelへエクスポートした際、 印刷範囲の指定を行いたいのですが、うまくいきません。 データを指定したセルにセットした後、 ActiveSheet.PageSetup.PrintArea = "$A$1:$I$30" と指定しているのですが、 「オブジェクト変数またはWithブロック変数が設定されていません」 とエラーが出てしまいます。 オブジェクトブラウザで確認すると、 ActiveSheetはExcel.Globalのメンバとなっていますが、 Excel.Globalから書き込んでも同じエラーが出てしまいます。 もしかしてAccess上ではExcelの印刷範囲は指定できないのでしょうか? お手数ですが宜しくお願いいたします。

  • nekoB
  • お礼率76% (58/76)

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

GetObject関数 http://officetanaka.net/excel/vba/function/GetObject.htm を参考に Dim xlapp As Object Set xlapp = GetObject(, "Excel.Application") xlapp.ActiveSheet.PageSetup.PrintArea = "$A$1:$I$30" とかかな?(自信ないですけど)

nekoB
質問者

お礼

Dim xlapp As Object ・ ・ ・ Set xlapp = GetObject(, "Excel.Application") xlapp.ActiveSheet.PageSetup.PrintArea = "$A$1:$I$30" と記述したところ、無事に印刷範囲が設定できました。 Setしていなかったのと、Objectを宣言していなかったのが原因だったんですね(汗 ありがとうございました!

その他の回答 (1)

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

この質問は内容的にはエクセルVBAの質問か。 実行はエクセルからではなくアクセスVBAからか。「アクセス上では(エクセルの操作が出来ない・)」と言う表現は無いのでは。 ーー Googleで「オブジェクト変数またはwithブロック変数が設定されていません excel」で照会すればたくさん記事が出ます。どれに当たるか調べてください。 ActiveSheetを臨時に、Worksheets(”XXX”)と具体名を入れて指定し、実行してうまく行きませんか。もし旨く行けばエラーはこの表現にかかわるものでしょう

nekoB
質問者

補足

説明が足りませんでした。すみませんでした。 >AccessからデータをExcelへエクスポートした際、 >印刷範囲の指定を行いたいのですが、うまくいきません。 >データを指定したセルにセットした後、 >ActiveSheet.PageSetup.PrintArea = "$A$1:$I$30" >と指定しているのですが、 と記述したのですが、わかりづらかったでしょうか? 一応VBAのコードを書いたので、アクセス上というのは 「ACCESS VBA上では・・・」という意味だったのですが・・・。 n-junさんのコードを記述したところ、無事印刷範囲が設定できました。 imogasiさんもご教授頂きありがとうございました。

関連するQ&A

  • エクセルの範囲指定マクロ

    エクセル2002のマクロで印刷範囲指定を例えば ActiveSheet.PageSetup.PrintArea = "A1:E60" と指定した時に、"A1:E60"の”1”と”60”を変数にする事はできますか。

  • EXCEL マクロで変化する印刷範囲を設定したい

    複数年分集計したEXCELの表の中からある年(度)のデータをマクロで印刷範囲を設定したい!です。 ・EXCELのシートはA~AK列までのデータです。 ・A4~AK8までが「タイトル行」です。 ・A1列に「2014/7/1」等といった日付のデータが入っています。 ・上記「タイトル行」とある年(度)のデータをマクロで自動に選択して  印刷範囲を設定したいです。下記は、2014年のデータを印刷範囲とした  マクロです。どの部分を修正すればある年のデータを抽出するマクロに  できるでしょうか?教えてください。宜しくお願いします。 Sub 印刷範囲() ' ' 印刷範囲 Macro ' 印刷範囲を指定する ' ' Range("A4:AK8").Select ActiveSheet.PageSetup.PrintArea = "$A$4:$AK$8" ActiveWindow.ScrollColumn = 38 ActiveWindow.ScrollColumn = 2 ActiveWindow.SmallScroll Down:=-39 Range("A170:AK220").Select ActiveSheet.PageSetup.PrintArea = "$A$4:$AK$8,$A$170:$AK$220" Range("U208").Select End Sub

  • 印刷範囲を設定するvbaコード

    エクセルシートの印刷範囲を設定するvbaコードで Sub Macro1() With ActiveSheet.PageSetup .PrintArea = "$A$1:$c$10" End With End Sub としてるのですが、 "$A$1:$c$10"の部分を Range(Cells(1, 1), Cells(10,3)) 形式でやりたいのですが、 うまくできません。 Sub Macro1() With ActiveSheet.PageSetup .PrintArea = Range(Cells(1, 1), Cells(10,3)) End With End Sub としても、全部が印刷範囲として選択されてしまいます。 というか、印刷範囲が設定されません。

  • VBAの範囲印刷設定を修正したいのですが

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

  • Excel 待ち時間設定

    Excel で印刷が終わった頃にメッセージボックスを出したいのですが、下記のコードにどう書き加えたらよいですか、教えて下さい。よろしくお願いします。 With ActiveSheet (範囲指定用コード:maxR 読み取り) End With With ActiveSheet.PageSetup .PrintTitleRows = "$1:$1" '←見出し 1行 .PrintArea = "A1:G" & maxR '←印刷範囲 End With ActiveSheet.PrintOut Rtn = MsgBox("印刷を終えて終了します")

  • エクセルの印刷範囲をマクロで決めたいです。

    以前こちらで、選択範囲を印刷範囲にする方法を教えていただきました。 選択範囲は別の項目で決定されています。 With Selection Vert = .Rows.Count Side = .Columns.Count Print_range = .Cells(1, 1).Address & ":" & .Cells(Vert, Side).Address End With With ActiveSheet.PageSetup .PrintArea = Print_range .PaperSize = xlPaperA3 .Orientation = xlPortrait End With 以上の記述で無事選択範囲が印刷範囲になりました。 次に、選択範囲が何種類かのパターンに絞れる事がわかったので パターンごとに拡大縮小印刷の%も決定しようと Select Case True Case Masu = 10 ActiveSheet.PageSetup.Zoom = 100 Case Masu = 11 ActiveSheet.PageSetup.Zoom = 115 Case Masu = 12 ActiveSheet.PageSetup.Zoom = 123 Case Else ActiveSheet.PageSetup.Zoom = 100 End Select を追加したところエラーになります。 何がよくないのかさえわかりません。 よい解決策はないものでしょうか?

  • 印刷範囲の設定で教えてください。

    再三再四で申し訳ございません。 マクロで印刷範囲設定は ActiveSheet.PageSetup.PrintArea = "$B$1:$H65" と範囲を固定するのが一般的と思うのですが、 印刷範囲が利用者毎に相違するため 開始セル値を A8 セルに 最終セル達を A10 に置く形で 印刷範囲を任意変更可能にしたい場合には セル値で印刷範囲設定する方法を お教えくださいますよう 御願いいたします。

  • エクセル2007 縦長と横長の混在で両面印刷

    現在,相対記録で作成したマクロを使っています。 Sub 予定表印刷() ActiveCell.Range("A1:I53").Select ActiveSheet.PageSetup.PrintArea = Selection.Address ActiveSheet.PageSetup.Orientation = xlPortrait ActiveSheet.PrintOut End Sub このあとに,横長で$T$2から$AX$32を絶対番地で印刷し, かつ両面印刷にしたいのですが,うまくいきません。 縦長と横長の混在はできないのでしょうか。 それとも,印刷範囲が離れているのがいけないのでしょうか。 もしかして,相対指定と絶対指定の混在がいけないのでしょうか・・・。

  • Excel マクロ右下末端までの範囲指定

    Excel 2007を使っております。 VBAで、左上A1から、文字が入っている右下末端(都度行はかわる。L列であるというのは変わりませんが)までの範囲指定をして、印刷範囲に指定するには、どうすればよいのでしょうか。 以下、記録マクロでやっていて、仮に1000行だと、このような感じになっています。 Range("A1:L1000").Select Range("L1").Activate ActiveSheet.PageSetup.PrintArea = "$A$1:$L$1000"

  • エクセル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に固定する方法を教えて下さい。

専門家に質問してみよう