ここから本文です

excel vbaのApplication.Runについて教えてください。

gor********さん

2017/3/1619:53:34

excel vbaのApplication.Runについて教えてください。

BookAのVBAから、別のBook(BookB、BookC、BookD)のVBAを起動させようとしたのですが、
BookBの処理が終わった後、続いてBookCを起動させることができません。
BookAに戻った後、そこで処理が止まってしまいます。

下記の内容のどこに問題があるのか教えて頂けないでしょうか?

Sub Processing_All()

Dim Bookname As String
Dim MyFile As String
Dim DCount, i As Integer

i = 5
BookName = Worksheets("処理").Cells(i, 4).Value

Do Until BookName = ""
MyFile = Dir(BookName)
Application.Run "'" & BookName & "'" & "!MyCalculation"
i = i + 1
Loop
End Sub

閲覧数:
176
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

uso8megaさん

2017/3/1709:28:28

Dim i As Long ''IntegerよりLongの方が良いのでは。

DCountは使われていない様子

MyFileは使われていない様子

BookName = Worksheets("処理").Cells(i, 4).Value
↑この行はループ内のどこかにも必要では?
そうでなければ i を加算しつつBookNameを
空チェックする意味が薄いかと。

以下、処理内容の邪推例の一つ

  Dim Bookname As String
  Dim i As Long
  i = 5
  BookName = Worksheets("処理").Cells(i, 4).Value
  Do Until BookName = ""
    Application.Run "'" & BookName & "'!MyCalculation"
    i = i + 1
    BookName = Worksheets("処理").Cells(i, 4).Value
  Loop

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

2017/3/1622:59:11

Do Loopの中で変数 i をカウントアップしていますね。
でも Do Loopの中で変数 i は使われていません。
もしかして、BookName 変数へのBook設定は、
Do Loopの中で行うべきものではありませんか?

また変数 i の初期値も気になりますね。
普通なら0スタートか1スタートでカウントアップするか
あるいはi = 5からスタートならカウントダウンで、
添え字マイナスのエラー条件で終わらせるなどにすると思いますが・・・

...

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる