1

日報を txt 形式でエクスポートするアプリケーションがあります。これらのレポートから特定のデータ行を抽出し、それらを出力 xls ファイルに入れるマクロがあります。私のマクロの入力ディレクトリは、現在、今日のレポートを手動で移動する別のフォルダーです。

マクロが既定のレポート フォルダーから読み取るだけで、今日の日付で作成されたファイルのみを読み取れるようにしたいと考えています。

レポート ファイルの命名規則は次のとおりです。

ヘルプ?

うわー速かった!ありがとう...スタックオーバーフローを初めて使用します。データを取得してExcelにダンプするコードを含める必要があると思います...ここにあります:

Sub PullLinesFromEPremisReport()
Dim FileName, PathN, InputLn As String
Dim SearchFor1, SearchFor2, OutpFile As String
Dim StringLen1, StringLen2 As Integer
Dim colFiles As New Collection
Dim bridgekey As String

PathO = "C:\Documents and Settings\GROMERO\Desktop\CM reconciliation\output\"
PathN = "C:\Documents and Settings\GROMERO\Desktop\CM reconciliation\input\"

FileName = Dir(PathN)

While FileName <> ""
    colFiles.Add (FileName)
    FileName = Dir

Wend

SearchFor1 = "BRIDGE KEY"

StringLen1 = Len(SearchFor1)


OutpFile = "RESULTS.xls"
Open PathO & OutpFile For Output As #2

For Each Item In colFiles
    Open PathN & Item For Input As #1
        Do Until EOF(1) = True
               Line Input #1, InputLn
               If (Left(LTrim$(InputLn), StringLen1) = SearchFor1) Then
                    bridgekey = InputLn
           End If

    Loop

Close #1
Next Item

Close #2
End Sub
4

3 に答える 3

2

ダニエルの答えは正しいですが、FileSystemObject を使用するにはいくつかの手順が必要です。

「Microsoft Scripting Runtime」への参照があることを確認してください。 ここに画像の説明を入力 ここに画像の説明を入力

次に、ディレクトリ内のファイルを反復処理します。

Sub WorkOnTodaysReports()

'the vars you'll need
Dim fso As New FileSystemObject
Dim fldr As Folder
Dim fls As Files
Dim fl As File

Set fldr = fso.GetFolder("C:\Reports")
Set fls = fldr.Files

For Each fl In fls

    'InStr returns the position of the substring, or 0 if not found
    '    EDIT: you can explicitly use the reliable parts of your file name
    '    to avoid false positives
    If InStr(1, fl.Name, "AppServiceUser_" & Format(Now, "YYYYMMDD")) > 0 Then

        'Do your processing

    End If

Next fl

End Sub

編集:だから、あなたが投稿したコードから、あなたがPathN望むようにメインのReportsフォルダに送信してから、Whileステートメントを次のように変更することができると思います:

While FileName <> ""

    If InStr(1, FileName, "AppServiceUser_" & Format(Now, "YYYYMMDD")) > 0 Then

        colFiles.Add (FileName)

    End If

    FileName = Dir

Wend
于 2012-08-17T18:30:06.480 に答える
2

私の頭の上からこれを行うことができる2つの方法。File経由でを使用していると仮定しますFileSystemObject

Instr文字列内で検索file.Nameを実行しますFormat(Date, "YYYYMMDD")

または、ファイルをループするはるかに単純なアプローチを使用し、ループ内でこれを実行します。

If File.DateCreate >= Date Then
    'Do something
end if

Fileファイルをループするために使用される実際の変数はどこにありますか。

于 2012-08-17T18:15:10.920 に答える
1
If fileName like "*AppServiceUser_" & Format(Now, "YYYYMMDD") & _
                                              "#########.txt" Then
    'good to go
End If
于 2012-08-17T18:59:22.500 に答える