2017-08-22 6 views
2
である

VBAを使用して、特定のパス(例:2)からワークブックを開きたいとします。私が試したすべてのバリエーションは動作していません。ExcelのVBAブックの名前の一部が

ワークブックの名前は、番号以外のヘブライ語です。そのため、ファイルを開く番号にファイル名の基になるVBAコードが必要です。

数字の前にヘブライ語で4文字あります。ヘブライ語では、右から左へ書いています。助けるため

Set WB1 = Workbooks.Open("C:\RESULTS\" 2 & ".xlsx") 

ありがとう:

は、ここに私のコードです。

+0

いや、その文句を言わない仕事をお試しください。質問には、番号2の前にヘブライ語のテキストがいくつかありますが、これは無視する必要がありますが、ファイル名に – Wolfie

+1

の一部であり、ブックにヘブライ語の言葉が含まれていて、ディレクトリで検索するのに必要な番号あなたは欲しいですか?私はファイルを検索する方法についてvbaで答えを追加します。 –

+0

@DannyJames あなたが私に尋ねるか、教えてもわかりません。 –

答えて

3

この

Dim sFound As String, fPath As String 

fPath = "C:\RESULTS\" 
sFound = Dir(fPath & "*2*.xlsx") 'get the first file in dir 
If sFound <> "" Then 
    Set WB1 = Workbooks.Open(fPath & sFound) 
End If 
+0

ファイルが見つかりません。私はそれをチェックし、ファイルはこのパスにあります。提案はありますか? –

+0

@RafaelOsipov - まず、それはIF条件の中に入っていますか? – Mrig

+0

@RafaelOsipov - 'sFound'の値をデバッグしてチェックします。 – Mrig

3

は、これが私の作品:コードの

Option Explicit 

Sub TestMe() 

    Dim objFSO   As Object 
    Dim objFolder  As Object 
    Dim objFile   As Object 
    Dim wbs    As Workbook 

    Dim strExtension As String 
    Dim lngNumber  As String 
    Dim lngAdditional As Long 
    Dim lngLenFile  As Long 

    strExtension = ".xlsx" 
    lngNumber = 20 
    lngAdditional = 4 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFolder = objFSO.GetFolder("C:\Users\Desktop\") 
    lngLenFile = Len(strExtension) + Len(lngNumber) + lngAdditional 

    For Each objFile In objFolder.Files 
     If Left(objFile.Name, Len(lngNumber)) = lngNumber And _ 
       Right(objFile, Len(strExtension)) = strExtension And _ 
       Len(objFile.Name) = lngLenFile Then 

      Debug.Print objFile.Name 
      Set wbs = Workbooks.Open(objFile) 

     End If 
    Next objFile 

End Sub 

アイデアは、このように、lngNumberstrExtensionが追加され、それを柔軟にすることです。左右のサイズだけでなく、サイズも常にチェックします。したがって、24Some.xlsxは、2Some.xlsxとは異なります。

Debug.Printが開かれたファイルを見るために追加されます。

lngAdditionalが追加されます(追加の4文字分)。

関連する問題