2016-05-15 14 views
2

`Ok、私は私の質問でより具体的に尋ねられました。処理ファイルFileExistsと2nd FileExistsの場合

  1. NV_A1_mainx.dxf
  2. NV_A1_resx.dxf
  3. NV_B1_mainx.dxf
  4. NV_B1_motx.dxf
  5. NV_B1_motlx.dxf
:私は例えば、私のフォルダ内のファイルの未定数を持っています

フォルダは、InStrの "mainx"、 "motx"、または "resx"に基づいて各ファイルを処理しているループです。 "motx"タイプのファイルでは、追加のマッチングタイプファイル "motlx"がある場合それがある場合、それは一方通行を処理します。そうでない場合は、2番目の方法を処理します。ファイル名は異なりますが、ファイル名のコンベンションには常に2つのアンダースコア "_"と続けて、検索対象のInStr文字が続きます。

例として上記のファイルを使用して、NV_A1_motx.dxfを処理しようとしたときにフォルダに一致するNV_B1_motlx.dxfがあるかどうかを確認するように文を書きたいと思います。

問題はスクリプトの最後の行です。 "motx"ファイルがフォルダ内に存在するかどうかを確認するには、 "motx"に対してその文を正しく書く方法を教えてください。

Thx ...私の意図をより明確にするための希望。

Set App = CreateObject("Illustrator.Application") 
Set FSO = CreateObject("Scripting.FileSystemObject") 
Set SourceFolder = FSO.GetFolder("S:\SOCAL\Section_13\Road DXFs") 
Set DXFfile = SourceFolder.Files 
Set DXFfolder = FSO.GetFolder(SourceFolder)         


Dim FileRef 
For Each FileRef In SourceFolder.Files 
    If Instr(FileRef,"motx") > 0 then 
     Call Motx(FileRef) 
    ElseIf Instr(FileRef,"mainx") > 0 then 
     Call Mainx(FileRef) 
    ElseIf Instr(FileRef,"resx") > 0 then 
    Call Resx(FileRef) 
    Else 
     Msgbox "File is not being found or some issue with script." 
    End If 
Next 

Sub Motx(FileRef) 

If ((App.Documents.Count > 0) And (FileExists("S:\SOCAL\Section_13\Road DXFs\SOCAL_B2_motlx.dxf"))) Then 
Else 

あなたのご意見ありがとうございました。私はエラーをコードに差し込んでいたので、私がしたことは、あなたのコードが一致するファイルを見つけるかどうかを確認するためのコードを基本に取り除くことでした。ようにスクリプトを

NV_B2_motlx.dvxと NV_B2_motx.dvx

テスト:フォルダに私がやっただけの2つのファイルを持っている

Set App = CreateObject("Illustrator.Application") 
Set FSO = CreateObject("Scripting.FileSystemObject") 
Set SourceFolder = FSO.GetFolder("S:\SOCAL\Section_13\Road DXFs") 
Set DXFfile = SourceFolder.Files 
Set DXFfolder = FSO.GetFolder(SourceFolder) 

For Each FileRef In SourceFolder.Files 
    ' default property of `FileRef` object is `Path` 
    If Instr(FileRef.Name, "motx", vbTextCompare) > 0 Then 
    I f fso.FileExists(fso.BuildPath(fso.GetParentFolderName(objFile.Path), _ 
      Replace(FileRef.Name, "motx", "motlx", 1, -1, vbTextCompare))) Then 
      'motlx' exists 
      MsgBox "We have a match!" 
     Else 
      'motlx' does not exist 
      MsgBox "Sorry, no match" 
     End If 
    End If 
Next 

がこれを実行している私は、次のエラーメッセージが表示されました:型が一致しません: '[文字列: "NV_B2_motlx.dxf"]' コード800A000D 9行目のChar 5.

+0

してください[編集]あなたの質問、何の合理的な説明を追加あなたの質問はです。できるだけ詳細を追加してください。現時点では広すぎます:_ ...ファイル名に基づいて_どのように基づいていますか?他の部分の特定の部分文字列ですか?または部分文字列を開始しますか?正規表現ベースの一致?両方のファイルに同じルールが適用されますか?または関連ルール?または独立したルール?またはファイル名のペアのリストがありますか? **等。等** – JosefZ

+0

おそらく最も重要なクエリ:what-if第1タイプの基準に一致するファイルが1つ以上あり、第2タイプの基準に一致するファイルが2つ以上ある(2+)場合は、各2日? ...または第2のカウントに関係なく1回1回ずつ処理しますか? ...または別の注文?そのようなルールを与えてください。 – JosefZ

+0

新しく追加された情報であっても、一言で言及していないので、あなたの問題が何であるか分かりません。あなたの実際の問題は何ですか? –

答えて

1

たぶん、このコードスタブは助けることができる:

Dim FileRef 
For Each FileRef In SourceFolder.Files 
    ' default proprty of `FileRef` object is `Path` 
    If Instr(FileRef.Name, "motx", vbTextCompare) > 0 Then 
     If fso.FileExists(fso.BuildPath(fso.GetParentFolderName(objFile.Path), _ 
      Replace(FileRef.Name, "motx", "motlx", 1, -1, vbTextCompare))) Then 
      'motlx' exists 
     Else 
      'motlx' does not exist 
     End If 

参考:

関連する問題