[[20130213110339]] 『実行時エラー'9'』(MARU) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『実行時エラー'9'』(MARU)

 複数のExcelファイルを取り込んで、データを一つにまとめています。
 そこで、下記の箇所で
 Workbooks(FILENAME2).Close SaveChanges:=False
 実行時エラー'9'インデックスが有効にありません。と返ってきます。
 原因を追求できておらず、エラーが消えません。
 どこが悪いのか教えていただけませんでしょうか?
 よろしくお願いします。

    Windows("管理R2.xls").Activate

    dr = Worksheets("コントロール").Cells(4, 5).Value
    ChDir dr

    Set fs = Application.FileSearch

    With fs
        .LookIn = dr
        .FileName = "*.xls"
         If .Execute > 0 Then
                MsgBox (.FoundFiles.Count & " 個のファイル")

         For i = 1 To .FoundFiles.Count
             Workbooks.Open FileName:=.FoundFiles(i)
             filename1 = .FoundFiles(i)
             FILENAME2 = Mid(filename1, Len(dr) + 2, Len(filename1) - Len(dr))

               Sheets("出力").Select
               Range("DATA").Select
               Range("DATA").Activate
               Selection.Copy         

               Windows("管理R2.xls").Activate
               Sheets("入力").Select
               Range("A1").Select
               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False                    
               Workbooks(FILENAME2).Close SaveChanges:=False

         Next i
         Else
                MsgBox "条件を満たすファイルはありません。"
         End If         
    End With

    Rowpoint1 = Worksheets("CTL").Cells(6, 5).Value

    Clmpoint1 = Worksheets("CTL").Cells(6, 6).Value

    ActiveWorkbook.Names.Add Name:="DataB", RefersToR1C1:= _
        "=DataB!R1C1:R" & Rowpoint1 & "C" & Clmpoint1

   ActiveWorkbook.Save

 Closeすべきブック名(インデックス)が見当たらないというエラーです。
 
Workbooks.Open FileName:=.FoundFiles(i)でループして開くブックを
FILENAME2という名前にして閉じる、という動作が希望なら、
閉じる前に「名前をつけて保存」が必要。
(みやほりん)

 ありがとうございます。
 >FILENAME2という名前にして閉じる、という動作が希望なら、
 特にこの動作には、こだわりません。
 開いた複数のファイルを全て閉じれればいいのですが
 どこのタイミングで挿入すればいいのでしょうか?
 名前は既についているので、保存せずとじればよいです。
 (MARU)

 すみません、検証まではしていないもので。
ブックだけを特定できればよいのですね。開く時にいったんオブジェクト変数に
取得してみては?
 
dim myWb as Workbook
(中略)
set myWb Workbooks.Open(FileName:=.FoundFiles(i))
(中略)
mywb.close
こんな感じ。以下はブック名の文字列を取得するためのものだろうから不要かな?
             filename1 = .FoundFiles(i)
             FILENAME2 = Mid(filename1, Len(dr) + 2, Len(filename1) - Len(dr))
 
みやほりん

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.