Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10897 / 13644 ツリー ←次へ | 前へ→

【18828】新規ブックにマクロとフォームをつけるには? にゃんぎょ 04/10/13(水) 19:24 質問[未読]
【18829】Re:新規ブックにマクロとフォームをつける... IROC 04/10/13(水) 20:45 回答[未読]
【18833】Re:新規ブックにマクロとフォームをつけ... にゃんぎょ 04/10/14(木) 9:41 質問[未読]
【18836】Re:新規ブックにマクロとフォームをつけ... IROC 04/10/14(木) 10:01 回答[未読]
【18839】Re:新規ブックにマクロとフォームをつけ... にゃんぎょ 04/10/14(木) 10:21 お礼[未読]
【19263】結果&ヘルプ! にゃんぎょ 04/10/26(火) 20:17 質問[未読]
【19276】Re:結果&ヘルプ! Jaka 04/10/27(水) 11:05 回答[未読]
【19279】Re:結果&ヘルプ! にゃんぎょ 04/10/27(水) 11:33 お礼[未読]
【19306】Re:新規ブックにマクロとフォームをつける... Ron 04/10/27(水) 21:05 回答[未読]
【19318】Re:新規ブックにマクロとフォームをつける... IROC 04/10/28(木) 10:09 回答[未読]
【19326】Re:新規ブックにマクロとフォームをつける... にゃんぎょ 04/10/28(木) 11:18 発言[未読]

【18828】新規ブックにマクロとフォームをつけるに...
質問  にゃんぎょ  - 04/10/13(水) 19:24 -

引用なし
パスワード
   毎度毎度お世話になります。

VBAで新規ブックを作成した後、メニューフォームと1枚目のシートにマクロを貼り付ける、ということをしたいのですが、
さっぱりわからず右往左往しています。
これって実現可能なんでしょうか。

どなたかご教授くだされば助かります。

【18829】Re:新規ブックにマクロとフォームをつけ...
回答  IROC  - 04/10/13(水) 20:45 -

引用なし
パスワード
   マクロウィルスのようなものを作りたいというご質問でしょうか?
実現可能ですが、このような公の場で
教えてもらうようなものではないと思います。

【18833】Re:新規ブックにマクロとフォームをつけ...
質問  にゃんぎょ  - 04/10/14(木) 9:41 -

引用なし
パスワード
   ▼IROC さん:
>マクロウィルスのようなものを作りたいというご質問でしょうか?
>実現可能ですが、このような公の場で
>教えてもらうようなものではないと思います。

いえいえ!違います。
質問の仕方が悪かったでしょうか、どうもすみません。
そんなだいそれたことをするつもりは全くないんです。

あるプログラムで作成したデータの結果を
エクセルでクライアント側に落とすのですが、
そのエクセルを元にクライアントが作業するのにマクロが必要なのです。
なので、データ結果のエクセルを保存する際に、
必要なマクロを添付(?)して保存したい、というわけなのです。

また、そのエクセルファイルは保存する際にはシートが1枚です。
しかしクライアントがマクロを実行するとシートが2〜3枚増えます。
その2枚目のシートのダブルクリックイベントをとらなければならないのですが、
添付しようとしているマクロはThisWorkbookに書き込むことになるのでしょうか?
1枚目のシートに書き込んでも、2枚目のイベントってとれるのでしょうか?

ほんとに説明が下手ですね・・・わかりにくいのは承知で、ご教授願います。

【18836】Re:新規ブックにマクロとフォームをつけ...
回答  IROC  - 04/10/14(木) 10:01 -

引用なし
パスワード
   状況は大体分かりました。


>あるプログラムで作成したデータの結果を
>エクセルでクライアント側に落とすのですが、
マクロを含むブックを作っておき、
そのシートにデータを出力するようには出来ないのでしょうか?
テンプレート(xlt)形式のマクロブックを作っておけば
そのブックを開いて、シートに出力すればできると思いますけど如何でしょう?


>その2枚目のシートのダブルクリックイベントをとらなければならないのですが、
>添付しようとしているマクロはThisWorkbookに書き込むことになるのでしょうか?
そうですね。
但し、「2枚目のシート」というのが何を指すのかにもよります。
シート名なら以下のようにできます。

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  If Sh.Name = "Sheet2" Then
    'ここの処理を書く
  End If
End Sub

左から2番目のシートのときであれば
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  If Sh.Index = 2 Then
    'ここの処理を書く
  End If
End Sub

【18839】Re:新規ブックにマクロとフォームをつけ...
お礼  にゃんぎょ  - 04/10/14(木) 10:21 -

引用なし
パスワード
   ▼IROC さん:

レスありがとうございます!

>マクロを含むブックを作っておき、
>そのシートにデータを出力するようには出来ないのでしょうか?
>テンプレート(xlt)形式のマクロブックを作っておけば
>そのブックを開いて、シートに出力すればできると思いますけど如何でしょう?


なるほど!上記のようなやり方もあるのですね。
これから試してみたいと思います!
結果はまたご報告したいと思います。

【19263】結果&ヘルプ!
質問  にゃんぎょ  - 04/10/26(火) 20:17 -

引用なし
パスワード
   いつもいつもお世話になっております。


>>マクロを含むブックを作っておき、
>>そのシートにデータを出力するようには出来ないのでしょうか?
>>テンプレート(xlt)形式のマクロブックを作っておけば
>>そのブックを開いて、シートに出力すればできると思いますけど如何でしょう?
>
>
>なるほど!上記のようなやり方もあるのですね。
>これから試してみたいと思います!
>結果はまたご報告したいと思います。


結果は、今回の場合ダメでした。
上記のやりかたで方針が固まっていたのですが、不具合が生じ、ふりだしに戻ってしまいました。
テンプレート形式のマクロブックに、VB(.NET)で操作をしてシートを増やし、
その結果をクライアントにおとす、という流れなのですが、
マクロがついているとエクセルが.NETで開かないのです。(マクロがないと開きます)

よって、.NETでシートを増やしたあと、そのブックにマクロをインポートするというやりかたを模索している状況です。
マクロには標準モジュール、フォームが2つ、そしてThisWorkbookがあります。
標準モジュール、フォームはいいのですが、ThisWorkbookをインポートすると、
クラスになってしまいます。
シートのダブルクリックイベントをとらなければならないので、ThisWorkbookに書き込まないと困るのですが・・・
ThisWorkbookをThisWorkbookにインポートすることはできないのでしょうか。
あるいは、インポートしたマクロでThisWorkbookに(自分に、ですね)コードを書くことは可能でしょうか。

説明が下手で申し訳ありません。
ご教授いただければ助かります。

【19276】Re:結果&ヘルプ!
回答  Jaka  - 04/10/27(水) 11:05 -

引用なし
パスワード
   ▼にゃんぎょ さん:
>ThisWorkbookをThisWorkbookにインポートすることはできないのでしょうか。
出来ないと思います。

一応検索してね!
あ、XPだと出来ません。

V3
http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=ntr;tree=7482;id=Excel
http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=ntr;tree=11375;id=Excel
http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=ntr;tree=11576;id=Excel

V4
http://www.vbalab.net/vbaqa/c-board.cgi?page=&no=6812&mode=tre&id=excel&cmd=jmp

【19279】Re:結果&ヘルプ!
お礼  にゃんぎょ  - 04/10/27(水) 11:33 -

引用なし
パスワード
   ▼Jaka さん:

本当にいつもありがとうございます。
参考にしてみます。

クラスとしてインポートされたThisWorkbook1をブックオープン時にコピーして
ThisWorkbookにインサートするやり方を試みています。
ただ、ブックオープン時にはフォームを出しているのですが

1.インサート
2.フォーム.Show

でもフォームが消えてしまうので試行錯誤中です。

【19306】Re:新規ブックにマクロとフォームをつけ...
回答  Ron  - 04/10/27(水) 21:05 -

引用なし
パスワード
   こんにちは。
状況がいまいち...ですが、参考までに。
ThisWorkbookではなく、クラスモジュールでダブルクリックイベントをキャッチします。

'====標準モジュールに====

Public ClassApp As Class1
Sub auto_open()

  Call SetClass
  UserForm1.Show

End Sub

Sub SetClass()
  
  Set ClassApp = New Class1
  Set ClassApp.App = Application
  
End Sub

'===クラスモジュールに(Class1)===

Private WithEvents clsApp As Application
Property Set App(xlsApp As Application)
  Set clsApp = xlsApp
End Property
Private Sub clsApp_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

  If Sh.Name = "Sheet4" Then
    MsgBox Sh.Name & "でダブルクリックされました"
  End If
  
End Sub

的外れ?でしたら、すみません。
では。

【19318】Re:新規ブックにマクロとフォームをつけ...
回答  IROC  - 04/10/28(木) 10:09 -

引用なし
パスワード
   ExcelやOSのバージョンなどの使用環境について教えていただけませんか?

【19326】Re:新規ブックにマクロとフォームをつけ...
発言  にゃんぎょ  - 04/10/28(木) 11:18 -

引用なし
パスワード
   ▼IROC さん:

IROCさん、Ronさん、ありがとうございます。

>ExcelやOSのバージョンなどの使用環境について教えていただけませんか?
Excel2003、OSはXP Professional(Ver.2002)です。

WithEvent、Property Setなど、まだまだ未踏の地でして・・・
これから勉強します。
テストではマクロをインポートして保存し、ちゃんと動くところまでこぎつけました。
あとはこれを.NET側で実現できれば・・・という状況です。

10897 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free