Можно ли перемещать (из одной папки в другую) по одному текстовому файлу одновременно (* .txt), используя VBA? - PullRequest
1 голос
/ 06 июня 2019

Я собрал некоторые данные и хочу переместить один текстовый файл за раз в другую папку, используя (* .txt).Возможно ли это?

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

Я пытаюсь зациклить функцию Move.File на 7 текстовых файлах, в которых только один файл перемещается за один раз, затем перемещается следующий файл и так далее.При перемещении одного текстового файла, другая функция именования извлекает следующее текстовое имя.Надеюсь, это имеет смысл.

Dim FSO As Object
Dim SourceFileName As String, DestinFileName As String

k = 0
Do While k < 19
ActiveCell.Offset(-2, k).MergeArea.ClearContents
ActiveCell.Offset(-2, k).Value = Dir(FolderName & "*.txt*")
Set FSO = CreateObject("Scripting.Filesystemobject")
SourceFileName = "Y:\Engineering\*.txt"
DestinFileName = "Y:\Engineering\Completed\"
FSO.MoveFile Source:=SourceFileName, Destination:=DestinFileName
k = k + 3
Loop

Dim sht As Worksheet
Dim fnd As Variant
Dim rplc As Variant
fnd = ".txt"
rplc = ""
For Each sht In ActiveWorkbook.Worksheets
sht.Cells.Replace what:=fnd, replacement:=rplc
Next sht

End Sub

Что он делает, когда я использую этот код, он перемещает все текстовые файлы одновременно в эту папку.Поэтому, когда я зацикливаюсь на заголовках текстовых файлов, возникает ошибка.

1 Ответ

1 голос
/ 06 июня 2019

Если я правильно понял вашу цель, то можете попробовать (проверено, чтобы успешно выполнить в соответствии с моим пониманием цели)

Sub test()
Dim FSO As Object
Dim SourceFileName As String, DestinFileName As String
Dim FolderName As String
FolderName = "Y:\Engineering\"
FolderName = "C:\users\user\Desktop\Folder1\"    'modify to your requirement

Set FSO = CreateObject("Scripting.Filesystemobject")

k = 0
SourceFileName = Dir(FolderName & "*.txt")
    Do While k < 19 And SourceFileName <> ""
    Debug.Print SourceFileName
    ActiveCell.Offset(-2, k).MergeArea.ClearContents
    ActiveCell.Offset(-2, k).Value = SourceFileName
    DestinFileName = FolderName & "Completed\" & SourceFileName
    SourceFileName = FolderName & SourceFileName
    FSO.MoveFile Source:=SourceFileName, Destination:=DestinFileName
    k = k + 3   ' Why K is being incremented by 3? It will only move seven files  
    SourceFileName = Dir
    Loop

Dim sht As Worksheet
Dim fnd As Variant
Dim rplc As Variant
fnd = ".txt"
rplc = ""
For Each sht In ActiveWorkbook.Worksheets
sht.Cells.Replace what:=fnd, replacement:=rplc
Next sht
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...