• ベストアンサー

EXCELのVBAでフォームに文字を出力したい

EXCELのVBAでフォームに直接、文字や円を出力したいのですが・・・ フォーム名 print 変数 フォーム名 circle(a,b),c とプログラムしてもエラーが出てしまい実行されません。 何が原因なんでしょうか?

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

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

Excelのフォームと、VBのフォームとは全くの別物です。 ExcelのフォームにはPrint等の描画系メソッドは装備されていません。 ○Win32APIで描画を行う。 ○Shapeオブジェクトをどうにかする。 ○VB等で描画メソッドを装備したActiveXコントロールを作成する。 グラフの描画目的であれば、 ○市販のグラフ系のコントロールを使用する。 ○Microsoft Chart コントロールを使用する。(配布時のライセンスに注意) などが使えると思います。 どの方法も、実際にやって確かめたわけではないので、自信は「なし」としておきます。 (個人的にはActiveXを作る方法が良さそうに思います。ひょっとしたら、どなたかが作成された似たようなコンポーネントがあるかもしれませんね。)

jojo_jo
質問者

お礼

回答ありがとうございます。 なるほど!!EXCELVBAのフォームとVBのフォームは違うものだったんですか。 わかりました。 まぁ後は何とかやってみます。 ありがとうございました。

関連するQ&A

  • AccessのフォームをExcelに出力

    いつもお世話になっております。 現在、Access2003でDBを作成中です。 "テーブル1"をパラメータクエリで抽出します。"クエリ1"。 そのクエリを基にフォームを作成しています。"フォーム1"。これは抽出して印刷したり、Excelに出力するために作成しました。レポートではなく、フォームにした理由は、コマンドボタン等を配置できることからです。 Excelに出力する際のVBAでつまづいてしまいました。 DoCmd.OutputTo acOutputForm, "フォーム1", acSpreadsheetTypeExcel9 これで問題なく出力できています。が、、、 Access2007の一部のPCでこれを実行するとエラーが出ます。 原因は"OutputTo"が含まれているとエラーになるようです。 ちなみにエラーは「現在出力しようとしているオブジェクトの形式は無効です。」 「2007 Office スイート Service Pack 2」こちらをインストールすると良いそうなのですが、だめでした。 WindowsXP、Office2007はこのVBAだとエラーになります。 WindowsVista、Office2007は正常に使えました。 PCの何か設定?と考えたりもしたのですが、はっきりとした原因がわからないのでは、他の人にDBを使っていただけないので、エラーにならないVBAでいきたいです。 もうひとつ、 mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "フォーム1", mFileName こちらのVBAはクエリの出力だとうまくいくのですが、フォームだとだめでした。 クエリから抽出して保存すれば良いのですが、理想はこの形です。 1.フォーム1を開くと「担当者を入力」とパラメータクエリが働き、抽出結果をフォーム1に表示される。 2.[出力]ボタンを押すと、ダイアログボックスが開いてファイル名を指定して保存する。または、ダイアログボックスが開かなくても名前を指定できれば良いです。最悪、指定できなくても良いですが、原因となる、"OutputTo"を避けたVBAでいきたい。 3.mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "クエリ1", mFileName これだと、1.でパラメータクエリで抽出結果をフォームに表示させて、2.で[出力]ボタンを押すと、また、パラメータクエリで抽出しなければならなくなるのでできれば避けたいです。 こちらの条件でご教授お願い致します。 また、WindowsXP、Office2007でエラーが出ましたので、これを解決する方法でも良いです。 よろしくお願い致します。

  • エクセル2003で作ったVBAが2007で動かない

    現在、エクセル2003で作成したVBAがエクセル2007だと、マクロを有効にして起動させようとするとコンパイルエラーとなって動作しない現象が起きていて困っています。 どなたか、解決方法をご教授頂けないでしょうか? ・VBAを含んだファイルを開いて、マクロを有効にすると ”コンパイルエラー:変数が定義されていません” というエラーボックスが出てきてプログラムの矢印のポイントがPrivate Sub User Form_Initialize() のところを指したまま止まってしまう。 ・このVBAはエクセルの表の書かれたデータをRS-232Cで出力するようなプログラムが使われていて、MSCommというものが使われています。この関連のプログラムが2003と2007では互換がないということはありますでしょうか? どうぞ、よろしくお願い致します。

  • フォームのOPENとCLOSE(ACCESS VBA)

    ACCESS VBAでフォームA(親)→フォームB(子)→フォームC(孫)とフォームを開いています。 今までは順調に動いていたのですが急にフォームCを閉じると、親フォームのオブジェクトを見つけれないという実行時エラー7874が表示されるようになってしまいました。 デバッグをするとフォームBでフォームCを開いた↓ DoCmd.OpenForm "フォームC", , , , acFormAdd, acDialog の部分にエラー原因があるようです。 なぜこの部分にエラーがでるのかよくわかりません。 しかも何度もやっているうちに(何もプログラムの内容はかわっていません)また動くようになりました。 ひとつわかったのは動く時にはフォームCを閉じた時に フォームBのDoCmd.OpenForm "フォームC", , , , acFormAdd, acDialogの部分の次に帰っているということです。 とりあえず動いてはいますが、原因がわからず困っています。どなたか理由がわかりましたら教えてください。

  • Excel VBAのユーザーフォームについて

    Excel VBAでユーザーフォームを作成しています。 ユーザーフォームで出力したファイル 「出力ファイルA」 ユーザーフォームで使用するファイル 「ファイルB」 を、起動していると必ず「インデックスが範囲内にありません」 といった内容のエラーが表示されます。 ユーザーフォームで使用するファイルの表示中に そのようなエラー画面が出てきても仕方がないと思うのですが、 ユーザーフォームはマルチ画面を作成したので ファイルは「出力ファイルC」も出すことができる仕様です。 また、「出力ファイルA」「出力ファイルC」は コンボボックスで選択した西暦がファイルの先頭に付くので (例:2014_出力ファイルA.xls) 必ず同じファイル名が出力されるとは限りません。 なので、そのようなエラーが表示されないようにしたいのですが可能でしょうか? また、特別なコードは記述していないのですが、 なのでボタンとかコンボボックスのコードを書けばよいのか・・・という感じなのですが、 どのように対処すればよいかわかりません。 それと、出力したファイルの内容を確認するためにアクティブには、 ユーザーフォーム画面を終了させるしかならず、 そもそもそうゆう仕様なのかがわかりません。 ユーザーフォームを作成するのは初めてなので初心者丸出しで お恥ずかしい限りなのですが、 どなたかアドバイスいただけますと幸いです。 こんな抽象的ですが、どうお伝えすればよいのかがそもそもわからず困っていて、 それに時間もなく頭を抱えているので お手柔らかに願います。 よろしくお願い致します。

  • VBAでエクセルからのファイル名とテキスト化を自動で実行する方法

    マクロを実行して、エクセルのセルからファイル名とテキストファイルを自動で出力したいのですが、VBA初心者なのでプログラムの書き方がわかりません。 どうかVBAのプログラムの書き方を教えて下さい。 【マクロ実行前のエクセル状態】 1.エクセルのA列にファイル名1を入力 2.エクセルのB列にファイル名2を入力 3.エクセルのC列にテキスト出力させたい文字列を入力 【期待のマクロ動作】 ファイル名1+ファイル名2のファイル名でC列の文字列をテキストファイルで出力。 《例》 A B C 1 2 あ ⇒マクロ実行⇒ファイル名『12』テキスト内容『あ』 3 4 い ⇒マクロ実行⇒ファイル名『34』テキスト内容『い』 5 6 う ⇒マクロ実行⇒ファイル名『56』テキスト内容『う』 7 8 え ⇒マクロ実行⇒ファイル名『78』テキスト内容『え』 ・ ・ ・ ・ 上記の様に、一回のマクロ実行で入力されている列のセル全て がファイル名付きのテキストファイルとして出力をさせたいです。 申し訳ありませんが、よろしくお願いいたします。

  • エクセルのVBAについて

    エクセルのVBAについて教えて下さい。 エクセルのVBAでプログラムを組んでいるのですが、一つわからないことがあるのです。 マクロが実行(オープン)されるファイル名(ファイルパス)をVBAで取得するためにはどうすればいいでしょうか? たとえば、マクロが実行されるファイルがC:\テスト.xlsならば "C:\テスト.xls"を取得したいと考えています。 どなたかご教授お願い致します。 宜しくお願い致します。

  • エクセルVBA ユーザーフォームをオブジェクトとしてセットする書き方?

    いつもご回答頂きありがとうございます。 エクセルVBAでユーザーフォームをオブジェクト変数として セットする書き方を教えていただけないでしょうか? エクセルVBAでAファイルとBファイルがあり AファイルのVBAからBファイルを開いて、データを取得し Aファイルに記入していく。と言うVBAを作成しました。 ただ、BファイルにはopenイベントでBファイルに作成された ユーザーフォームがloadされるようになっていて、 AファイルからBファイルを開けたとき、そのユーザーフォームを 消したいのですが、消す方法が分かりません。 AファイルからBファイルをopenメソッドを用いたあと、ユーザー フォームを消せばいいと思うのですが、書き方が分からず困って おります。 オブジェクトとしてセットして、そのオブジェクトをunloadすれば いいかな?とか思っているのですが、セットの仕方もわからず、、、 宜しくお願いいたします。 それぞれのファイル名を「ファイルA」、「ファイルB」、 ユーザーフォーム名を「UserFormB」としたとき、どのように 書けばよろしいでしょうか?

  • EXCEL VBA フォームにメッセージ出力

    お世話になります。 以前にも似たような質問をさせていただきましたが、再度EXCEL VBAのフォームにメッセージを出力する件で質問させていただきます。 下記のVBAはA支店、B支店、C支店のデータを集計する処理なのですが、この処理の途中経過をユーザーに知らせるためにフォームを表示しています。 フォームの真ん中にメッセージ出力する領域としてLabel_Statusという名前で"ラベル"を作成しました。 このラベルにメッセージを表示することは前回ご教授いただきまして実現することができました。 実際に動かしますと "集計完了!"とだけ出てしまい、途中経過の"データ集計中(A支店)・・"が出力されないのです。なぜでしょうか? 以下がVBAです Me.Label_Status.Caption = "データ集計中(A支店)・・" --A支店集計処理-- Me.Label_Status.Caption ="データ集計中(B支店)・・" --B支店集計処理-- Me.Label_Status.Caption = "データ集計中(C支店)・・" --C支店集計処理-- Me.Label_Status.Caption = "集計完了!" ←このメッセージだけが出力されてしまいます VBAここまで 環境 Windows XP SP3 EXCEL2003 以上です。どなたかご教授いただけませんでしょうか?

  • VBAのバイナリ出力について

    この度はお世話になります。 VBAについて、調べながらやっているのですが・・・うまくいかずに悩んでいます。 エクセルのVBAでバイナリファイル(xxx.bin)を出力したいのですが 思った出力が出ないでいます。 エクセルの方でDEC2HEXをした512文字を、そのままの状態でバイナリファイルを生成をしたいです。 そこで、まずはtxtで書き出せるかやってみまして・・・ Sub test() fnsave = "1.txt" Worksheets("Sheet1").Activate numff = FreeFile Open fnsave For Output As #numff temp = Range("C3") Print #numff, temp Close #numff End Sub (Sheet1のセルのC3に512文字入っています。) これをOutputをBinaryにして・・・Putで書く? 多分2文字を取り出して・・・書き込む?ような感じなのですが それをプログラムに起こす書き方がわからず困っています。 申し訳ございませんが、ご教授よろしくお願いします。。。

  • エクセルVBAのフォームの表示する文字を見やすくしたい

    エクセルVBAでフォームを作りました。 使いやすくするために テキストボックスの文字を大きくしたり、 大きなテキストボックスでは文字を折り返し表示をさせたりしたいのですが、どうすればいいかわかりません。 教えてください。

専門家に質問してみよう