2017-07-04 4 views
0

Hoffentlich sollte dies einfach sein, aber ich kann nicht sehen, was ich verpasst habe. Ich erhalte den Laufzeitfehler in der Zeile Einfügen Spezial, nachdem ich den Inhalt von Spalte A auf dem "Original" -Blatt gelöscht habe. Kann mir bitte jemand helfen?Paste spezielle Methode der Range-Klasse fehlgeschlagen - Fehler 104

Sub BACSConversion2() 

Dim MyNewBook As String 
Dim MySaveFile As String 
Dim fileToOpen As Variant 
Dim fileName As String 
Dim sheetName As String 

'Turn off display alerts 
Application.DisplayAlerts = False 
'Turn off screen updates 
Application.ScreenUpdating = False 

'This calls the routine to get the text file data 
'Call CopyTxtFile 

'Opens the folder to location to select txt file 
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt") 
If fileToOpen <> False Then 

    Workbooks.OpenText fileName:=fileToOpen, _ 
    DataType:=xlDelimited, Tab:=True 
End If 
'Creates the file name based on txt file name 
fileName = Mid(fileToOpen, InStrRev(fileToOpen, "\") + 1) 
'Creates the sheet name based on the active txt file 
sheetName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) 

'Save active file as... 
ActiveWorkbook.SaveAs ("S:\Accounts (New)\Management Information 
(Analysis)\Phil Hanmore - Analysis\Neil Test\Test Destination Folder\" & 
fileName & ".CSV") 

'Selects all data in column A and copies to clipboard 
Range("A1", Range("A1").End(xlDown)).Select 
Selection.Copy 
'Closes the workbook 
'ActiveWorkbook.Close 

'Open the original document where the BACS file is located 
Workbooks.Open "S:\Accounts (New)\Management Information (Analysis)\Phil 
    Hanmore - Analysis\Neil Test\copy of bacs conversation calc.xlsx" 
'Selects the worksheet called "Original" 
Sheets("Original").Select 

Range("A:A").ClearContents 


'Paste selected values from previous sheet 
Selection.PasteSpecial Paste:=xlPasteValues 


'Selects appropriate worksheet - Non-MyPayFINAL 
Sheets("Non-MyPay FINAL").Select 

'Selects all data in column A and copies to clipboard 
Range("A1", Range("A1").End(xlDown)).Select 
    Selection.Copy 

'Add a new workbook 
Workbooks.Add 
'Paste selected values from previous sheet 
Selection.PasteSpecial Paste:=xlPasteValues 

'Build SaveAs file name 
    MySaveFile = Format(Now(), "DDMMYYYY") & "NonMyPayFINAL" & ".CSV" 
    'Save template file as... 
    ActiveWorkbook.SaveAs ("S:\Accounts (New)\Management Information 
    (Analysis)\Phil Hanmore - Analysis\Neil Test\" & MySaveFile) 
    'Close the new saved file 
    ActiveWorkbook.Close 

'Selects appropriate worksheet - MyPayFINAL 
Sheets("MyPay FINAL").Select 

'Selects all data in column A and copies to clipboard 
Range("A1", Range("A1").End(xlDown)).Select 
Selection.Copy 

'Add a new workbook 
Workbooks.Add 
'Paste selected values from previous sheet 
Selection.PasteSpecial Paste:=xlPasteValues 

'Build SaveAs file name 
    MySaveFile = Format(Now(), "DDMMYYYY") & "MyPayFINAL" & ".CSV" 
    'Save template file as... 
    ActiveWorkbook.SaveAs ("S:\Accounts (New)\Management Information 
    (Analysis)\Phil Hanmore - Analysis\Neil Test\" & MySaveFile) 
    'Close the new saved file 
    ActiveWorkbook.Close 
'Close original source workbook 
    Workbooks("bacs conversation calc").Close 

'Turn on display alerts 
Application.DisplayAlerts = True 
'Turn on screen updates 
Application.ScreenUpdating = True 

End Sub 
+0

Ändern Sie die Reihenfolge, die gerade die Zwischenablage löscht. Löschen Sie den Inhalt und kopieren Sie ihn anschließend. Übrigens brauchen Sie nicht Auswahl Bereich ("A1", Bereich ("A1"). Ende (xlDown)). Kopieren'. – SJR

+0

@SJR Danke für die schnelle Antwort, könntest du mir ein Beispiel geben? – Dyhouse

+0

Nachdem ich den Inhalt gelöscht habe, muss ich zurück zur CSV-Datei wechseln, kopieren, zum "Original" -Blatt zurückkehren und dann einfügen? – Dyhouse

Antwort

0

Dieser Code weist den Kopienbereich einer Variablen zu und verwendet diesen. Da Sie verschiedene Arbeitsmappen und Arbeitsblätter verwenden, empfiehlt es sich, ihnen Variablen zuzuordnen und direkt darauf zu verweisen, damit keine Zweifel bestehen, auf welche Datei Sie verweisen. Ich bin mir nicht 100% sicher, was du tust, also habe ich das nicht getan.

Sub BACSConversion2() 

Dim MyNewBook As String 
Dim MySaveFile As String 
Dim fileToOpen As Variant 
Dim fileName As String 
Dim sheetName As String 
Dim rCopy As Range 

'Turn off display alerts 
Application.DisplayAlerts = False 
'Turn off screen updates 
Application.ScreenUpdating = False 

'This calls the routine to get the text file data 
'Call CopyTxtFile 

'Opens the folder to location to select txt file 
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt") 
If fileToOpen <> False Then 
    Workbooks.OpenText fileName:=fileToOpen, _ 
    DataType:=xlDelimited, Tab:=True 
End If 
'Creates the file name based on txt file name 
fileName = Mid(fileToOpen, InStrRev(fileToOpen, "\") + 1) 
'Creates the sheet name based on the active txt file 
sheetName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) 

'Save active file as... 
ActiveWorkbook.SaveAs ("S:\Accounts (New)\Management Information (Analysis)\Phil Hanmore - Analysis\Neil Test\Test Destination Folder\" & _ 
fileName & ".CSV") 

'Selects all data in column A and copies to clipboard 
Set rCopy = Range("A1", Range("A1").End(xlDown)) 
'Closes the workbook 
'ActiveWorkbook.Close 

'Open the original document where the BACS file is located 
Workbooks.Open "S:\Accounts (New)\Management Information (Analysis)\Phil Hanmore - Analysis\Neil Test\copy of bacs conversation calc.xlsx" 
'Selects the worksheet called "Original" 
Sheets("Original").Range("A:A").ClearContents 

'Paste selected values from previous sheet 
rCopy.Copy 
Sheets("Original").Range("A1").PasteSpecial Paste:=xlPasteValues 

'Selects appropriate worksheet - Non-MyPayFINAL 
Sheets("Non-MyPay FINAL").Select 

'Selects all data in column A and copies to clipboard 
Range("A1", Range("A1").End(xlDown)).Select 
Selection.Copy 

'Add a new workbook 
Workbooks.Add 
'Paste selected values from previous sheet 
Selection.PasteSpecial Paste:=xlPasteValues 

'Build SaveAs file name 
MySaveFile = Format(Now(), "DDMMYYYY") & "NonMyPayFINAL" & ".CSV" 
'Save template file as... 
ActiveWorkbook.SaveAs ("S:\Accounts (New)\Management Information (Analysis)\Phil Hanmore - Analysis\Neil Test\" & MySaveFile) 
'Close the new saved file 
ActiveWorkbook.Close 

'Selects appropriate worksheet - MyPayFINAL 
Sheets("MyPay FINAL").Select 

'Selects all data in column A and copies to clipboard 
Range("A1", Range("A1").End(xlDown)).Select 
Selection.Copy 

'Add a new workbook 
Workbooks.Add 
'Paste selected values from previous sheet 
Selection.PasteSpecial Paste:=xlPasteValues 

'Build SaveAs file name 
MySaveFile = Format(Now(), "DDMMYYYY") & "MyPayFINAL" & ".CSV" 
'Save template file as... 
ActiveWorkbook.SaveAs ("S:\Accounts (New)\Management Information (Analysis)\Phil Hanmore - Analysis\Neil Test\" & MySaveFile) 
'Close the new saved file 
ActiveWorkbook.Close 
'Close original source workbook 
Workbooks("bacs conversation calc").Close 

'Turn on display alerts 
Application.DisplayAlerts = True 
'Turn on screen updates 
Application.ScreenUpdating = True 

End Sub 
+1

Vielen Dank, funktioniert wie ein Zauber und ich kann jetzt den Fehler sehen, den ich gemacht habe. Ich schätze deine Hilfe sehr :) – Dyhouse

Verwandte Themen