• ベストアンサー

バーコードコントロールが印刷時に反映されない

いつもご丁寧な回答をくださりありがとうございます エクセルにバーコードを埋めて書類を作っているのですが (主に上紙に使用) バーコードのリンクセルで指定したセルに新しい番号を入れ デザインモードを終了すると 画面上は新しいバーコードが表示されるのですが 印刷プレビューと印刷そのものにうまく反映してくれません なにか設定的なものが間違えているのでしょうか 文章が稚拙で申し訳ありませんが回答のほどよろしくお願いします。

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

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

エクセルにおいてはバーコード画像は、「セルの値」ではないという認識が質問者にはありますか。 いわゆる「オブジェクト」扱いです。セルの値とは別世界のものです。 エクセルは「セルの値」を中心に処理するソフトです(エクセルの進歩の沿革からも)。これはエクセルの基礎的なことです。 ですからエクセルに画像を印刷する機能があるにしても、特別な指定をしないとをしないとだめと考えるべきです。 画像で右クリクー図の書式設定ープロパティーオブジェクトを印刷するーOK です。 この後、印刷プレビューをだすー印刷するでどうなりますか。これで解決しますか。 http://pc.z-kikaku.jp/excel/logs/2007/04/post-7.php など。 ーーー >バーコードのリンクセルで指定したセルに新しい番号を入れ の意味を、実例を出して、説明しておいたほうが良いのでは。

その他の回答 (2)

  • Randomize
  • ベストアンサー率70% (38/54)
回答No.3

バーコードコントロールの再描画問題ですね。 私も過去に同じ問題でかなり悩みました。 keithinさんの回答ではシートを新しく作成することでオブジェクトの再描画を強制させる方法ですが、もっと楽な方法があります。 オブジェクトのサイズを変更することによって再描画を誘発させる方法があります。 With [バーコードコントロールのあるシート名].OLEObjects("[再描画を行いたいバーコードコントロール名]") .Object.Value = "[目的のバーコードの中身]" .Width = .Width - 3 .Width = .Width + 3 End With これだけです。 幅を3だけ小さくしてすかさずサイズを3大きくして元の大きさに戻します。オブジェクトの大きさが変わるとバーコードコントロールの中身を拡大/縮小するために再描画が行われます。このときにバーコードコントロールの内容が新しい内容に強制的に書き換えられます。変更するサイズが3である理由はバーコードコントロールのサイズを厳密に調整しようとするとわかりますが、小数点を出さずに変更できるのは3ずつであるからだったりしますが、お好きな数字にしてください。 後はこのコードを印刷が行われる前に実行されるようにすればいいだけです。keithinさんが出しているBeforePrintイベントに書き込むのが妥当でしょう。 複数バーコードコントロールがある場合は複数回書くなりFor Eachでループを組むなり工夫してください。 では健闘を祈ります。

yumikko_1
質問者

補足

皆様、回答ありがとうございました。 結局、 1.新しいバーコード番号を入力 2.デザインモードのオン・オフをする 3.バーコードコントロールのプロパティを一回開く→OK でなぜか解決しました。 大変勉強になりました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

しばしば話題になるんですがなかなか名案が浮かばない,アタマイタイ問題の一つです。 doeventsもrefreshも効かない不具合です。 ThisWorkbookに private sub Workbook_BeforePrint(cancel as boolean)  application.enableevents = false  activesheet.copy before:=worksheets(1)  worksheets(1).printpreview ’またはprintout  application.displayalerts = false  worksheets(1).delete  application.displayalerts = true  cancel = true  application.enableevents = true end sub などのように仕込んで回避できることを発見した人がいました。 #こういった問題もあるので「バーコードフォント」をご利用頂いた方が簡単で安全かなと思います。