Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Nedenstående gemmer og lukker den fil, som skal åbnes og opdateres. Hvis filen skal stå åben, kan du blot slette linjen (objWB_Destination.Close True). ***************
Public Sub CopyToOtherWorkbook() Dim objRange As Range Dim strFileName As String Dim objWB_Destination As Workbook Dim objWS_Destination As Worksheet
On Error GoTo Error_CopyToOtherWorkbook Set objRange = ActiveWorkbook.Sheets("Stam").Range("A2") strFileName = objWS.Range("A1").Value
If strFileName <> "" Then If Dir(strFileName) <> "" Then Set objWB_Destination = Workbooks.Open(strFileName) Set objWS_Destination = objWB_Destination.Sheets("Udgang") objRange.Copy objWS_Destination.Range("A2").PasteSpecial xlPasteValues objWB_Destination.Close True Application.CutCopyMode = False Else MsgBox "Destinationsfilen " & strFileName & " eksisterer ikke.", vbCritical End If Else MsgBox "Filnavn mangler.", vbCritical End If
End_Error_CopyToOtherWorkbook: Set objRange = Nothing Set objWB_Destination = Nothing Set objWS_Destination = Nothing
Exit Sub
Error_CopyToOtherWorkbook: MsgBox "Der er sket en fejl." & vbCr & "Fejl nr.: " & Err.Number & vbCr & "Fejlmeddelelse: " & Err.Description Resume End_Error_CopyToOtherWorkbook End Sub
Filen der skal kopieres TIL er åben i forvejen og når der er kopieret, skal filen der kopieres TIL ikke lukkes.
Hvor skal der ændres?
Public Sub CopyToOtherWorkbook() Dim objRange As Range Dim strFileName As String Dim objWB_Destination As Workbook Dim objWS_Destination As Worksheet
On Error GoTo Error_CopyToOtherWorkbook Set objRange = ActiveWorkbook.Sheets("Stam").Range("A2") strFileName = ActiveWorkbook.Sheets("Stam").Range("A1").Value
If strFileName <> "" Then If Dir(strFileName) <> "" Then Set objWB_Destination = Workbooks.Open(strFileName) Set objWS_Destination = objWB_Destination.Sheets("Udgang") objRange.Copy objWS_Destination.Range("A2").PasteSpecial xlPasteValues objWB_Destination.Close True Application.CutCopyMode = False Else MsgBox "Destinationsfilen " & strFileName & " eksisterer ikke.", vbCritical End If Else MsgBox "Filnavn mangler.", vbCritical End If
End_Error_CopyToOtherWorkbook: Set objRange = Nothing Set objWB_Destination = Nothing Set objWS_Destination = Nothing
Exit Sub
Error_CopyToOtherWorkbook: MsgBox "Der er sket en fejl." & vbCr & "Fejl nr.: " & Err.Number & vbCr & "Fejlmeddelelse: " & Err.Description Resume End_Error_CopyToOtherWorkbook End Sub
Nedenstående løber de åbne Excel-filer igennem. Hvis destinationsfilen IKKE er åben, bliver den åbnet, men ellers "hapser" den bare fat i den :-)
Public Sub CopyToOtherWorkbook() Dim objWB As Workbook Dim objRange As Range Dim strFileName As String Dim objWB_Destination As Workbook Dim objWS_Destination As Worksheet
On Error GoTo Error_CopyToOtherWorkbook Set objRange = ActiveWorkbook.Sheets("Stam").Range("A2") strFileName = ActiveWorkbook.Sheets("Stam").Range("A1").Value
For Each objWB In Application.Workbooks If LCase(objWB.FullName) = LCase(strFileName) Then Set objWB_Destination = objWB Exit For End If Next objWB
If objWB_Destination Is Nothing Then If strFileName <> "" Then If Dir(strFileName) <> "" Then Set objWB_Destination = Workbooks.Open(strFileName) Else MsgBox "Destinationsfilen " & strFileName & " eksisterer ikke.", vbCritical GoTo End_Error_CopyToOtherWorkbook End If End If End If
Set objWS_Destination = objWB_Destination.Sheets("Udgang") objRange.Copy objWS_Destination.Range("A2").PasteSpecial xlPasteValues Application.CutCopyMode = False
End_Error_CopyToOtherWorkbook: Set objWB = Nothing Set objRange = Nothing Set objWB_Destination = Nothing Set objWS_Destination = Nothing
Exit Sub
Error_CopyToOtherWorkbook: MsgBox "Der er sket en fejl." & vbCr & "Fejl nr.: " & Err.Number & vbCr & "Fejlmeddelelse: " & Err.Description Resume End_Error_CopyToOtherWorkbook End Sub
Først laver jeg en reference til den celle, som skal kopieres Set objRange = ActiveWorkbook.Sheets("Stam").Range("A2")
Herefter aflæser jeg filnavnet på den fil, hvor det kopierede skal ind strFileName = ActiveWorkbook.Sheets("Stam").Range("A1").Value
Nu løber jeg alle åbne excel-filer igennem og tjekker, om der er en af dem, der svarer til det filnavn, som jeg lige har aflæst For Each objWB In Application.Workbooks If LCase(objWB.FullName) = LCase(strFileName) Then
Hvis jeg finder den rigtige fil, sætter jeg en reference til den Set objWB_Destination = objWB Exit For End If Next objWB
Hvis jeg har fundet den rigtige fil (dvs. at den er åben), vil objWB_Destination "være noget" Hvis objWB_Destination IKKE "er noget", er filen, som det kopierede skal indsættes i, ikke åben og jeg forsøger derfor at finde og åbne den. If objWB_Destination Is Nothing Then If strFileName <> "" Then
Her tjekker jeg om filen i det hele taget eksisterer - hvis den gør, åbner jeg den OG sætter en reference til den samtidig. If Dir(strFileName) <> "" Then Set objWB_Destination = Workbooks.Open(strFileName) Else MsgBox "Destinationsfilen " & strFileName & " eksisterer ikke.", vbCritical GoTo End_Error_CopyToOtherWorkbook End If End If End If
Set objWS_Destination = objWB_Destination.Sheets("Udgang") objRange.Copy objWS_Destination.Range("A2").PasteSpecial xlPasteValues Application.CutCopyMode = False
Lad mig høre, hvis der er andet, du ønsker en forklaring på. I øvrigt - når jeg afslutter proceduren med Set objWB = Nothing osv. er det for at frigive hukommelsen igen (dvs. at hvis du har brugt Set xx = "et eller andet" i den kode, bør du afslutte med at sætte det til ingenting igen).
Jeg har nu behov for at i stedet for at kopier kun en celle, så skal det være hele arket Stam, der skal kopieres over i Stam. Hvad skal jeg ændre? Hvis du synes der skal laves et nyt spørgsmål før du vil svare mig, så sig endelig til!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.