2017-09-20 11 views
0

特定のExcelシートにすべてのシート名を印刷したいとします。私は現在のワークブックのためにそれをやっていた場合、これは私のコードは次のようになり方法です:ブック内のシートをファイルパスでループする

私は変数に存在するすべてのシートの名前を印刷したい
For Each sht In ActiveWorkbook.Sheets 
     Debug.Print sht.Name 
Next sht 

は、絶対ファイルパスをあるsFilePathを言いますファイルを凌駕するそのExcelファイル内のすべてのシートの名前を印刷するにはどうすればよいですか?あなたは、シート名を取得する前に、そのファイルを開く必要があり

+0

イミディエイトウィンドウに印刷しています。 Ctrl + Gキーを押してVBAに表示します。名前はどこに印刷しますか? – DaBeau96

+0

あなたはすでにそれをやっています。 – jsotola

答えて

1

Dim sFilePath As String 
sFilePath = Application.GetOpenFilename() 
Workbooks.Open (sFilePath) 

For Each sht In ActiveWorkbook.Sheets 
     Debug.Print sht.Name 
Next sht 

'to close sFilePath workbook 
ActiveWorkbook.Close False 

は、このヘルプを願っています。指定したディレクトリ内のファイルとシートを印刷する

+0

このコードでは、選択したExcelファイルも開きます。それをどうやって避けるのですか? – user248884

+0

シート名を取得した後で閉じる必要があります。 –

+0

私はちょうど私の答えを編集しました。 –

1

Sub Main() 

    filePath = "C:\Users\jesse\Documents\ExcelTest\"  'folder to search 
    currentFile = Dir(filePath & "*.xls*") 
    Do Until currentFile = "" 

     Debug.Print currentFile 
     Set Workbook = Workbooks.Open(filePath & currentFile, False, True) 

     For Each Sheet In Workbook.Sheets 
      Debug.Print Sheet.Name 
     Next Sheet 

     Workbook.Close SaveChanges:=False 
     currentFile = Dir 
    Loop 

    Set Workbook = Nothing 

End Sub 

ホープこれはあなたの問題を解決しました。乾杯!

+0

ファイルを開くことなくこれを行う方法がある場合、私は望んでいました(ファイルは画面上にポップアップしません)? – user248884

関連する問題