Avatar billede h_s Forsker
02. maj 2007 - 19:29 Der er 14 kommentarer og
1 løsning

Makro Indsætte i andet regneark

Jeg har en værdi i celle A2 ark Stam, som jeg gerne vil have kopieret over i et andet regneark i Celle A2 ark Udgang.

Stien og filnavn på det ark der skal kopieret TIL står i A1 ark Stam. F.eks. C:\test\Udgangspunkt.xls

Hvordan går man det?
Avatar billede word-hajen Nybegynder
03. maj 2007 - 18:28 #1
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
Avatar billede h_s Forsker
06. maj 2007 - 16:57 #2
Jeg har prøvet dit forslag, men får en fejl:

Fejl.nr. 242
Fejlmeddelelse: Object erquired

Hvad kan det skyldes?
Avatar billede h_s Forsker
06. maj 2007 - 16:58 #3
Ups.
Fejl.nr. er 424 :-)
Avatar billede word-hajen Nybegynder
06. maj 2007 - 17:17 #4
Jeg har leget lidt med variablerne undervejs og glemt at rydde rigtigt op. Ændr:

    strFileName = objWS.Range("A1").Value
til
    strFileName = ActiveWorkbook.Sheets("Stam").Range("A1").Value
Avatar billede h_s Forsker
07. maj 2007 - 19:37 #5
Det virker :-)

Smid et svar så får du dine point.
Måske kan du også hjælpe mig her: http://www.eksperten.dk/spm/777057
Avatar billede h_s Forsker
07. maj 2007 - 20:03 #6
Der var vist en lille fejl alligevel:

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
Avatar billede word-hajen Nybegynder
08. maj 2007 - 19:06 #7
Den med IKKE at lukke filen er nem nok. Der skal du bare fjerne objWB_Destination.Close True (som jeg har skrevet tidligere).

Vil der være andre Excel-filer åbne (altså ud over de 2, som du opdaterer til/fra), når du skal køre koden?
Avatar billede word-hajen Nybegynder
08. maj 2007 - 19:09 #8
Jeg kan se, at du har fået kommentar fra excelent på dit andet spørgsmål (07/05-2007 19:37:48).
Avatar billede h_s Forsker
08. maj 2007 - 21:50 #9
dem med Close havde jeg også fundet ud af :-)
Den anden er lidt sværre.

Jeg kan ikke sige at der kun vil være 2 ark åbne, så jeg tror vi må gå ud fra at det vil der.
Avatar billede word-hajen Nybegynder
08. maj 2007 - 22:11 #10
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
Avatar billede passiflora Juniormester
15. maj 2007 - 12:05 #11
Spændende ... Kan det også vises i 2007 versionen ...
Avatar billede passiflora Juniormester
15. maj 2007 - 12:21 #12
Ubs forkert spørsmål ...
Avatar billede h_s Forsker
18. maj 2007 - 19:59 #13
Tak for hjælpen - Måske du kan give mig en lille forklaring på hvad der sker ned gennem koden, så jeg også kan lære lidt!
Avatar billede word-hajen Nybegynder
18. maj 2007 - 22:30 #14
Det kan jeg da godt.

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).
Avatar billede h_s Forsker
26. juni 2007 - 23:19 #15
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!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester