Excel VBA質問箱 IV

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

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


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

【76196】フォルダー内のエクセルのシート名を順次表示させるには ペンネーム船長 14/10/13(月) 14:01 質問[未読]
【76197】Re:フォルダー内のエクセルのシート名を順... γ 14/10/13(月) 14:10 発言[未読]
【76198】Re:フォルダー内のエクセルのシート名を順... kanabun 14/10/13(月) 14:17 発言[未読]
【76199】Re:フォルダー内のエクセルのシート名を順... kanabun 14/10/13(月) 14:18 発言[未読]
【76200】Re:フォルダー内のエクセルのシート名を順... kanabun 14/10/13(月) 14:27 発言[未読]
【76203】Re:フォルダー内のエクセルのシート名を順... ペンネーム船長 14/10/13(月) 18:50 お礼[未読]

【76196】フォルダー内のエクセルのシート名を順次...
質問  ペンネーム船長  - 14/10/13(月) 14:01 -

引用なし
パスワード
   【質問】
ただいま、別の質問で質問させていただいていますが、それを解決する前に
聞きたいことがあります。
『test』フォルダー内に複数あるエクセルを順次開き、それぞれのエクセルの
シート名を調べるコードですが、bufのエクセルが対象になりません。
どこがいけないのか教えて下さい。

Private Sub CommandButton1_Click()

Dim buf As String
Dim sh As Worksheet

Const path = "C:\Users\○●\Desktop\test\"

buf = Dir(path & "*.xls")

Do While buf <> ""
  Workbooks(" & buf & ").Open
  MsgBox "ブック名は『" & buf & "』です"
  MsgBox "アクティブブックは『" & ActiveWorkbook.Name & "』です"
      For Each sh In Worksheets
        Workbooks(" & buf & ").sh.Select
        MsgBox "シート名は『" & Workbooks(" & buf & ").sh.Name & "』です"
      Next sh
 buf = Dir()
Loop

End Sub

【76197】Re:フォルダー内のエクセルのシート名を...
発言  γ  - 14/10/13(月) 14:10 -

引用なし
パスワード
   こんにちは。
対比してみてください。

Private Sub CommandButton1_Click()
  Dim buf As String
  Dim wb As Workbook
  Dim sh As Worksheet

  Const path = "C:\Users\○●\Desktop\test\"

  buf = Dir(path & "*.xls")

  Do While buf <> ""
    Set wb = Workbooks.Open(path & buf)
    MsgBox "ブック名は『" & buf & "』です"
    For Each sh In wb.Worksheets
      MsgBox "シート名は『" & sh.Name & "』です"
    Next sh
    wb.Close False
    buf = Dir()
  Loop
End Sub

【76198】Re:フォルダー内のエクセルのシート名を...
発言  kanabun  - 14/10/13(月) 14:17 -

引用なし
パスワード
   ▼ペンネーム船長 さん:

>Const path = "C:\Users\○●\Desktop\test\"
>
>buf = Dir(path & "*.xls")
>
>Do While buf <> ""
>  Workbooks(" & buf & ").Open

最後の構文は
   Workbooks(buf).Open

>  Workbooks(" & buf & ").Open
では、
  「 & buf & 」 という名前のブックをOpenという命令になっています。

それと
   Workbooks(Bookのパス).Open
が構文ですから、

>buf = Dir(path & "*.xls")

では bufのなかに たとえば "あいうえ.xls" のように正味のBook名しか
入っていません。

   Workbooks(path & buf).Open

のようにパス付でBook名を指定してください。

【76199】Re:フォルダー内のエクセルのシート名を...
発言  kanabun  - 14/10/13(月) 14:18 -

引用なし
パスワード
   すみません。
画面を更新せず、発言してしまいました m(_ _)m

【76200】Re:フォルダー内のエクセルのシート名を...
発言  kanabun  - 14/10/13(月) 14:27 -

引用なし
パスワード
   しかも、根本的に 構文を間違えてるし (汗!!)

以下、おおまちがい

>   Workbooks(buf).Open

>   Workbooks(Bookのパス).Open
>が構文ですから、

>   Workbooks(path & buf).Open
>

反面教師の巻でした m(_ _)m

【76203】Re:フォルダー内のエクセルのシート名を...
お礼  ペンネーム船長  - 14/10/13(月) 18:50 -

引用なし
パスワード
   γさん kanabunさん 
ご教授有難う御座いました。
ここでのアドバイスを生かして【76193】の質問を解決しました。
今回も色々な事を教えていただきまして、感謝しています。

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