私はフォルダを持っています(毎回同じです - Application.FileDialogで選択する時間を無駄にする必要はありません)とExcelの列Cにすべてのファイル名を抽出する必要があります。Excel VBAでは、Application.FileDialog()を使用せずにフォルダ内のすべてのファイルの名前をインポートします。
これは私がここでApplication.FileDialog()とstackoverflowで見つけたコードですが、私はハードコードフォルダ(C:\ Users \ michal \ SkyDrive \ csv \ bossa \ mstcgl_csv)を入力します。
別の質問xDirectory $、xFname $、InitialFoldr $変数の末尾にある$記号は何ですか(重要)なぜそれらを宣言できないのですかas String
? ? これらの変数は文字列ではありませんか? ?
これはコードです:
Sub GetFileNames()
Dim Lista As Worksheet
Dim xRow As Long
Dim xDirectory$
Dim xFname$
Dim InitialFoldr$
Dim start As Double
Dim finish As Double
Dim total_time As Double
start = Timer ' remember time when macro starts.
ThisWorkbook.Sheets("Lista").Range("C1").Select
InitialFoldr$ = "C:\Users\michal\SkyDrive\csv\bossa\"
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = Application.DefaultFilePath & "\"
.Title = "Please select a folder to list Files from"
.InitialFileName = InitialFoldr$
.Show ' creates list of files ? ? ?
If .SelectedItems.Count <> 0 Then
xDirectory$ = .SelectedItems(1) & "\"
xFname$ = Dir(xDirectory$, 7)
Do While xFname$ <> ""
ThisWorkbook.Sheets("Lista").ActiveCell.Offset(xRow, 0) = xFname$
ActiveCell.Offset(xRow) = xFname$
xRow = xRow + 1
xFname$ = Dir
Loop
End If
End With
finish = Timer ' Set end time.
total_time = Round(finish - start, 3) ' Calculate total time.
MsgBox "This code ran successfully in " & total_time & " seconds", vbInformation
End Sub
はUの連中は私がそれを行う助けることができますか? 私はVBAの基本を学習していますが、まだ多くのことを理解していません。 そして、この行は、文字列にApplication.FileDialog
からのパスを書き込みます$記号の質問:-)ください
'Dim xFname $'は 'Dim xFname as String'の略語であり、読みにくいので通常はあまりにも頻繁に見えません。 – BrakNicku
詳細については[こちらのドキュメント](http://stackoverflow.com/documentation/excel-vba/777/getting-started-with-excel-vba/2672/declaring-variables#t=201705191059133750012)を参照してください。ヒント"。 – YowE3K