- ベストアンサー
マクロ無しのbookでVBAを使う方法
マクロなしbook1があります。 このbook1をマクロで参照するには 1.book1で、VBAを使う 2.VBAで新規にbook2を開き、book1のシートを取り込む の方法を考えました。 2.は多分できるかとおもうのですが、1.のbook1でVBAを開く方法がわかりません。 VBAはずいぶん昔なので、今はVBAを使うBOOKの作り方をネットで学んだところです。(excelの神髄など) 1.の方法の手順を教えてください。 この手順がわかる良いサイトが教えていただけてもよいです。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
> ・book1を開く(マクロ無しで保存したもの) >・開発のvisualbasic(vba)をクリックでvbaのエディタ画面が開く > ・この状態では、エディタ画面にコードが書けないのです。 これはごく普通の操作なので出来て当たり前です。 「書けない」とは具体的にどういう現象なのでしょうか? 開発リボンのvbabasicのアイコンをクリックして、VBAエディターは起動するのですよね?その後どの段階でどうなりますか? 1.左上ペインに、開いたファイル名が表示されていない 2.開いたファイル名が表示されているが、右クリックできない 3.右クリックできるが、右クリックメニューに「挿入」が無い 3.右クリックメニューに「挿入」はあるが、その下に「標準モジュール」が無い 4.標準モジュールを挿入することを選択しても標準モジュールが作成されない 5.その他
その他の回答 (9)
- m3_maki
- ベストアンサー率64% (296/460)
難しく考えすぎです。 「book1」だけを開いた状態で VBE を起動し、 VBE の 左上(プロジェクトエクスプローラ)で おそらく「VBAProject (book1)」とかになっていると思いますが それを右クリック、「挿入」「標準モジュール」とクリックで出来ます。 それでも出来ないようなら、 「book1」で「マクロの記録」、 保存先を「現在のブック」にしてOKをクリック 「記録終了」をクリック 「マクロの記録」の隣にある、「マクロ」をクリック 開いたダイアログで表示されているマクロ名を選択し 「編集」をクリック とりあえずこれで VBA の編集ができます。 どんな マクロやシートモジュールがあるかが見えなければ プロジェクトエクスプローラの プラス表示をクリックして 展開すれば階層構造をみていくことができます
お礼
ありがとうございます。 わかりました。
- sknbsknb2
- ベストアンサー率38% (1158/3030)
回答No.5です。 Book1でVBAを立ち上げて、コードのウィンドウが表示されていない場合は、左上の"VBAProject(Book1)"の上にある3つのアイコンのうち一番左のアイコンをクリックしてください。
- imogasi
- ベストアンサー率27% (4737/17069)
#3です。VBAでVBAコードを書く・エクスポートするなどの、ことまでは、WEBなどに記事があります。でも、小生はやりすぎだと思うので、深くは勉強したり、実用化したことはないです。 質問者も、本件について、設計思想を改められた方がよいと思います。 http://officetanaka.net/excel/vba/vbe/04.htm VBComponentの操作 (新規)ブックに、「vBAを許容する」ことを、VBAレベルのコードで行うというのも、MSはしてほしくないのではないですか。 ーー 田中亨先生の記事に、たまにお目にかかりますが、他の方の書籍などには、出さないようにしていると思う。
お礼
No7 imogasiさん >> (新規)ブックに、「vBAを許容する」ことを、VBAレベルのコードで行うというのも、MSはしてほしくないのではないですか。 もしご案内のサイトが必要ならば、私もそれまではやりたくないです。 やりたいことを、再掲しますと、 ・book1を開く(マクロ無しで保存したもの) ・開発のvisualbasic(vba)をクリックでvbaのエディタ画面が開く ・この状態では、エディタ画面にコードが書けないのです。 これは、普通でない難しいことなのですね。 つまり、マクロ無しで保存したのに、それをまたマクロありで編集するのは、おかしいという論理なわけですか。 そうするとマクロありで保存をしなければならないのですか。これはできなかったのです。 そうすると、やはり第2の方法で、マクロありのブックから、マクロ無しのシートを読むほかないようですね。
- sknbsknb2
- ベストアンサー率38% (1158/3030)
回答No.5です。回答No.5に補足します。 (1)操作する前にbook1を開いておいてください (2)VBAプログラムが追加された状態で保存するときは、拡張子をxlsbにしてください
- sknbsknb2
- ベストアンサー率38% (1158/3030)
回答No.1です。 質問は、 「Excel上で、VBAのプログラミングを開始したいが、どうすればいいか」 ですね? ネットワーク版ではないExcelなら、下記手順でOKです。 ○上部メニューの「開発」を選んで、一番左にある「Visual Basic」を押す 「開発」が表示されていない場合は、 ファイル->オプション->リボンのユーザー設定 とたどって、右の方にある「開発」にチェックを入れてください。 ネットワーク版Excelでは、VBAは使えませんが、Officeスクリプト(操作記録マクロに相当するもの)は使えます。
お礼
>○上部メニューの「開発」を選んで、一番左にある「Visual Basic」を押す book1を開いて ここまではやってみましたが、Visualbasicは起動されますが、 その中に、コード作成作業域であるエデッタ画面が表示されないのです。 book1を開かないで、初めからvbaを作る手順(サイトによる)では、標準モヅールがあって、エディタ領域ができたのです。 ここのあたりの関連がよくわからない点です。
- kon555
- ベストアンサー率51% (1842/3559)
1については、そもそもマクロなしブックでは「マクロの保存」ができないだけなので、メモ帳などにコードをコピーしておいて、必要な時にエディタを開いてペーストすれば実行可能になります。 あとはマクロの組み方にちょっと工夫が必要になりますが、別途マクロ用のブックを作るのもアリです。 https://allabout.co.jp/gm/gc/297809/
- imogasi
- ベストアンサー率27% (4737/17069)
初心者らしく、余分なことを考えているか、質問に、適切に、難しい点が書かれていないと思う。 読む対象の「ブック(A)」のシート・データを読んだり書いたりするのは、(A)ブックにマクロの(許容や存在の)ありなしと関係ないはず。だから何を心配しているかよくわからない。 ーー 何かの事情で、(A)ブックを開かないで、(A)ブック(を)に「読んだり書いたり」したいという質問が時々出るが、これを考えることそのものが、ニーズに納得が行かない。 === 新たに、データのあり場所を明示して、(VBAを忘れて)やりたいことを「文章で表現」してみたら。
お礼
最初にやりたいことをかけばよかったですね。別なお礼で説明しました。 さらに言えば、book1を開いた状態で、そのbook1に付随して、visualbasicのコードエディタが開くことができればよいのです。それをやろうとすると、マクロ無しのbookなのでできないのようだったと思いますので、お尋ねしました。ここの操作を勘違いしているかも知れません。
補足
コメントの修正とか、追加情報ができないので、この部分で説明します。 再度実際にやってみました ・book1を開く(マクロ無しで保存したもの) ・開発のvisualbasic(vba)をクリックでvbaのエディタ画面が開く ・この状態では、エディタ画面にコードが書けないのです。 ここがわからないところです。
- sknbsknb2
- ベストアンサー率38% (1158/3030)
回答No.1です。回答No.1のお礼についてです。 Excelにおいては、マクロとVBAはほぼ同義で、操作記録のマクロはVBAで記述されます。 なので、 「VBAを使わないbook1を、book1を開いた上で、vbaを使うというつもりでした。」 というのを、 「VBAのプログラムを含んでいないbook1上で、VBAのプログラムを実行したい」 と解釈したのですが、違っていたでしょうか? それとも「VBAを使う」というのは「VBAでプログラミングする」という意味でしょうか? どちらも違う場合は、もう少し詳しく説明をお願いします。 ちなみに、book1以外にVBAのプログラムを含むbookが開かれている場合は、book1の上部メニューで 「開発」->「マクロ」 とたどれば、開いているbookのすべてのVBAプログラムが表示されます。 同じ「開発」タブで、VBAのプログラムを開始することもできます。 お使いのExcelの上部メニューには、「開発」が表示されていますよね?
お礼
「VBAのプログラムを含んでいないbook1上で、VBAのプログラムを実行したい」 そのつもりですが、 「VBAを使う」というのは「VBAでプログラミングする」という意味でしょうか? ここのところが、よく解せないのですが、両者は同義と思っています。確実に言えば、プログラムの方です。 具体的な操作は次のようなことです。 book1はおおよそ、50万行(レコード)ぐらいで、1レコードは10列くらいです。 だいたい1500レコードごとにある、あるキーにマッチしたレコードを抜き出し、となりの列(例えば11列目から)、あるいは別シートに順次書くことです。実はその表を提供されたときは編集保護がかかっていたので、サイトの情報をもとに、値だけコピーしたのがbook1なのです。手作業では非実現的なので、vbaで処理しようと考えた次第です。VBAの環境さえ整えば,vbaのプロfグラムは問題ないです(と思う)。
- sknbsknb2
- ベストアンサー率38% (1158/3030)
「マクロを含まないbook1でマクロを使う方法」と解釈してお答えします。 下記に、どのbookからでも共通マクロを使えるようにする方法が書かれていますので、参照してください。 https://koukimra.com/archives/53
お礼
ご返事ありがとうございます。 どうも私はマクロとvba(visualbasic)と混同して表現していました。操作の記録のマクロではなく、VBAのことです。 VBAを使わないbook1を、book1を開いた上で、vbaを使うというつもりでした。 ということでご案内のサイトは違うと思いますが、私の目的を満足する方法はないでしょうか。
お礼
詳しくご説明ありがとうございます。 書けないとは、VBAのコード編集画面がでないことです。 現象例の例示により確かめますと、 1.左上ペインに、開いたファイル名が表示されていない Sheet1があります 2.開いたファイル名が表示されているが、右クリックできない sheet1を右クリック、コード表示でコード編集画面(空白)がでました。この画面を期待していました。単に右クリックするだけなのですね。 3.右クリックメニューに「挿入」はあるが、その下に「標準モジュール」が無い →sheet1右クリックで挿入もあります さらに標準モジュールがあり 4.標準モジュールを挿入することを選択しても標準モジュールが作成されない →標準モジュールが作成されました そうすると、VBAのコードは、sheet1用のコード画面でなく、 標準モジュール用のコード画面を使えばよいですか。 また、sheet1用と、標準モジュール用画面との使い分けはなにでしょうか。 お手数ですが最後にご教示をお願いします。