[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『[[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 >
(マナ) 2017/10/19(木) 18:26
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
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.