Excel VBA質問箱 IV

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

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


354 / 13645 ツリー ←次へ | 前へ→

【80852】vba初心者 shizu 19/6/1(土) 8:38 質問[未読]
【80853】Re:vba初心者 γ 19/6/1(土) 9:20 発言[未読]
【80855】Re:vba初心者 shizu 19/6/1(土) 10:59 質問[未読]
【80856】Re:vba初心者 γ 19/6/1(土) 11:16 発言[未読]
【80857】Re:vba初心者 shizu 19/6/1(土) 13:04 お礼[未読]

【80852】vba初心者
質問  shizu  - 19/6/1(土) 8:38 -

引用なし
パスワード
   vba初心者です。
 複数のエクセルファイルから、指定した複数セルを1つのエクセルファイルにまとめようとしています。
以下のようなvbaを試したのですが、
デバッグが表示されます。
何が悪いのかわかりません。

ちなみに、取り込みたい複数のエクセルファイル、1つにまとめたいエクセルファイルは同じフォルダ内にあります。


Sub tenki()
  Dim folder As String
  Dim file As String
  Dim book As Workbook
  Dim i As Integer
  i = 2
  
  With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show = True Then
      folder = .SelectedItems(1)
    End If
  End With
  
  file = Dir(folder & "\*.xlsx")
  
  Do While file <> ""
  
    Set book = Workbooks.Open(folder & "\" & file)
    
    ThisWorkbook.Worksheets("Sheet1").Range("A" & CStr(i)).Value = book.Worksheets("Sheet1").Range("B3").Value
    ThisWorkbook.Worksheets("Sheet1").Range("B" & CStr(i)).Value = book.Worksheets("Sheet1").Range("C3").Value
    ThisWorkbook.Worksheets("Sheet1").Range("C" & CStr(i)).Value = book.Worksheets("Sheet1").Range("D3").Value
    ThisWorkbook.Worksheets("Sheet1").Range("D" & CStr(i)).Value = book.Worksheets("Sheet1").Range("C4").Value
    
    
    file = Dir()
    i = i + 1
    
    book.Close
  Loop
  
End Sub


ご教授 宜しくお願い致します。

【80853】Re:vba初心者
発言  γ  - 19/6/1(土) 9:20 -

引用なし
パスワード
   >デバッグが表示されます。
それだけではなく、もっと状況を説明しましょう。
どの行でエラーになるのか、エラーメッセージは何か。
関係する変数はどうなっているのか。
等々。
フォルダが自分自身が含まれているものなら、
自分自身をもう一度開こうとしていることが想像されますが。
いずれにしてももう少し説明が必要ですね。

【80855】Re:vba初心者
質問  shizu  - 19/6/1(土) 10:59 -

引用なし
パスワード
   ▼γ さん:
早速 ありがとうございます。

>どの行でエラーになるのか、エラーメッセージは何か。
  エラーは 15行目(黄色で塗りつぶされています)の
    ThisWorkbook.Worksheets("Sheet1").Range("A" & CStr(i)).Value =    book.Worksheets("Sheet1").Range("B3").Value
  の部分になります。

  エラーメッセージは
  ”実行時 エラー9
  インデックスが有効範囲にありません。”
  と、表示されます。

>関係する変数はどうなっているのか。
>等々。

 すみません。
 変数がどうなっているか、勉強不足で理解できていません。

>フォルダが自分自身が含まれているものなら、
>自分自身をもう一度開こうとしていることが想像されますが。

  同じフォルダ内にvbaがあるエクセルがありま。

  以上まだまだ説明が足りないかもしれませんが、よろしくお願いいたします。

【80856】Re:vba初心者
発言  γ  - 19/6/1(土) 11:16 -

引用なし
パスワード
   book.Worksheets("Sheet1")がエラーの元でしょうか。
そのExcelブックにSheet1という名前のシートがないからでは?

開いたときに一番左のシートであれば、
book.Worksheets(1) という書き方ができます。

そのあたりを検討してください。

【80857】Re:vba初心者
お礼  shizu  - 19/6/1(土) 13:04 -

引用なし
パスワード
   ▼γ さん:
>book.Worksheets("Sheet1")がエラーの元でしょうか。
>そのExcelブックにSheet1という名前のシートがないからでは?

ご指摘の通りでした。
ありがとうございました。

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