[[20171019175938]] 『[[20050630202158]] 参考にして 同一ホルダー内早x(まらお) ページの最後に飛ぶ

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

 

[[20050630202158]] 参考にして 同一ホルダー内他ブックシート名取得』(まらお)

お世話になります
教えてください お願いします

[[20050630202158]]  参考にしまして
同一ホルダー内他ブックシート名取得をしたいと考えています
下記の様にいじってみましたが

 Loop Until myFileName = vbNullString  に対しての  Doが有りません
メッセージが出ます
私的には Do While myFileName <> ""  で
Doを入れている つもりですが
何処がいけないのでしょうか?

原文のままだと他ホルダーを相手にしている為
その辺りの作業を略したいと考えております

Sub Sample()

 Dim myObj As Object
 Dim myFileName As String
 Dim myDir As String
 Dim mySheet As Worksheet
 Dim wb As Workbook
 Application.ScreenUpdating = False

 With ThisWorkbook.ActiveSheet

    myDir = ThisWorkbook.Path & "\"
    myFileName = Dir(myDir & "*.xls")
           Do While myFileName <> ""
            If myFileName <> ThisWorkbook.Name Then

            Set wb = Workbooks.Open(myDir & myFileName)
            For Each mySheet In wb.Worksheets
                .Cells(65536, 1).End(xlUp).Offset(1).Value = myFileName
                .Cells(65536, 2).End(xlUp).Offset(1).Value = mySheet.Name
            Next mySheet
            wb.Close False
            myFileName = Dir()

        Loop Until myFileName = vbNullString

    .Range("A1").Value = "ファイル名"
    .Range("B1").Value = "シート名"
    .Columns("A:B").AutoFit
 Application.ScreenUpdating = True
End If

 End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


End ifの位置は、そこであっていますか?

(マナ) 2017/10/19(木) 18:26


Sub Sample()
    Dim myObj As Object
    Dim myFileName As String
    Dim myDir As String
    Dim mySheet As Worksheet
    Dim wb As Workbook
    Application.ScreenUpdating = False
    With ThisWorkbook.ActiveSheet
        myDir = ThisWorkbook.Path & "\"
        myFileName = Dir(myDir & "*.xls")
        Do While myFileName <> ""
            If myFileName <> ThisWorkbook.Name Then
                Set wb = Workbooks.Open(myDir & myFileName)
                For Each mySheet In wb.Worksheets
                    .Cells(65536, 1).End(xlUp).Offset(1).Value = myFileName
                    .Cells(65536, 2).End(xlUp).Offset(1).Value = mySheet.Name
                Next mySheet
                wb.Close False
                myFileName = Dir()
            Loop Until myFileName = vbNullString
            .Range("A1").Value = "ファイル名"
            .Range("B1").Value = "シート名"
            .Columns("A:B").AutoFit
            Application.ScreenUpdating = True
        End If
    End Sub

インデントを整理してみましょう。

End With がないかな?
あと、

Do〜LoopとIf〜end ifが交差する形になってるのは、
文法的におかしいかと。
(まっつわん) 2017/10/20(金) 08:55


 >Loop Until myFileName = vbNullString  に対しての  Doが有りません

Doのところにも条件式入れて
Loopのところにも条件式を入れているからですね。
どちらかしか条件式は入れられないようです^^
なので、もう一個この条件式が有効になるDoが存在しないといけないはずだと解釈されたようです。

(まっつわん) 2017/10/20(金) 09:11


こんな感じですかね?(動作確認はしてません。)

Sub Sample2()

    Dim myFileName As String
    Dim myDir As String
    Dim mySheet As Worksheet
    Dim wb As Workbook
    Dim myRng As Range
    Dim ixRow As Long

    'Application.ScreenUpdating = False
    Set myRng = ThisWorkbook.Sheets(1).Range("A2:B2")
    myDir = ThisWorkbook.Path & "\"
    myFileName = Dir(myDir & "*.xls")
    Do While myFileName <> ""
        If myFileName <> ThisWorkbook.Name Then
            Set wb = Workbooks.Open(myDir & myFileName)
            For Each mySheet In wb.Worksheets
                ixRow = ixRow + 1
                With myRng
                    .Cells(ixRow, 1).Value = myFileName
                    .Cells(ixRow, 2).Value = mySheet.Name
                End With
            Next
            wb.Close False
        End If
        myFileName = Dir()
    Loop

    With myRng
        .Cells(0, 1).Value = "ファイル名"
        .Cells(0, 2).Value = "シート名"
        .EntireColumn.AutoFit
    End With
End Sub
(まっつわん) 2017/10/20(金) 09:15

マナ様
アドバイス有難う御座います

しかし よく解らないです
悲しいですが

まっつわん様
有難う御座います

インデントを整理してみましょう。 End With がないかな?

有難う御座います

Do〜LoopとIf〜end ifが交差する形になってるのは、 文法的におかしいかと。 勉強しなおします 

正直基本が出来てないと 難しいですね

参考構文有難う御座います
参考にさせていただきます
(まらお) 2017/10/20(金) 09:23


まっつわん様
きちんと動きました

有難う御座います
(まらお) 2017/10/20(金) 09:38


コメント返信:

[ 一覧(最新更新順) ]


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