Excel VBA質問箱 IV

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

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


11545 / 13646 ツリー ←次へ | 前へ→

【15565】フォルダ内のファイル名を取得 Ark 04/6/29(火) 14:41 質問[未読]
【15566】Re:フォルダ内のファイル名を取得 Asaki 04/6/29(火) 14:43 発言[未読]
【15567】Re:フォルダ内のファイル名を取得 Ark 04/6/29(火) 14:58 質問[未読]
【15568】Re:フォルダ内のファイル名を取得 Asaki 04/6/29(火) 15:44 回答[未読]
【15569】Re:フォルダ内のファイル名を取得 Asaki 04/6/29(火) 15:53 回答[未読]
【15570】Re:フォルダ内のファイル名を取得 Ark 04/6/29(火) 16:36 お礼[未読]

【15565】フォルダ内のファイル名を取得
質問  Ark  - 04/6/29(火) 14:41 -

引用なし
パスワード
   昨日の引き続き、再度質問をさせていただきます。

「ダイアログで任意のフォルダを選択し、そのフォルダ内にあるファイル名を取得して、
シートに転記する」というプログラムと現在奮闘中です。

●ダイアログを表示させる(.GetOpenFilename(" (*.*), *.*"))
●ファイルを開かないで名前だけシートに転記する

この2点は参考書やwebで調べて動かす事が出来ました。

素人判断でdo untilの中に「ファイルを開かないで名前だけシートに転記」を
組み込めばいいのだと思っていたのですが、いざ繋げるとなると
「オブジェクトが足りない」といわれたり「引数が不正」だったりします。

どなたかご教授いただけませんでしょうか。

【15566】Re:フォルダ内のファイル名を取得
発言  Asaki  - 04/6/29(火) 14:43 -

引用なし
パスワード
   こんにちは。

現在のコードを提示されては?

【15567】Re:フォルダ内のファイル名を取得
質問  Ark  - 04/6/29(火) 14:58 -

引用なし
パスワード
   >Asakiさん
ご指摘、ありがとうございます。
間違いだらけですがコードを提示させて頂きます。

参考書に書いてあったとwebから参照したコードを
単純にそのまま貼って少し整形をしたプログラムです。

'--------------------------------------------------
Sub ファイルを指定()

ファイルオープン = Application _
  .GetOpenFilename(" (*.*), *.*")
  
FileName = "*.*"
If ファイルオープン <> False Then
  i = 2
  Do Until ファイルオープン = ""
    Cells(i, 1).Value = FileName
    FileName = Dir
    i = i + 1
  Loop

End If

  MsgBox "完了しました"

End Sub
'--------------------------------------------------

詳しい人が見たら
「こんなの動くわけないじゃん」と思われるかもしれません。
その際は、「ここはこういう使い方をしたほうがいい」等の
アドバイスも頂けたらと思います。

【15568】Re:フォルダ内のファイル名を取得
回答  Asaki  - 04/6/29(火) 15:44 -

引用なし
パスワード
   とりあえず、↓では?
※ Excel2000以上です。

Sub ファイルを指定()
  Dim Filename      As String
  Dim i          As Long
  Dim ファイルオープン  As Variant

  ファイルオープン = Application _
    .GetOpenFilename(" (*.*), *.*")
   
'  Filename = "*.*"
  If ファイルオープン <> False Then
    i = 2
    ファイルオープン = Left(ファイルオープン, InStrRev(ファイルオープン, "\")) & "*.*"
    Filename = Dir(ファイルオープン)
'    Do Until ファイルオープン = ""
    Do Until Filename = ""
      Cells(i, 1).Value = Filename
      Filename = Dir
      i = i + 1
    Loop
  
  End If

  MsgBox "完了しました"

End Sub

【15569】Re:フォルダ内のファイル名を取得
回答  Asaki  - 04/6/29(火) 15:53 -

引用なし
パスワード
   後半の処理は同じですが、フォルダ選択ダイアログを表示するサンプルです。

Sub getFolder()
  
  Dim objDlgSelFolder As Object     'Windows Shell object
  Dim strFile     As String
  Dim i        As Long

  'Create Dialogbox object
  Set objDlgSelFolder = CreateObject("Shell.Application"). _
    BrowseForFolder(0, "フォルダを選択してください", 0, "c:\\")
  If Not objDlgSelFolder Is Nothing Then
    'MsgBox objDlgSelFolder.Items.Item.Path
    strFile = Dir(objDlgSelFolder.Items.Item.Path & "\*.*")
    i = 2
    Do Until strFile = ""
      Cells(i, 1).Value = strFile
      strFile = Dir()
      i = i + 1
    Loop
  End If

End Sub

【15570】Re:フォルダ内のファイル名を取得
お礼  Ark  - 04/6/29(火) 16:36 -

引用なし
パスワード
   Asakiさん、プログラムを綺麗に修正且つ正常に動くよう
作成してくださってありがとうございます。

それに少し手を加えて
「次にファイル名を書き出す時はアクティブセルの行数+1」という修飾をしてみました。
'------------------------------------------------
    Do Until Filename = ""
      
      行 = Range("A1").CurrentRegion.Rows.Count + 1  'アクティブセル領域の行数 + 1
      Cells(行, 1).Value = Filename

      Filename = Dir
     
    Loop
'以下略
'------------------------------------------------

今度はこのプログラムをダイアログの「キャンセル」を押すまで
動きつづけるよう、さらに改造してみたいと思います。
もしかしたらまたご教授いただくことになるかもしれませんが
その際はどうぞ宜しくお願いします。

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