J'essaie de copier une plage d'un livre, d'ouvrir le livre cible et d'ajouter les valeurs à cette feuille, en obtenant un échec de la classe Range sans savoir comment résoudre ce problème. Voici mon code, merci de regarder.
Sub openDATfiles()
' openDATfiles Macro
Dim ws As Worksheet, strFile As String, x As Integer, _
y As Long, Pressure As Variant, Tstamp As Variant, LastRow As Long, LastRow2 As Long, cn As Variant, fPath As String
fPath = "F:\McMAHON\From David\SJ15_10_01_CD\"
strFile = fPath & Dir(fPath & "*.dat")
x = 1
y = 1
' Start Loop 1
Do While Len(strFile) > 0
Workbooks.OpenText FileName:= _
strFile, 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
Set ws = ActiveSheet
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
LastRow = ws.Range("N" & Rows.Count).End(xlUp).Row + 1
ws.Range("O" & LastRow).Value = Pressure
ws.Range("N" & LastRow).Value = Tstamp
Loop
strFile = fPath & Dir
Range("A1:K36004").delete Shift:=xlUp
Range("N2:O31").Copy
ActiveWorkbook.Close savechanges:=False
Dim Pastebook As Workbook
'## Open both workbooks first:
Set Pastebook = Workbooks.Open("F:\McMAHON\Useful Things\VBA\PiezoData")
LastRow2 = ActiveWorkbook.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row + 1
'Now, paste to y worksheet:
Pastebook.Sheets("sheet1").Range("A" & LastRow2).PasteSpecial xlPasteValues
Loop
End Sub
Toute astuce ou aide est grandement appréciée, merci.
microsoft-excel
vba
Workinatwork
la source
la source
CutCopyMode
àFalse
. Essayez de garder le livre source ouvert et lancez le.Copy
immédiatement avant le.PasteSpecial
. Quant à ce que vous pourriez faire de mieux, une fois que vous avez un code qui fonctionne comme prévu, il devient une question pour Examen du code .Réponses:
Comme mentionné par @ Mat'sMug, vous fermiez trop tôt le fichier que vous avez copié, ce qui a provoqué l'erreur mentionnée.
Et le plus gros problème est
Len(strFile) > 0
parce que vous avez déjà assigné le chemin du dossier dansstrFile
donc ce ne sera jamais 0 et vous resterez coincé dans votre boucle pour toujours.Voici votre code corrigé et amélioré:
la source