| 
    
     |  | 留意事項集アンケート集計.xls に「アンケートファイル一覧」を追加して ユーザーが選択したファイルはうまく読み込めたのですが
 そのファイルリストを元に、シート名を書き込みたかったのですが、うまく出来ませんでした。(ListSheetsName)
 
 アンケートファイル一覧のシートイメージは次ぎのとおり
 A1:現在の最終行書き込み位置(タイトル)
 A2:現在の最終行書き込み位置情報
 
 B2〜F2 各タイトル
 B3〜  実際のファイル・・・
 と成ってます。
 ----------------------------------
 結果的に実施したい内容
 
 ユーザーが選択したワークシートを読み込んでそのフォルダーとファイル名(パス)
 そのときの、ワークシート名
 
 上記のリストを頼りに、「留意事項集アンケート集計.xls」に各シートを複写
 (同じシート名があれば、添え字を付ける)
 
 以上 皆さんのお知恵をお貸し下さい。
 
 
 ----------------------------------------
 Option Explicit
 '
 Dim vntFileName As Variant
 Dim vntGetFileName As Variant
 '
 '
 '  引数で指定されたファイル等を一覧にする
 '
 Sub MakeFileList(vntFileName)
 
 '  vntFileName = 配列のファイル名変数
 
 Dim StrMyseetName As String
 Dim OldSheet As Worksheet
 Dim i As Integer
 
 '
 '  定数設定
 StrMyseetName = "アンケートファイル一覧"
 '
 '  指定シート存在確認 False = 無し→新規作成
 Set OldSheet = ActiveSheet
 If chkSheetNM(StrMyseetName) = False Then
 With Worksheets.Add()
 .Name = StrMyseetName
 End With
 '  項目作成
 i = 2
 With Worksheets(StrMyseetName)
 .Range("B2") = "フォルダ/ファイル名"
 .Range("C2") = "シート名"
 .Range("D2") = "シート名"
 .Range("E2") = "シート名"
 .Range("F2") = "シート名"
 .Range("B1") = i
 .Range("A1") = "現在の最終行書き込み位置"
 End With
 
 Else
 i = Worksheets(StrMyseetName).Cells(1, 2)
 
 End If
 
 If IsArray(vntFileName) Then
 For Each vntGetFileName In vntFileName
 'ファイル名/フォルダ名の書き出し
 i = i + 1
 Worksheets(StrMyseetName).Cells(i, 2) = vntGetFileName
 Worksheets(StrMyseetName).Cells(1, 2) = i
 Next
 End If
 '
 Function chkSheetNM(mySheetName) As Boolean
 '現在のブックのシート(含グラフシート)の存在チェック
 'True=シート名有り,False=シート名無し
 '2004/04/10 pPoy
 Dim wk As Object
 chkSheetNM = False
 'シート名の一覧
 For Each wk In Sheets
 '大文字小文字を区別しない
 If LCase(mySheetName) = LCase(wk.Name) Then
 chkSheetNM = True
 Exit For
 End If
 Next wk
 '
 End Function
 
 '/////////////////////////////////////////////////////////////////
 '// ファイル一覧のシート名を一覧に作成する
 '// メイン subに実際に処理した内容を引き渡す
 '// 吐き出し引数
 '// 現在のファイル名 と そのセル位置の隣
 '/////////////////////////////////////////////////////////////////
 Sub ListSheetsName()
 
 Dim objSheet As Object
 Dim strFile As String
 Dim StrMyseetName As String
 Dim i As Integer
 Dim j As Integer
 Dim k As Integer
 Dim l As Integer
 Dim mySheetCnt As Integer
 Dim mySheetNam As String
 Dim myAnksum As String
 
 
 '  定数設定
 StrMyseetName = "アンケートファイル一覧"
 
 If chkSheetNM(StrMyseetName) = False Then
 MsgBox StrMyseetName & "が見つかりません。" & vbCrLf & "終了します。", vbOKOnly, "確認"
 Exit Sub
 Else
 '  書き込みセル数を確認 3未満は終了
 j = Worksheets(StrMyseetName).Cells(1, 2)
 If j < 3 Then
 MsgBox "ファイルリストが無いかリスト数が適正で有りません。" & vbCrLf & "終了します。", vbOKOnly, "確認"
 Exit Sub
 End If
 
 j = j - 1
 For i = 3 To j
 strFile = Worksheets(StrMyseetName).Cells(i, 2) 'ファイル名セット
 If strFile <> "" Then
 Workbooks.Open(strFile).Activate
 mySheetCnt = ThisWorkbook.Sheets.Count
 
 For k = 1 To mySheetCnt
 l = k + 3
 Debug.Print "k=" & k
 Debug.Print "mySheetCnt=" & mySheetCnt
 
 Workbooks(myAnksum).Sheets(StrMyseetName).Cells(i, l) = Sheets(k).Name
 Next k
 
 Workbooks(strFile).Close SaveChanges:=False
 Else
 Exit Sub
 End If
 Next
 End If
 
 End Sub
 '
 '//////////////////////////////////////////////////////////////////////
 ' 引数に指定された ファイルのシート名をアクティブセルから右に書き出し
 ' 引数 myFileName ファイルネーム
 ' 引数 gyosel = 行 retusel = 列
 '//////////////////////////////////////////////////////////////////////
 '
 Sub mySheetName(myFileName As String, gyosel As Integer, retusel As Integer)
 
 Dim i     As Integer
 Dim mySheetCnt As Integer
 Dim mySheetNam As String
 Dim myAnksum As String
 Dim StrMyseetName As String
 
 myAnksum = "留意事項集アンケート集計.xls"
 StrMyseetName = "アンケートファイル一覧"
 
 Workbooks.Open(myFileName).Activate
 mySheetCnt = ThisWorkbook.Sheets.Count
 
 For i = 1 To mySheetCnt
 Debug.Print "i=" & i
 Debug.Print "mySheetCnt=" & mySheetCnt
 mySheetNam = Sheets(i).Name
 Workbooks(myAnksum).Sheets(StrMyseetName).Cells(gyosel, retusel) = mySheetNam
 Next i
 
 Workbooks(myFileName).Close SaveChanges:=False
 
 End Sub
 
 |  |