Como mencionado por @ Mat'sMug, você estava fechando o arquivo que você copiou muito cedo, causando o erro mencionado.
E o problema maior é Len(strFile) > 0
porque você já atribuiu o caminho da pasta em strFile
, por isso nunca será 0 e você ficará preso no seu loop para sempre .
Aqui está o seu código corrigido e melhorado:
Sub openDATfiles()
'''openDATfiles Macro
Dim wS As Worksheet, strFile As String, x As Integer, _
y As Long, Pressure As Variant, Tstamp As Variant, cn As Variant
Dim FolderPath As String, FileName As String, FilePath As String
Dim wB As Workbook, PasteBook As Workbook, PasteSheet As Worksheet
Dim NextRow As Long, NextPasteRow As Long
FolderPath = "F:\McMAHON\From David\SJ15_10_01_CD\"
'''Start Loop 1
x = 1
y = 1
'''Open destination workbook first
Set PasteBook = Workbooks.Open("F:\McMAHON\Useful Things\VBA\PiezoData")
Set PasteSheet = PasteBook.Sheets("Sheet1")
FileName = Dir(FolderPath & "*.dat")
Do While FileName <> vbNullString
FilePath = FolderPath & FileName
se wB = Workbooks.OpenText( _
FileName:=FilePath, _
Origin:=437, _
StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _
Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1)), _
TrailingMinusNumbers:=True _
)
DoEvents
Set wS = wB.Sheets(1)
With wS
Do Until x = 31
Pressure = WorksheetFunction.Max(.Range("J" & y + 4 & ":J" & y + 1203))
Tstamp = WorksheetFunction.Max(.Range("A" & y + 4 & ":A" & y + 1203))
x = x + 1
y = y + 1201
NextRow = .Range("N" & .Rows.Count).End(xlUp).Row + 1
.Range("O" & NextRow).Value = Pressure
.Range("N" & NextRow).Value = Tstamp
Loop
.Range("N2:O31").Copy
End With 'wS
With PasteSheet
NextPasteRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1
'''Now, paste to your pastesheet
.Range("A" & NextPasteRow).PasteSpecial xlPasteValues
End With 'PasteSheet
'''Pasting done : you can close the file you copied from
wB.Close savechanges:=False
'''Get next file name
FileName = Dir()
Loop
End Sub