OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

VBからエクセル(ブック)のプロシージャーをCallできますか?

  • すぐに回答を!
  • 質問No.167399
  • 閲覧数252
  • ありがとう数5
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 38% (46/121)

VB初心者です。

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

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

そこで、
VBからブックのプロシージャーをCALLする方法がありましたら
具体的なコードを教えてください。
また、もっと簡単な方法がありましたら、
よろしくお願いします。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル12

ベストアンサー率 65% (276/422)

以前にエクセルとVBの連携のサンプルを乗せてます
http://oshiete1.goo.ne.jp/kotaeru.php3?q=165565
の#2の内容を見てください。
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.2
レベル12

ベストアンサー率 65% (276/422)

>VB初心者です。 とありますが、参考URLのサンプルは難しかったですか? わからない所があったら、聞いてください。 解決したのであれば、コメントもポイント発行しなくてもいいので、締め切ってくださいね。 ...続きを読む
>VB初心者です。
とありますが、参考URLのサンプルは難しかったですか?
わからない所があったら、聞いてください。

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

お礼率 38% (46/121)

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

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

呼び出され側のエクセルのマクロ内でエラーとなります。
原因はシート内の項目を参照しているのですが、内容が
"#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:35
  • 回答No.3
レベル12

ベストアンサー率 65% (276/422)

>=TEXT(WORKDAY(TODAY(),0,Date!A2:A40),"yymmdd")&"_Duration.csv" >と設定されていて > >通常は"011113_Duration.csv"となります。 とありますが =TEXT(WORKDAY(TODAY(),0,Date!A2:A40) ...続きを読む
>=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の内容を見てみないと、なんとも言えません。。。
補足コメント
hanikos2001

お礼率 38% (46/121)

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

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:23
  • 回答No.4
レベル12

ベストアンサー率 65% (276/422)

なるほど、状況がわかりました。 全てはWORKDAY関数のせいです。 これはエクセルのアドインの分析ツールの関数です。 これはエクセルの追加機能なので、WORKDAY関数は反映しないようです。 回避方法は・・・すぐには調査不可能なので、また明日までに調べておきますね。
なるほど、状況がわかりました。
全てはWORKDAY関数のせいです。
これはエクセルのアドインの分析ツールの関数です。
これはエクセルの追加機能なので、WORKDAY関数は反映しないようです。

回避方法は・・・すぐには調査不可能なので、また明日までに調べておきますね。
  • 回答No.5
レベル12

ベストアンサー率 65% (276/422)

エクセル起動 Set xlApp = New Excel.Application 'アドイン情報の更新 xlApp.AddIns("分析ツール").Installed = False xlApp.AddIns("分析ツール").Installed = True 'DSFP_EP 作成 ワークブックを開く xlApp.Wo ...続きを読む
エクセル起動
Set xlApp = New Excel.Application

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

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

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

うまくいかなかったら報告してください。
お礼コメント
hanikos2001

お礼率 38% (46/121)

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

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

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

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

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

こころあたりありましたら、よろしくお願いします。
投稿日時 - 2001-11-14 15:31:58
  • 回答No.6
レベル12

ベストアンサー率 65% (276/422)

今日は仕事休んじゃいました。。。(^^;) エクセルを閉じた後か、ブックを閉じた後にマクロを呼んではいないですか? ちょっと郵便局に行って来るので、レスが遅れます。 m(__)m ...続きを読む
今日は仕事休んじゃいました。。。(^^;)

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

ちょっと郵便局に行って来るので、レスが遅れます。
m(__)m
お礼コメント
hanikos2001

お礼率 38% (46/121)

ありがとうございます。
ご指摘のとおりでした。
またよろしくお願いします。
投稿日時 - 2001-11-14 17:12:00
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ