Excel VBA質問箱 IV

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

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


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

【74868】アクティブにするには abc 13/10/14(月) 1:43 質問[未読]
【74869】Re:アクティブにするには γ 13/10/14(月) 9:09 発言[未読]
【74870】Re:アクティブにするには abc 13/10/14(月) 17:54 質問[未読]
【74871】Re:アクティブにするには γ 13/10/14(月) 18:19 発言[未読]
【74878】Re:アクティブにするには γ 13/10/19(土) 20:08 発言[未読]

【74868】アクティブにするには
質問  abc  - 13/10/14(月) 1:43 -

引用なし
パスワード
   度々すみません。

ファイルを開くことはできたのですが、なぜか元々から開いているファイルの方がアクティブになってしまい、どうしても新しく開いた方のファイルがアクティブになりません。
やりたい事は、最初にいくつか入ったフォルダの中のブックのセルを参照し、そのセルが実行であれば実行ブックを開き、実行ブックのデータを書き換えるといった事をしたいのですが、このコードを実行しても一番最初に開いているブックのセルしか参照してくれません。

どこが悪いでしょうか?


Sub test()

Dim mypath As String, mybook As String
Dim i As Integer, a As Integer, b As Integer, c As Integer


  mypath = "c:\保存している場所\"
  mybook = Dir(mypath & "*.xls")
  Workbooks.Open Filename:=mypath & mybook
 
  i = 1
 
  Do While Cells(i, 2) <> ""
 
    If Cells(i, 2) = "実行" Then
      
      a = Cells(i, 3)
      b = Cells(i, 4)
      c = Cells(i, 5)
      
      
      Workbooks.Open Filename:=実行ブック
      処理  

    mybook = Dir()
  Loop

End Sub


よろしくお願いします。

【74869】Re:アクティブにするには
発言  γ  - 13/10/14(月) 9:09 -

引用なし
パスワード
   こんにちは。
> ファイルを開くことはできたのですが、
> なぜか元々から開いているファイルの方がアクティブになってしまい、
> どうしても新しく開いた方のファイルがアクティブになりません。

普通はそうなりません。事実認識が間違っているのでは?
ブックを開いたら、開いたそれがアクティブになります。

基本的なところから出発してください。
単に、Cells(i, 2) と書いたら、
それは現在アクティブなブックの、アクティブなシートのCells(i, 2)を
指します。

直前に新しいファイルを開いていれば、
その開いたブックのアクティブシートのCells(i, 2)を指します。
それは意図したことですか?

そこから出発してください。
きちんと対象のブックやシートを指定することです。

【74870】Re:アクティブにするには
質問  abc  - 13/10/14(月) 17:54 -

引用なし
パスワード
   回答ありがとうございます。

セルを読んでほしいブックを開いてから条件(Do while ...)を書いてるつもりですが

やはり元々のブックのセルしか参照してくれません。

【74871】Re:アクティブにするには
発言  γ  - 13/10/14(月) 18:19 -

引用なし
パスワード
   よく分かりませんけど、
Do Loopの中で実行ブックを言うのを開いていますよね。
それは関係しないのですか?

いずれにしても、
・複数のブックが登場するときは、セル指定を裸で(と言うのかな?)しない、
が原則です。

ステップ実行して、どのようなことが起きているのか
ご自分で観察してみてはどうですか?

【74878】Re:アクティブにするには
発言  γ  - 13/10/19(土) 20:08 -

引用なし
パスワード
   こいいうことですか?
基本的なところで想像が入っていますので、よく確認して下さい。

Sub test()
  Dim wbJikkou As Workbook
  Dim mypath As String
  Dim mybook As String
  Dim i As Long, a As Long, b As Long, c As Long
  Dim wb As Workbook
  Dim ws As Worksheet
  
  Set wbJikkou = Workbooks.Open(FileName:="実行ブック")

  mypath = "c:\保存している場所\"
  
  mybook = Dir(mypath & "*.xls")
  Do While mybook <> ""
    Set wb = Workbooks.Open(FileName:=mypath & mybook)
    Set ws = wb.Worksheets(1)
    i = 1
    Do While ws.Cells(i, 2).Value <> ""
       If ws.Cells(i, 2).Value = "実行" Then
        a = ws.Cells(i, 3).Value
        b = ws.Cells(i, 4).Value
        c = ws.Cells(i, 5).Value
        '処理 'このなかでwbJikkouを参照して処理を行う
       End If
       i = i + 1
    Loop
    wb.Close False
    mybook = Dir()
  Loop
End Sub

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