0

改善しようとしているコードが少しありますが、いくつかの問題があります。

コードは現在次のとおりです。

    Sub TestListFilesInFolder()
'Workbooks.Add ' create a new workbook for the file list
' add headers

Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker) ' Tried using a FileDialog Application  but had no luck

With Range("A1")
    .Formula = "Folder contents:"
    .Font.Bold = True
    .Font.Size = 12
End With
Range("A3").Formula = "Old File Path:"
Range("B3").Formula = "File Type:"
Range("C3").Formula = "File Name:"
Range("D3").Formula = "New File Path:"
Range("A3:H3").Font.Bold = True
ListFilesInFolder "L:\Pictures\A B C\B526 GROUP", True
' ListFilesInFolder fd, True ' I tried replacing the above line with this line but get an error

' list all files included subfolders
 End Sub

5行目と6行目は、ユーザーがコードを操作するフォルダーを選択できるファイルダイアログを開こうとしている場所に追加した部分です。

また、ListFilesInFolder を開始する下部近くのコメントアウトされた行は、その上の行を置き換えるために挿入しようとしたものです。

次のコードの始まりは次のとおりです。

   Sub ListFilesInFolder(SourceFolderName As String, IncludeSubfolders As Boolean)

したがって、最初のサブで定義されたフォルダーとそのフォルダーのサブフォルダーを使用します。

これに関する助けをいただければ幸いです。

よろしく、

サム

4

2 に答える 2

0

あなたはあなたの潜水艦fdに最初のパラメータとして渡しています。ListFilesInFolderこのサブは、ではなくString最初のパラメーターとしてaを受け入れます。FileDialog

これは、実行時にファイルダイアログを開き、ユーザーがフォルダーを選択できるようにするサンプルコードです。選択すると、フォルダのパスがに出力されますB2。フォルダが選択されていない場合(たとえば、ダイアログが閉じているかキャンセルされている場合)、B2テキストが含まれますNo item selected

新しいワークブックを作成して、このマクロを試してみるべきだと思います。ブレークポイントを設定してウォークスルーし、実際に何が行われているのかを確認します。次に、特定のニーズに合わせて機能するように変更できます。

Public Sub SelectExportDestinationPath()
    Dim fldr As FileDialog
    Dim sItem As String
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
    With fldr
        .Title = "Select a Folder"
        .AllowMultiSelect = False
        .InitialFileName = strPath
        If .Show <> -1 Then
            sItem = "No item selected"
        Else
            sItem = .SelectedItems(1)
        End If
    End With

    'if trailing slash is not found, add it
    If Len(sItem) > 0 And InStr(Len(sItem), sItem, Application.PathSeparator, vbCompareText) = 0 Then
        sItem = sItem & Application.PathSeparator
    End If

    Sheet1.Cells(2, 2).Value = sItem

    Set fldr = Nothing
End Sub
于 2013-03-19T12:58:45.430 に答える
-1

make sure you have the appropriate reference picked:

Press Alt+F11 to open the VB Editor. In that window, choose menu items Tools -> References..., then look down the list for Microsoft Office XXX Object Library
It's 11.0 for Access 2003, 10.0 for Access 2002; 9.0 for Access 2000, 8.0 for Access 97 -- pick the right one.
Put a check mark in the box next to that reference, then close the dialog.

or, use the actual values, not the mso values

msoFileDialogOpen=1
msoFileDialogSaveAs=2
msoFileDialogFilePicker=3
msoFileDialogFolderPicker=4
于 2013-03-19T12:35:55.520 に答える