2016-07-20 5 views
0

ファイルの長いリストから、指定したファイルパスでファイルを開くプログラムを作成しています。それらはすべて同じ名前形式ですが、すべてが.xlsxファイル形式ではなく、一部は.xlsm形式です。ファイル形式テスト

For file = 2 To 200 
If RefSheet.Cells(file, 1) = "" Then Exit For 'no more data, end now 

     If KeepOpen Then 
      'continue as is, because already open 
     Else 
      Set InBook = Workbooks.Open(Filename:=RefSheet.Cells(file, 1) & RefSheet.Cells(file, 2), UpdateLinks:=False, ReadOnly:=True) 

     End if 
End If 

私が開こうとする前の.xlsx/.xlsmのための簡単なテストどのだろう最初のテキストファイル名を作成しようとしているが、正確にそれを作るように見えることはできません。

は、エラー処理を実行しようとしましたが、それは

+0

vbaを共有するコードはありますか?一致する場合は関連するタグを追加してください –

+0

ファイル名(RefSheetのB列)にファイル拡張子が含まれていないため、使用するファイルがわからないという問題がありますか? – YowE3K

+0

ご返信ありがとうございます。実際にテストする必要があるのは、フォルダ内の実際のファイルの形式です。パス名をテストするのは簡単ですが、実際のファイルが.xlsxか.xlsmかどうかを確認する必要があります。次に、列Bの名前を.xlsxまたは.xlsmに応じて変更する必要があります – rCorn

答えて

0
がファイル名かどうかを確認するために

Dim fName As String 
If Dir(RefSheet.Cells(file, 1) & RefSheet.Cells(file, 2))<>"" Then 
    fName = RefSheet.Cells(file, 1) & RefSheet.Cells(file, 2) 
ElseIf Dir(RefSheet.Cells(file, 1) & RefSheet.Cells(file, 2) & ".xlsm")<>"" Then 
    fName = RefSheet.Cells(file, 1) & RefSheet.Cells(file, 2) & ".xlsm" 
Else 
    fName = RefSheet.Cells(file, 1) & RefSheet.Cells(file, 2) & ".xlsx" 
End If 
Set InBook = Workbooks.Open(Filename:=fName, UpdateLinks:=False, ReadOnly:=True) 

この意志最初のテストに

Set InBook = Workbooks.Open(Filename:=RefSheet.Cells(file, 1) & RefSheet.Cells(file, 2), UpdateLinks:=False, ReadOnly:=True) 

から、あなたのコードを変更し

、必要に応じて実行されませんB列に記録されているとおりに有効です。そうでない場合は、拡張子が "xlsm"のファイルが存在するかどうかを確認し、存在する場合は使用します。それ以外の場合は、ファイルに "xlsx"という拡張子が付いていると見なされます。 (おそらく同様に、CSVやTXTファイルで作業します)

別の方法は、次のようになります。

Dim fName As String 
'The Dir command will just return the filename.extension portion of the first file that matches the specification 
fName = Dir(RefSheet.Cells(file, 1) & RefSheet.Cells(file, 2) & ".*") 
If fName = "" Then 
    'No matching file was found 
    MsgBox "File requested (" & RefSheet.Cells(file, 1) & RefSheet.Cells(file, 2) & ") does not exist" 
Else 
    'Concatenate the path and filename.extension together and open the file 
    Set InBook = Workbooks.Open(Filename:=RefSheet.Cells(file, 1) & fName, UpdateLinks:=False, ReadOnly:=True) 
End If 

P.S.すべての宣言を前もって終わらせたい場合は、fNameの宣言をSub(またはFunction)の先頭に移動することができます。