現在、エクセル2000を使用しています。

 セルの”*”という文字をダブルクリックすると、ユーザーフォームが開き、テキストボックス内に文字を入力したらOK(コマンドボタン)を押すとセルにその文字が入ります。
 コマンドボタンを実行すると、Call ○○○で標準モジュールのマクロを呼び出すようになっています。
 このCallが10行くらい組んであり、それぞれの標準モジュールを呼び出しているのですが、ファイルが重たくなってしまいました。

 この標準モジュールをアドイン化して使用できるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

No.3訂正です。


アドインのxlaの標準モジュールには
public sub hoge(ByRef target as range)
If Intersect(target, Range("A4:A5000")).Value = "*" Then _
UserForm1.Show
end if
end sub
として、
アドインを組み込むXLSのシートのSheet Objectsの中に
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
dim return as Boolean
return = Application.Run ("hoge",Target)
End Sub
とすればよい。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
うまくできました。何度も回答していただきありがとうございました。

お礼日時:2009/05/27 15:22

VBのコードが、標準モジュールの方ではなく、Sheet Objectsの中に


あったのですね。
アドインのxlaの標準モジュールには
public sub hoge(ByRef target as range)
If Intersect(Target, Range("A4:A5000")).Value = "*" Then _
UserForm1.Show
end if
end sub
として、
アドインを組み込むXLSのシートのSheet Objectsの中に
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
dim return as Boolean
Application.Run ("hoge",Target)
End Sub
とすればよい。
    • good
    • 0

アドイン化といっても、特に特別な処理はいらないはずです。


使いたいモジュールやフォームを定義したエクセルファイルを保存するとき形式を.xlaにするだけのはずです。
ここにも書いてありました↓
http://www.atmarkit.co.jp/fwin2k/win2ktips/471fu …

この回答への補足

回答ありがとうございます。
上記のURL大変参考になりました。

しかし、元のエクセルファイルのユーザーフォームを削除し、アドイン化した方のユーザーフォームを使いたいのですが、例えば元のエクセルファイルで

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A4:A5000")).Value = "*" Then UserForm1.Show
End Sub

というマクロで*をダブルクリックするとUserForm1.Showの所でエラーメッセージでオブジェクトが必要です。というエラーが発生するのですが、どうしたら良いでしょうか。

補足日時:2009/05/27 11:02
    • good
    • 0

アドイン化しても、重さ(ファイルサイズ?)はさして変わらないと思います。

最も使う時だけアドイン有効にして、セーブする前に無効にすれば
小さくなるでしょうが

この回答への補足

回答ありがとうございます。
もちろんそうするつもりでアドイン化をしたいと思っています。

あと、ユーザーフォームもアドイン化して使えるのでしょうか?

補足日時:2009/05/26 17:01
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qワープロに貼り付いた画像のトリミングがしたい

ワープロ(Word等)に貼り付いている画像をトリミングしたいのですが、photoshop等の画像編集ソフトに取り込まずに編集する方法はないものでしょうか?

(質問した理由)
ワープロ上でオブジェクトになっている画像を編集するために一旦、別の画像編集ソフトにコピー等で取り込むと画質が落ちてしまいます。画質を落とさずに何とかトリミングしたいのです。(やりたいのはトリミングだけです)

(環境)
ワープロ:Word2002(Windows XP)
画像:JPEG
いつも使っている画像編集ソフト:Photoshop7.0

Aベストアンサー

矩形のトリミングでいいのなら,
図形を選んで右クリックの「図の書式設定」
の「図」のなかに,ズバリ「トリミング」が
あります。mm単位で指定します。

Q標準モジュールとクラスモジュールについて

標準モジュールでType型を使用しています。
この標準モジュールをクラスモジュールに置き換えて、Formから呼び出すCOMに作り変えたいのですが、引数ってどう設定したらよいのでしょうか?
今は標準モジュールなので、こんな感じで呼んでいるのですが・・・

例)
Private Sub Command1_Click()

Dim in_b As IN_PARA
Dim out_b As OUT_PARA

in_b.Name = "山本太郎"
in_b.Seikaku = "優しい"
in_b.Syumi = "釣り"
in_b.Tokugi = "野球"

Aベストアンサー

VBのCOMでは、Typeで宣言したものは公開できません。
公開可能なものは、Variantに格納できるもののみです。

対応としては、それぞれの項目を別々のプロパティにするしかないです。

Q描画オブジェクト内の図のトリミング

Word2002を使用しています。
描画オブジェクト内の図を正確にトリミングしたいのですが、マウスでトリミングはできても図の書式設定でトリミング範囲を数値で指定できません。
今は描画オブジェクトから出してからトリミングしてますが、他に良い方法はありませんか。また、これはWordの最新ver.では改善されているのでしょうか?
回答よろしくお願いします。

Aベストアンサー

Word2003 2007beta2 でも描画キャンパス内では
図の書式設定-図タブ-トリミング範囲 の項目は
グレーアウトしてしまいますね。

QEXECEL VBA コマンドボタンからのモジュール呼び出し 

お世話になります.

Excelのワークシート上にコマンドボタンを表示させ,
そのコマンドボタンを押下することで,
作成したモジュールを実行させたく思っています.
下記記述のUserFormの****の部分に,
作成した標準モジュールを呼び出す記述が必要と考えておりますが,
上手くいきません.
ちなみに標準モジュールは完成済みです.

Private Sub CommandButton1_Click()
*****************
End Sub

有識者の方,ご存知の方がいらっしゃいましたらご教授願います.

Aベストアンサー

別のやり方でもいいんでしょうか?
メニューの表示⇒ツールバー⇒コントロールツールボックス
でツールボックス表示させ、
"デザインモード"を押下した状態で、コマンドボタンをボタンをおきたいシートに配置する。
配置したボタンをダブルクリックする。
すると、ボタン押下時に呼び出されるモジュール(★A)が自動生成されます。
自分の作成した関数を標準モジュールにしたい場合は、★Aから、Callすれば、できます。
標準モジュールでなくてもいいなら、★Aに直接記述したらいけます。

Qワード2007 Microsoft Office Word 文書 オブジェクトで張り付けた図のトリミング

ワード2007
表をコピーし、別のWord文書に形式を選択貼り付けで「Microsoft Office Word 文書 オブジェクト」により貼り付けると小さい表でも空白部分ができて行の端から端までに張り付けられてしまいます。
空白部分をトリミングしたいのですが貼り付けた図を選択しても「図ツール」が出てきません。
トリミングする方法を大至急教えて下さい。

Aベストアンサー

クイックアクセスツールバーのカスタマイズから「トリミング」を登録してご使用ください。

「クイックアクセスツールバー」
http://www.becoolusers.com/office/quick-access.html

QVBのフォームモジュールと標準モジュールの使い分け

VBのフォームモジュールと標準モジュールの使い分けが今一つわかっていません。
フォームモジュールとは、フォーム(画面)上で起こったイベント(例えば、ボタンをクリックした時とか、ユーザーが行を選択したりだとか)の処理を、記述するところと解釈しています。
標準モジュールは、フォームが2つ以上あって、その2つが共通する処理(関数)などを、記述したり、フォームが1つでも、同じ処理を繰り返す場合、その処理を標準モジュールに書いたり・・・・という解釈をしています。
あってますでしょうか?

フォームが一つしかない場合、もしくは2つあっても、あまり共通する処理がない場合、なんかは標準モジュールはあまり使わないのでしょうか?
それとも、フォームが1つとかでも、今後のメンテの事など考慮して、標準モジュールを作ってそこにグローバル変数なんかで処理を書いた方がよいのでしょうか?
どなたか、教えてくださいませんか?
いろいろBBSなどで見てみるんですが、いろいろ書いてあって、どれが理想か
わかりません。よろしくお願いいたします。

Aベストアンサー

>標準モジュールは、フォームが2つ以上あって、その2つが共通する処理(関数)などを、記述したり
で良いと思いますよ。
逆に
>フォームが1つでも、同じ処理を繰り返す場合
は、フォームモジュールの中に関数を作ってしまうので良いのでは?

参考になるかわかりませんが、私はDBとの接続や、起動時の全フォームのロード、定数やプロジェクトレベルでのグローバル変数の宣言等に使用しています。
そういえばMain関数は標準モジュールにしか書けませんでした…っけ?
メッセージボックスを表示する際の関数を自分で定数とMsgBox()を組み合わせて使い勝手の良い物にする…というのもよくやります。

QC# 画像のトリミング処理

C#の課題で画像のトリミング処理を行いたいのですが、
どういった処理を行えばいいのか分かりません。

ネットでもいろいろ調べてみたのですが、
Picturebox上に表示させる画像のトリミング方法は見つかっても、
画像そのものにトリミング処理を行う方法は載っていませんでした。

上記のソースを参考にして、
Pictureboxをプリントスクリーンで撮って保存するやり方も試してみたのですが、Pictureboxよりも大きな画像(パソコンの解像度ぎりぎり)の処理で上手くいきません。


C#のソースプログラムでは
画像そのものに直接手を加える形でのトリミング処理は出来ないのでしょうか?

Aベストアンサー

 こんばんは。
 元画像のトリミング領域を元に、トリミングされた画像を作り出して、ピクチャボックスに設定するといった具合ではないでしょうか。
 例えば、元画像が640x480で、(320, 240, 100, 100)の領域を切り取りたければ、新しい画像を100x100で作成して、元画像の領域(320, 240, 100, 100)を、新しい画像の領域(0, 0, 100, 100)に向かって複写します。
 以後、新しい画像の方をピクチャボックスに設定します。
 以下ではディスプレイのスクリーンショットを撮って、(320, 240, 100, 100)の領域を切り抜きます。参考程度で。

private void Form1_Load(object sender, EventArgs e)
{
//スクリーンショット用の画像を作成(元となる絵、ファイルから読み込んで来ても良い)
Bitmap screenShot =
new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
System.Drawing.Imaging.PixelFormat.Format32bppRgb);

//スクリーンショットを撮る
Graphics gfxScreen = Graphics.FromImage(screenShot);
gfxScreen.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
gfxScreen.Dispose();

//トリミング画像を作成
Bitmap trim = new Bitmap(100, 100, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
Graphics gfxTrim = Graphics.FromImage(trim);

//スクリーンショットの領域(320, 240, 100, 100)をトリミング画像の領域(0, 0, 100, 100)に複写
gfxTrim.DrawImage(screenShot, 0, 0, new Rectangle(320, 240, trim.Width, trim.Height), System.Drawing.GraphicsUnit.Pixel);
gfxTrim.Dispose();

//トリミング画像をピクチャボックスに設定する
this.pictureBox1.Image = trim;
this.pictureBox1.Invalidate();
}

 こんばんは。
 元画像のトリミング領域を元に、トリミングされた画像を作り出して、ピクチャボックスに設定するといった具合ではないでしょうか。
 例えば、元画像が640x480で、(320, 240, 100, 100)の領域を切り取りたければ、新しい画像を100x100で作成して、元画像の領域(320, 240, 100, 100)を、新しい画像の領域(0, 0, 100, 100)に向かって複写します。
 以後、新しい画像の方をピクチャボックスに設定します。
 以下ではディスプレイのスクリーンショットを撮って、(320, 240, 100, 100)の領域を...続きを読む

QワードVBA:コマンドボタンを押して文字を入力

ExcelVBAはある程度出来るのですが、WordVBAを使ってあることをしたいと思っています。
ユーザーフォームに平仮名50音を書いた50個のコマンドボタンを取り付けます。ボタンを押すと言葉が入力できて、次に「変換」というコマンドボタンを押すと漢字変換ができる(押す毎に次候補を表示できる)ようにしたいのですが、このようなことは果たして可能でしょうか?
もし可能であれば教えて頂けませんでしょうか?よろしくお願いいたします。

Aベストアンサー

私もwordのvbaは使ったことがありませんが、可能であると思います。

VBでしたら、IME,getconversionlistなどをキーワードに検索するといくつかヒントになるサンプルが出てくると思います。 

http://homepage2.nifty.com/ToolzSquare/onlinesoft/soft_keyboard.html

まあ、使うためならフリーソフトでもいろいろあるようです。 
作ってみるために作るのなら、ちょっとめんどくさいと思いますが、がんばってください。

参考URL:http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpintl/html/_win32_ImmGetConversionList.asp

Qトリミングした画像で

集合写真を自分の顔だけトリミングした画像を送ったのですが、
元の画像(他の人も写ってる)が見れるというのですが、
トリミングした画像から元の画像に復元する方法ってあるんですか?

Aベストアンサー

言葉足らずでしたが、もう少し詳しくというのはPCでどんなソフトを使ってどのようにつくり、どのような形で保存したのかをお聞きしたかったのです。
たとえば、フリーソフトのJtrimを使って、自分の部分だけを切り抜いて別の名前で保存した・・・とかです。

> PCでトリミングした画像を自分の携帯に送って、それを他人の携帯に転送したのですが、
> その相手には他の人も見えるというのです。
> だけど、自分の携帯に送った画像は自分しか写ってなかったのに転送した画像に他の人が写っていた

たしかにトリミングして切り抜いた画像をPCから自分のケイタイに送って、それの中身を確認して相手に送ったら、相手の方は”周りが見えた”というのは、あり得ないハナシだと思いますよ。
実際に見せて貰ったのですか。
または、そのまま再転送してもらって確認されたらいかがでしょう。

相手の方は、ケイタイからPCに送って、何らかの手段を講じて見たということなのでしょうか?
ちょっと考えにくい話ですね。

QVBからモジュールでなくワークシートに書かれたマクロをCALL

はじめまして。
VB初心者です。

VBからExcelVBAで記述したマクロを呼び出したいのですが、
標準モジュールであれば、「Call xlApp.Run」でいけるのですが、
標準モジュールでなくワークシートに書かれたマクロをCALLするにはどうしたらよいのでしょうか?

ご教授ください。よろしくお願いします。

Aベストアンサー

sheet1のtest1を動かすなら
Call xlApp.Run "Sheet1.test1"

p.s
vbと言うとvb6かvb.net(2003,2005,2008でもかなり違う)なのか書いた方がいい


人気Q&Aランキング

おすすめ情報