Как конвертировать / переименовывать неизвестный тип файла в Access VBA для фиксированной спецификации импорта - PullRequest
0 голосов
/ 31 января 2019

Мне нужно импортировать кучу файлов в доступ, используя фиксированную (.txt) спецификацию импорта.Однако, хотя эти файлы хорошо открываются в блокноте, они не являются файлами .txt и, следовательно, импорт не выполняется.

Исходные файлы упакованы в архив.У меня уже есть код ниже (извлеченный и неполный), чтобы разархивировать их и поместить в папку.После каждого импорта разархивированный файл затем удаляется на свободное место.

  If LCase(Right(fil.Name, 3)) = "zip" Then
        Status "Unzip file '" & fil.Name & "'..."
        currentISO = Left(fil.Name, 2)
        UnZipFiles iZip, fil.Path
        iTimeEnlapsed = 0
        'Pause until the file is completely extracted
        Do Until fso.GetFolder(iZip).Files.Count > 0
                Call Sleep(Int(fil.Size / (2 * 20)))
            'If unzip failed after 15sec it will be invoked again
            iTimeEnlapsed = iTimeEnlapsed + 1000
            If iTimeEnlapsed > 50000 Then
                If MsgBox("UnZip Error: " & fil.Name & vbCrLf & vbCrLf & "Do you want to SKIP this file and resume IMPORT process?", vbYesNo + vbQuestion, "UNZIP Errot - Resume ") = vbYes Then
                     Exit Do
                End If

               UnZipFiles iZip, fil.Path
               iTimeEnlapsed = 0
               Exit Do
            End If
        Loop
        For Each fil2 In fso.GetFolder(iZip).Files
            'Import the files (after converting them to .txt)

        DoCmd.TransferText acImportFixed, "Daily_Import", "Import_Data_Dump", fil.Path

        Kill fil2   

        Next fil2
        Set fil2 = Nothing
    Else

  End If

После приведенного выше кода (для каждого fil2) импорт выполняется из пути к файлу (который легко изменить).Тем не менее, это не будет работать, если мои файлы не заканчиваются на .txt.Все они XXXXX вместо XXXXX.txt, где они не имеют расширение файла

1 Ответ

0 голосов
/ 31 января 2019

Просто переименуйте файл:

   For Each fil2 In fso.GetFolder(iZip).Files
       fil2.Name = fil2.Name & ".txt"

       ' Import the file.
       DoCmd.TransferText acImportFixed, "Daily_Import", "Import_Data_Dump", fil2.Path

       fil2.Delete
   Next fil2
...