2017-01-03 12 views
1

私はAccess 2010を使用して小さなプログラムを構築していますが、フォルダーを確認するには以下の方法を使用しています。存在しない場合は作成してください:VBAルックアップフォルダにアクセスしてifが存在しない場合はDLOOKUP

'need code to create folder 
    If Dir("C:\Michael\Test", vbDirectory) = "" Then 
     MkDir ("C:\Michael\Test") 
    Else 
     'do nothing for directory already exists 
    End If 

ただし、これを変更する必要があります。パスは、ユーザーが選択した内容に応じて変更できます。現時点では、パスは構築され、フィールド( "FlatFile")のテーブル( "tmpDestFolders")に保存されます。

実際には、この値が何であっても検索する必要がありますが、以下は機能しません。どのようにしてフィールド値が何であるかをチェックするように変更できますか?私はエラー76無効なパスを受け続ける:単に、その後

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long 

と::

'need code to create folder 
    If Dir(DLookup("FlatFile", "tmpDestFolders"), vbDirectory) = "" Then 
     MkDir (DLookup("FlatFile", "tmpDestFolders")) 
    Else 
     'do nothing for directory already exists 
    End If 
+0

"FlatFile"に無効なパスが含まれていると、そのエラーが表示されます。だからあなたは何を見ますか? – Gustav

+0

"FlatFile"はパス全体を含む。 c:\ test \ stuff \ things – Michael

+0

元のコードのパスをそのパスに置き換えるとどうなりますか? – Gustav

答えて

0

は、API呼び出しを使用し、それは1つのライナーだとグスタフの例@

MakeSureDirectoryPathExists DLookup("FlatFile", "tmpDestFolders") 
+0

woohoo、ありがとう、それは動作します。 – Michael

1

は素晴らしいです。私の関数には、より多くの行のコードが含まれている間にフラグオプションが追加されます。これを選択すると、trueに設定すると、ディレクトリが作成されます。ライブラリに追加するのはいいですね。あなたはそれのような存在しない場合は、ディレクトリを作成する場合この簡単たとえば呼び出すことができます:それは、アクセス修士(アレン・ブラウン)機能Folder Exists

Function FolderExistsCreate(DirectoryPath As String, CreateIfNot As Boolean) As Boolean 
    Dim Exists As Boolean 
    On Error GoTo DoesNotExist 
    Exists = ((GetAttr(DirectoryPath) And vbDirectory) = vbDirectory) 

    If Exists Then 
     FolderExistsCreate = True 
    Else 
     ' Doesn't Exist Determine If user Wants to create 
     If CreateIfNot Then 
      MkDir DirectoryPath 
      FolderExistsCreate = True 
     Else 
      FolderExistsCreate = False 
     End If 
    End If 
    Exit Function 
DoesNotExist: 
    FolderExistsCreate = False 
End Function 

ノートのオフに基づいています

Call FolderExistsCreate(strPath, True) 

それとも、フォルダが好きではない場合は作成し、次に存在するかどうかテストする場合:

' Check for User Specified 'Local' Dir Inbound Dir 
If FolderExistsCreate(strPath, True) Then 
    ValidateInboundLocal = True 
Else 
    ValidateInboundLocal = False 
End If 

それともFを確認する場合またはディレクトリを作成しないでください:

' Check for User Specified 'Local' Dir Inbound Dir 
If FolderExistsCreate(strPath, False) Then 
    ValidateInboundLocal = True 
Else 
    ValidateInboundLocal = False 
End If 
関連する問題