VB6からアクセスのレポートをプレビューする方法

このQ&Aのポイント
  • VB6でアクセス2000のレポートをプレビューする方法を教えてください。
  • アクセスのレポートをプレビューするには、VB6で以下のコードを使用します: ``` Set accApp = CreateObject("Access.Application") accApp.OpenCurrentDatabase "C:\part-name.mdb" accApp.DoCmd.OpenReport "パーツ情報", acViewNormal ``` このコードを書き換えることで、プレビューの設定を行うことができます。
  • また、この質問に関連するハッシュタグは「VB6 #アクセスレポート #プレビュー」などです。
回答を見る
  • ベストアンサー

VB6からアクセスのレポートをプレビューするには?

おはようございます。またまた躓いたのでお助け下さい<(_ _)>VB6で、アクセス2000にパーツ名を読み書きしています。アクセスの方でレポートを作ってあるのですが、印刷はいけそうなのですが、これを印刷前にプレビューしたいのですが、 Set accApp = CreateObject("Access.Application") accApp.OpenCurrentDatabase "C:\part-name.mdb" accApp.DoCmd.OpenReport "パーツ情報", acViewNormal 印刷について参考にさせていただいたソースです。DoCmd.OpenReport が印刷ですよね?ここを変更するのでしょうか?よろしくお願いします<(_ _)>

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

  • ベストアンサー
回答No.2

>マクロからのVBA変換方法とありますが、これは、アクセスの操作でしょうか? はい。 'アクセスインスタンスを生成   Set accApp = CreateObject("Access.Application") その後、好きなタイミングで   accApp.Visible = True を追加してあげたらいいです。 今の状態は、「裏でAccessが起動している」状態です。 解消方法としては、Accessを表示する命令を発行するだけです。 ただし条件があります。 accAppは、モジュールの先頭で宣言する必要があります(Private や Publicなど) ※ダメ例(×) Sub アクセス表示関数 {   Dim accApp as アクセス   Set accApp = CreateObject("Access.Application")   accApp.Visible = True } とした時、アクセス表示関数が終了と同時に、accAppが無効となり、自動的にインスタンスを破棄してしまいます。 結果、意図としないタイミングで、Accessが終了します。 ※イイ例(○) Private accApp as アクセス Sub アクセス表示関数 {   Set accApp = CreateObject("Access.Application")   accApp.Visible = True } とした時、アクセス表示関数が終了しても、accAppはインスタンスを保持します。 結果、インスタンスを生成したオブジェクトが有効である限り、Accessは起動しています。 追伸: 個人情報書いたら消されると思うので、軽くだけ^^; かれこれ7年前、学生時代にPCインストラクタをしておりました。 現在は業務系ソフト開発のお仕事です。^^; 最近は全くPGをしていなく、言語感覚(←これすごく大事だと思います。)を忘れないように、掲示板を暇さえあれば、見るようにしております。 ここに書き込みを行っている人ならわかると思いますが、「スキルがあるから回答をする」のではなく、「回答を繰り返す事でスキルをあげる」事にもつながります。 「satoshi777」さんも、質問だけでなくわかる範囲で回答していくと、結構いい勉強になりますよ^^ 同じスレッドの別の人の回答を読むようになり、考え方も膨らみます。 同じ処理でも、実現方法を複数知ることで、「適した処理を選択する」という幅を持てるようになります。 なんだかんだ言っても・・・ 現業務の「現実逃避」しているだけかも知れませんが^^;;;;;

satoshi777
質問者

お礼

ありがとうございます<(_ _)>今日は現場が主だったのでまだ試せていませんが、夜に試そうと思います。1050YENさんのおっしゃる通り、人に教えると自分も勉強になるというのはとてもよくわかります。まだまだ教えらてばかりですが(>_<)しかし、1050YENさんの説明はとてもわかりやすくて理解しやすいです。ありがとうございました<(_ _)>貴重なお時間を費やしていただき、申し訳ないです(>_<)お仕事がんばって下さい<(_ _)>また、よろしくお願いします<(_ _)>

その他の回答 (1)

回答No.1

「accApp.DoCmd.OpenReport "パーツ情報", acViewNormal」 ではなく 「accApp.DoCmd.OpenReport "パーツ情報", ViewPreview」 です。 HELPを見ればわかるのですが、VBと違うAccessオリジナルのコマンドを作成する、簡単な方法を以下に記します。 マクロからのVBA変換方法 1.マクロを作成する  ※実例   アクション:レポートを開く   レポート名:パーツ情報   ビュー:印刷プレビュー   フィルタ名:   Where 条件式: 2.マクロを保存する   マクロ名:「マクロ1」 3.データベースウィンドウの「マクロ1」を選択状態 4.メニューバー   「ツール」→「マクロ」→「マクロをVisualBasicに変換」   を選択 5.標準モジュールにマクロを変換したコードが出現しています

satoshi777
質問者

補足

1050YENさん、お返事ありがとうございます。accApp.DoCmd.OpenReport "パーツ情報", ViewPreviewとしたのですが、プレビュー出ないです(>_<) マクロからのVBA変換方法とありますが、これは、アクセスの操作でしょうか?ちなみに1050YENさんは、パソコン教室の先生でしょうか?教え方が上手なのでそう思いました。僕はエクセルは習ったので多少複雑な関数はわかるのですが、VBAは試験に出ないという理由で習わなかったのですが、VB6から勉強するよりVBAから勉強した方がわかりやすいのでしょうか?関係ないことまで質問してすみません<(_ _)>

関連するQ&A

  • ACCESSレポートの起動のさせて方に関して

    VB2008の環境からACCESSのレポートを起動させたいと考えて います。 いろいろ検索しました結果、以下のような記述をしてみましたが、正しく起動 してくれません。。。 どのように記述するのが正しいのでしょうか??? 教えて下さい。 環境 : VB2008/ACCESS2000 《記述内容》 ※ Microsoft Access 9.0 Object Libraryを追加 Dim accApp As Access.Application 'Access の新しいインスタンスを作成 accApp = CreateObject("Access.Application") 'データベースを Access ウィンドウで開く accApp.OpenCurrentDatabase("c:\sample1.mdb") '印刷 accApp.DoCmd.OpenReport("R_sanple") '現在開いているデータベースを閉じる accApp.CloseCurrentDatabase() 'インスタンス破棄 accApp = Nothing

  • VBからACCESSのレポートをプレビューで表示

    お世話になっております。 VBからのMDBの帳票印刷の事で悩んでおります。 データベースとしてMDBを使用しているので、MDBのレポートのプレビュー を表示しようとしました所、下記のコードで実現することができました。 Dim oleAccess As Access.Application Set oleAccess = GetObject(App.Path & "\data.mdb") Call oleAccess.DoCmd.OpenReport(ReportName, acPreview) oleAccess.DoCmd.Maximize oleAccess.Visible = True 開発環境では問題なくプレビューの表示ができたのですが、 このプログラムを、ACCESSの入っていない環境で、ACCESSランタイムをインストール して実行すると、印刷時に「エラー429 ActiveXコンポーネントはオブジェクトを作成 できません」とのエラーが出て、印刷だけができません(その他の動作は正常です)。 エラー内容から、ACCESSオブジェクトの作成に失敗していると思うのですが、 Access.Application型を使わずに、ACCESSのプレビュー・印刷をする方法は無いのでし ょうか?(たとえば、DAO.DataBase型でMDBを開いて印刷する方法など・・・) 以前にも同じような質問をさせて頂いたのですが、私の力不足のため、再度ご質問させて頂きます。 どんな事でもいいので、アドバイスを頂ければ幸いです。 よろしくお願い致します。

  • VB2005を用いてのレポート作成

    いつも見て参考にさせて頂いています。 XPを使用し新しくVB2005を最近使い始めた初心者ですが、いきなりつまずいてしまいました。といいますのも、Access2003で作成したレポートを印刷することはできたのですが、印刷レビューの作成方法がわかりません。 Dim objAccess As Object If MessageBox.Show("印刷します。よろしいですか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.OK Then Try objAccess = CreateObject("Access.Application") With objAccess .OpenCurrentDatabase("\\172.30.100.45\技術部個人\加藤\VEManager.mdb") .DoCmd.OpenReport("Publishers") .closeCurrentDatabase() .Quit() End With Catch ex As Exception MessageBox.Show("EXP.Message") Finally objAccess = Nothing GC.Collect() GC.WaitForPendingFinalizers() End Try End If 上記の方法で実際に印刷はできました。自分なりに調べた結果、 .DoCmd.OpenReport("Publishers") の箇所を変更すると印刷プレビューを表示できるようなのですが・・・僕にはわかりませんでした。 返事が遅れるかもしれませんが、わかる方がいればご教授の程よろしくおねがいします。

  • VBからのACCESSの起動に関して

    開発環境:Visual Basic 2008/ACCESS 2000 VB2008よりACCESSを更新したり、ACCESSのレポートを使用したりする プログラムを作成しています。 その際に、1つのACCESSに複数のレポートを作成している事から、複数のプログラム からACCESSを起動させようとするとエラーとなってしまいます。 ACCESSをそれぞれ分けてしまえば問題ないですが、、、、 そもそも1つのACCESSファイルを複数からアクセス(複数のVBプログラム)するという事が 不可能なのでしょうか? あるいは、下記の記述にあるように、データベースを開こうとするかエラーである為、 開いているか確認の記述をし、既に開いているようだったら、その処理をとばすような事 をすれば問題ないのでしょうか??? 教えて頂きたいと思います。 よろしくお願いします。 《記述内容》 Dim ac As Object ac = CreateObject("Access.Application") With ac 'アプリケーションを表示する ac.Visible = True 'データベースを開く ac.OpenCurrentDatabase("C:\sample.mdb") '名前を指定してレポートを開く ac.DoCmd.OpenReport("R_一覧表", 2) 'acViewPreview 'レポートの最大化 .DoCmd.Maximize() 'オブジェクトの解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(ac) End With ac = Nothing

  • Accessのレポート印刷について

    Access2007を使用しています。 DoCmd.OpenReport "レポート名", acViewNormal, , Me.Filter で絞り込みをした内容のレポートで1枚目だけが印刷されるようにしたいのですが、 どうしたら良いですか? 2枚目・3枚目は印刷したくないので、1枚目だけが印刷されるようにしたいです。 よろしくお願いします。

  • Accessのフォームだけを表示するには?

    Accessのフォームを使って処理を行う時に、Access自身のバックグラウンドを表示しないでフォームのみ表示して処理するというようなことはできるのでしょか? たとえば、Accessのインスタンスは非表示にしてフォームだけみえるようにする。 WSHで Set accApp = CreateObject("Access.Application") accApp.Visible = False accApp.OpenCurrentDatabase "C:\業務01.mdb" accApp.DoCmd.OpenForm "F010_情報表示フォーム", , , , acFormReadOnly accApp.Forms.[F010_010_情報表示].Visible = true などとして[F010_010_情報表示]フォームのみを表示するなどということはできるのでしょか? 実際これでは、何も表示されません。

  • access全画面表示されない

    VBからacesssを開くと全画面表示されません。 しかし、フォルダをダブルクリックして開いたり、 空のaccessアプリケーションを立ち上げて、「ファイルを開く」で開くと、全画面表示されます。 【VB】-------------------------------------------- Sub AccOpen() Dim AccApp As Access.Application Dim MyPath As String MyPath = "○○.accdb" AccApp = CreateObject("Access.Application") AccApp.OpenCurrentDatabase(MyPath) AccApp.Visible = True AccApp.UserControl = True End Sub -------------------------------------------------- 【access】---------------------------------------- Private Sub Form_Load() DoCmd.RunCommand acCmdAppMaximize 'アプリケーションのサイズを最大化する Vbから開くと最大化されない。 End Sub -------------------------------------------------- としています。 アクセス2007、VB2010です。 VBからだと DoCmd.RunCommand acCmdAppMaximizeが無視される理由を教えてください。

  • VBからACCESSのレポート出力

    すみません。どうしてもわからないので、質問させて頂きます。 VB6.0 + ACCESS2000 で開発をしています。 インターフェイスはVB,DBはACCESSなのですが、帳票の出力も、 ACCESSで行いたいと思っております。 この時、クライアントにACCEESSが入っていない事も想定して、 ACCESSランタイムも用意しました。 デバッグマシン(OFFICEは入っていません)にランタイム(VB,ACCESS)を インストールして、実行ファイルを実行すると、印刷の部分で、「エラー429 Activeコンポーネントはオブジェクトを作成できません」とのエラーが出て、印刷ができません。 印刷以外は問題なく動いています。 開発マシンは、Win2000、デバッグマシンはWinXPで、ACCESSランタイムはOFFICE XP Developerで作成しました。 下記にソースコードも記載させて頂きます。 もちろん、開発ではきちんと動作しています。 Dim oleAccess As Access.Application Set oleAccess = GetObject(App.Path & "\data\data.mdb") Call oleAccess.DoCmd.OpenReport(ReportName, acPreview) oleAccess.DoCmd.Maximize oleAccess.Visible = True 当初は、「oleAccess.OpenCurrentDatabase」でDBを開いていたのですが、 ACCESSランタイム環境では、GetObjectの方が良いということを聞いたので、 上記の様になっています。 エラーが起きている行は、どうやら「GetObject」の行のようです(oleAccess.OpenCurrentDatabaseの場合でもエラー)。 ACCESSランタイムを使う事が初めてなので、手探りでやっているため、 的外れな所もあるかと思います。 何かアドバイスを頂ければ幸いでございます。 よろしくお願い致します。

  • 「accessがもし開いてるなら開かない」とするに

    「accessがもし開いてるなら開かない」とするには? http://okwave.jp/qa/q7856640.html を参考にしたのですが、 Sub test1() Dim AccApp As Access.Application Dim MyPath As String MyPath = "C:\Users\Documents\test.mdb" AccApp = CreateObject("Access.Application") AccApp.Visible = True AccApp.OpenCurrentDatabase(MyPath) AccApp.UserControl = True End Sub で、アクセスのファイルを開くことができるのですが、 もし"C:\Users\Documents\test.mdb"が開いていたら開かない とするにはどうすればいいでしょうか? http://okwave.jp/qa/q8051720.html これのアクセスバージョンをするにはどうすればいいですか? Dim book As Workbook や For Each book In Workbooks をアクセスの場合、どうすればいいのかわかりません。

  • VB6からACCESSのレポートを印刷  

    OpenReportはレポート1 text2.text はテキスト型(何部印刷) oleAccess.DoCmd.OpenReport ReportName, acNormal oleAccess.DoCmd.PrintOut acPages, , , , CInt(Text2.Text) 上記の内容では印刷したときに、印刷ドキュメントがOpenReportとPrintOutでは違うんですけど,これでは 別々のデータが印刷さるのでこまってます。どうかいいアドバイスを下さい. 例  ACCESSのテーブル    テーブル1(青くなっている状態)    テーブル2    ACCESSのレポート    レポート1(青くなっている状態) っていう具合になっていて、ACCESSを開くとテーブル1にカ ーソルがある状態。 印刷のドキュメント レポート1 テーブル1 っいうふうになっていて、困っています. レポート1だけを何部印刷するとかはできないんですかね?

専門家に質問してみよう