プロが教えるわが家の防犯対策術!

VB初心者です。

いろんな処理をブックのマクロで行なっています。
今までは手作業でマクロを実行させてきたのですが
自動化したいと考えています。

処理させたいブックは複数あって
それぞれを処理するためのコントロール的な役割を
フォームをもたない実行ファイル(VB)で行ないたいと
思っているのです。
実行ファイルはタイマなどで自動起動を考えています。

そこで、
VBからブックのプロシージャーをCALLする方法がありましたら
具体的なコードを教えてください。
また、もっと簡単な方法がありましたら、
よろしくお願いします。

A 回答 (6件)

以前にエクセルとVBの連携のサンプルを乗せてます


http://oshiete1.goo.ne.jp/kotaeru.php3?q=165565
の#2の内容を見てください。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=165565
    • good
    • 0

今日は仕事休んじゃいました。

。。(^^;)

エクセルを閉じた後か、ブックを閉じた後にマクロを呼んではいないですか?

ちょっと郵便局に行って来るので、レスが遅れます。
m(__)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご指摘のとおりでした。
またよろしくお願いします。

お礼日時:2001/11/14 17:12

エクセル起動


Set xlApp = New Excel.Application

'アドイン情報の更新
xlApp.AddIns("分析ツール").Installed = False
xlApp.AddIns("分析ツール").Installed = True

'DSFP_EP 作成 ワークブックを開く
xlApp.Workbooks.Open ("F:\foruser\Duration Data 作成.xls")

として、アドイン情報をリフレッシュする必要があるようです。

うまくいかなかったら報告してください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
解決できました。
しかしそのエキスパートさには脱帽です。解答数からみて
仕事の合間に回答しているとは思えないのですが。

ついでで申し訳ないのですが、いろいろやってみましたが
自分では解決できそうにありません。

以下の不具合があります。
呼び出すマクロによっては終了時にエラーとなります。

エラーの内容は
「実行時エラー 440
Run メソッドは失敗しました:'_Application'オブジェクト 」

ただし、結果的にはうまく処理(最終的なファイルが出力されて終了)
できています。手動で行なった場合もうまく終了しています。

こころあたりありましたら、よろしくお願いします。

お礼日時:2001/11/14 15:31

なるほど、状況がわかりました。


全てはWORKDAY関数のせいです。
これはエクセルのアドインの分析ツールの関数です。
これはエクセルの追加機能なので、WORKDAY関数は反映しないようです。

回避方法は・・・すぐには調査不可能なので、また明日までに調べておきますね。
    • good
    • 0

>=TEXT(WORKDAY(TODAY(),0,Date!A2:A40),"yymmdd")&"_Duration.csv"


>と設定されていて
>
>通常は"011113_Duration.csv"となります。

とありますが
=TEXT(WORKDAY(TODAY(),0,Date!A2:A40),"yymmdd")&"
の部分で[011113]を取得するのですか?
WORKDAY関数って?オリジナル関数ですか?

画面の表示上では[011113]と出てるのに、VBAマクロ:Report内で、そこのセルの値を取得してる部分に"#NAME?"が入るという意味ですか?

VBAマクロ:Reportの内容を見てみないと、なんとも言えません。。。

この回答への補足

即日の解答ありがとうございます。これより別件で席を離れますが
以下補足いたします。

WorkDayはエクセルにあらかじめ組み込まれている関数のようです。以下はヘルプでみました。
書式
WORKDAY(開始日, 日数, 祭日)
開始日から起算して、指定された稼動日数だけ前または後の日付に対応する値を返します。

>とありますが
>=TEXT(WORKDAY(TODAY(),0,Date!A2:A40),"yymmdd")&"
>の部分で[011113]を取得するのですか?

はいそうです。
我々が使用している意味は祭日休日でない営業日を算出しています。

通常(VB起動でない)エクセルを開くと
”011113_Duration.csv"と入っていますが、
VBから起動すると、エクセルが表示され項目を見てみると "#NAME?"
となっています。

以下がReportのコードです(手動では動いています。)

A1の項目に例の内容(011113_Duration.csv)が入っています。
その内容(XXX)をOpenしてるところでエラーになり、エラーは
"実行時エラー 13
型が一致しません”です。

Sub Report()

Sheets("Macro").Select
Range("A1:A1").Select
XXX = ActiveCell.Value
Range("A10:A10").Select
YYY = ActiveCell.Value
Range("A2:A2").Select
ZZZ = ActiveCell.Value

ChDir "\\Tokyo\IFProto\foruser\調査\org"
Workbooks.Open FileName:= _
"\\Tokyo\IFProto\foruser\調査\org\" & XXX

Sheets("Yield").Select
以下コードはつづく

補足日時:2001/11/13 16:59
    • good
    • 0

>VB初心者です。


とありますが、参考URLのサンプルは難しかったですか?
わからない所があったら、聞いてください。

解決したのであれば、コメントもポイント発行しなくてもいいので、締め切ってくださいね。
    • good
    • 0
この回答へのお礼

先日も重ね重ね解答ありがとうございます。
いろいろ試行錯誤しているのですが、新たな問題があって困っています。

以下の問題解決方法知ってましたらよろしくお願いします。

呼び出され側のエクセルのマクロ内でエラーとなります。
原因はシート内の項目を参照しているのですが、内容が
"#NAME?"となっています。
実際は
=TEXT(WORKDAY(TODAY(),0,Date!A2:A40),"yymmdd")&"_Duration.csv"
と設定されていて
通常は"011113_Duration.csv"となります。
DateシートのA2からA10までは日付が入っています。

うまく関数が実行されていないのですかね?


VBのコードは以下のように作成しました

Sub main()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook

'エクセル起動
Set xlApp = New Excel.Application

'DSFP_EP 作成 ワークブックを開く
xlApp.Workbooks.Open ("F:\foruser\Duration Data 作成.xls")
Set xlBook = xlApp.ActiveWorkbook

xlApp.Visible = True

'マクロをCallする
Call xlApp.Run("Report")

'閉じる時の「保存しますか」を表示させない
xlBook.Saved = True

Set xlBook = Nothing
Set xlApp = Nothing

End Sub

お礼日時:2001/11/13 16:20

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