• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2007でworkbookと標準モジュー)

Excel2007でのworkbookと標準モジュールの使い方

このQ&Aのポイント
  • Excel2007でのworkbookと標準モジュールの使い方について質問です。VBAのプログラミング初心者ですが、このサイトで数々の質問をさせていただき、解答と共にソースコードもいただいたことがあります。ありがとうございました。
  • 私はExcel2007でのVBAのプログラミング初心者です。このサイトで質問をさせていただき、解答と共にソースコードもいただいたことがあります。そこで、私はそれらのソースコードを1つのworkbookの標準モジュールに書きました。そして、別のデータを入れたブックをコピーしましたが、コピー元のブックにある標準モジュールのソースコードがコピーしたブックで使えないエラーが発生しました。どのようにすればコピー先のブックでもコピー元の標準モジュールのソースコードを使用できるでしょうか。
  • Excel2007でのworkbookと標準モジュールの使い方に関する質問です。私はVBAのプログラミング初心者で、このサイトで数多くの質問をさせていただきました。質問に対していくつかの解答と共にソースコードもいただいたことがあります。そのため、私はそれらのソースコードを1つのworkbookの標準モジュールにまとめました。しかし、別のデータを入れたブックをコピーしたところ、コピー元のブックにある標準モジュールのソースコードがコピー先のブックで使えないエラーが発生しました。どのようにすればコピー先のブックでもコピー元の標準モジュールのソースコードを利用できるでしょうか。

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

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

Q、標準モジュールが全ブックで使えるようにするには? A、そのような関数を標準モジュールに書くことです。  標準モジュールに書くのは、マイクロソフトが提供する関数やツールでは不足の機能を補う働きをする関数のみです。マイクロソフトが提供する関数やツールが、全ブックで共通して使えるように、これらもそのように設計する必要があります。例えば、そこに書くべき関数は、以下のようなものです。 標準モジュール1:共通標準関数 Pause() Message() ErrorMsg() StopMsg() Warning() Verify() CutStr() LenH() CharCount() SetL() SetR() Rounds() GetDate() DosCommand() 標準モジュール2:ファイルシステム関数 FolderExists() FileExists() FileSize() getFileList() FileWeite() FileReadAll() FileRead() DilereadArray() 標準モジュール3:データベース関数 for Excel ErrMessage() SQLExecute() DLoookp() DSelect() SheetWriter() 標準モジュール4:データベース関数 for Access CnnLExecute() DBLoookp() DBSelect() TableWriter()  いずれも、ブックやシートで書くVBAコードを簡素化するためのものです。通常は、これ以外のは標準ライブラリーには登録しません。 >数々の解答と共にソースもいただきました。  それらは、標準モジュールではなくて、《こういう時にはこのように書けばよい》という忘備録付きで Word などに記録しておいたらいいです。で、それをコピペしたら動くなんてことは、期待しないことです。 以上!

961awaawa
質問者

補足

数々の解答と共にソースもいただきました。  >それらは、標準モジュールではなくて、《こういう時にはこのように書けばよい》という忘備録付きで Word などに記録しておいたらいいです。で、それをコピペしたら動くなんてことは、期待しないことです。 以上! 実際にコピー元のブックではしっかりと動いてるんです。 データ内容は違っても記号や数字だけなんです。形等は全部一緒なんです。 ブックをコピーをせずに新規ブックから立ち上げてそこにsheetやソースをコピーした方ら上手く行くでしょうか?

その他の回答 (4)

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

エラーが起こった時に、シートやセルの場所やエラーコードなどを、具体的に考えることです。 今回も質問者は、生半可な原則論だけを投げているだけ。 ーー 数日考えても、原因が思いつかない経験などよくある。 コピーしたのだからそのまま動くというのは、たまたまそうであっただけ。 動かないようにする例など、専門家なら、すぐ考え着くように思う。 すでに回答者がおっしゃっているように、ここの回答のコードは、その回の例に対する対応だけである場合が多く、いろんな場合を考えた、エラーチェックなどは省いているのがほとんど。本筋を理解してもらう為の、複雑さは省いた、初心者向けの学習用コードである。 他人に使ってもらう為には、熟練したプロが、コードを作らないと、初心者では ボロがでる恐れが多い。 大胆にも、VBAやシステムの経験が最近始めた人が、また初心者向けに、システムをエクセル!!で作ろうとしている質問が結構数、出るが、危険一杯だ。 また、エクセルは開発するため向けに作られたソフトではない。 セキュリティ対策など考えてもいない。 === 上記は、やはり原則論だが、具体論としては、 ・(その名の)オブジェクト(ブック、シート、セルなど)が、今回の処理時点でも存在するか。 ・データが今回の処理時点でも存在するか。予想のデータ性格や範囲か。 などを疑ってみては.いわばデータ依存のことかな。  システムのプロでも、予想外のデータが入ったので、システムが止まり、電車や銀行・証券業務などが数時間動かず、何十億円の損害が出た、というケースはある。システムは怖いものと心得よ(ただし個人的意見)。

961awaawa
質問者

お礼

ありがとうございました。

回答No.4

 okwaveってのは、汎用的なコードを手にする場所ではありませんよ。あくまでもその場しのぎのコードを入手する場。質問者も、{それはカクカクシカジカのライブラリを開発し、カクカクシカジカのコードを書いてカクカクシカジカに解決されたし}なんて回答なんて期待していまでせん。また、大抵は、ライブラリー化するに足りるコードを提示する程に問題点を整理しての質問は皆無でしょう。それができるプログラマならば、コードの書き方なんて質問は絶対にしません。そんなこんなで、解答者もその場しのぎのコードを提示する訳です。それを汎用レベルに改変するのは質問者の役目。この役割分担は絶対です、ですから、ここで仕入れたコードはword行き。でないと、ごみで一杯になりまづよ。そういうことです。

961awaawa
質問者

お礼

ありがとうございました。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

繰り返しますが、 >>そのエラーとなるコードとエラーメッセージを >> このサイトにポストしましょう。 >>アドバイスを得られると思います。 これらが明示されないと、動作しない原因を説明することができません。

961awaawa
質問者

お礼

ありがとうございました。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

>コピー元のブックの標準モジュールのソースが >コピーしたブックで使える様にするにはどうすればよろしいでしょうか? その標準モジュールに書き込んであるソース次第です。 そのソースが、 自ブックの名前を使っているとか シート数に依存しているとか シート名に依存しているとか、 考えられそうな原因はいろいろと考えられます。 VBAを扱う場合は、 そのマクロを起動できるだけではなく、 エラーの原因を特定し、修正するスキルが求められます。 そのスキルは少しずつ身につくでしょうから まずは、 そのエラーとなるコードとエラーメッセージを このサイトにポストしましょう。 アドバイスを得られると思います。

961awaawa
質問者

お礼

実際にコピー元のブックではしっかりと動いてるんです。 データ内容は違っても記号や数字だけなんです。形等は全部一緒なんです。 ブックをコピーをせずに新規ブックから立ち上げてそこにsheetやソースをコピーして持ってきさえすれば上手く行くでしょうかね?

関連するQ&A