Avatar billede h_s Forsker
27. juni 2007 - 20:13 Der er 14 kommentarer og
2 løsninger

Kopier ark til andet Projektmappe

Word-hajen har lavet nedenstående makro, der kopier en celle. Jeg vil gerne have den lavet om til at det er et helt ark - Arket hedder Stamdata -
Projektmappen, hvor dens skal kpoieres over i står i arket Beregninger C26 og stien står i Beregninger C25.

Se evt. spørgsmål http://www.eksperten.dk/spm/776324

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 kabbak Professor
27. juni 2007 - 20:35 #1
Public Sub CopyToOtherWorkbook()
    Dim objWB As Workbook
    Dim objRange As Worksheet
    Dim strFileName As String
    Dim objWB_Destination As Workbook
    Dim objWS_Destination As Worksheet
    Dim StrPath As String
    On Error GoTo Error_CopyToOtherWorkbook
    Set objRange = ActiveWorkbook.Sheets("Stamdata")
    StrPath = ActiveWorkbook.Sheets("Beregninger").Range("c25")
    If Right(StrPath, 1) <> "\" Then StrPath = StrPath & "\"
    strFileName = ActiveWorkbook.Sheets("Beregninger").Range("c26")


    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(StrPath & strFileName)
            Else
                MsgBox "Destinationsfilen " & strFileName & " eksisterer ikke.", vbCritical
                GoTo End_Error_CopyToOtherWorkbook
            End If
        End If
    End If

    objRange.Copy After:=Workbooks(strFileName).Sheets(3)
    Application.CutCopyMode = False

End_Error_CopyToOtherWorkbook:
    Set objWB = Nothing
    Set objRange = Nothing
    Set objWB_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
27. juni 2007 - 20:38 #2
Hvor har du stående, at det ark der skal kopieres hedder Stamdata?
Avatar billede kabbak Professor
27. juni 2007 - 20:56 #3
Set objRange = ActiveWorkbook.Sheets("Stamdata")

objRange.Copy After:=Workbooks(strFileName).Sheets(3)
Avatar billede h_s Forsker
27. juni 2007 - 21:28 #4
Jeg får at vide at destinationsfilen ikke findes - Jeg kan se at det rigtige filnavn og sti står i Beregninger C26 og C25 - Hvad kan der være galt?
Avatar billede h_s Forsker
27. juni 2007 - 21:34 #5
Det må være her der er noget galt:

If objWB_Destination Is Nothing Then
        If strFileName <> "" Then
            If Dir(strFileName) <> "" Then
                Set objWB_Destination = Workbooks.Open(StrPath & strFileName)
            Else
                MsgBox "Destinationsfilen " & strFileName & " eksisterer ikke.", vbCritical
                GoTo End_Error_CopyToOtherWorkbook
            End If
        End If
    End If
Avatar billede h_s Forsker
27. juni 2007 - 21:40 #6
Jeg har prøvet at slette ovenstående, så giver det ingen problemer! Har det nogen værdi at have det med?

Når Arket Stamdata kopieres over får den navnet Stamdata(2) fordi der allerede er et Ark der hedder Stamdata. Den nye Stamdata skal erstatte den gamle. Vær opmærksom på at der er kæder til arket, der skal bibeholdes.
Avatar billede kabbak Professor
27. juni 2007 - 22:02 #7
Public Sub CopyToOtherWorkbook()
    Dim objWB As Workbook
    Dim objRange As Range
    Dim objWB_Destination As Workbook
    Dim strFileName As String
    Dim StrPath As String

    'On Error GoTo Error_CopyToOtherWorkbook

    Set objRange = ActiveWorkbook.Sheets("Stamdata").Cells
    StrPath = ActiveWorkbook.Sheets("Beregninger").Range("c25")
    If Right(StrPath, 1) <> "\" Then StrPath = StrPath & "\"
    strFileName = ActiveWorkbook.Sheets("Beregninger").Range("c26")


    For Each objWB In Application.Workbooks
        If LCase(objWB.Name) = 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(StrPath & strFileName)
            Else
                MsgBox "Destinationsfilen " & StrPath & strFileName & " eksisterer ikke.", vbCritical
                GoTo End_Error_CopyToOtherWorkbook
            End If
        End If
    End If

    objRange.Copy
    Windows(strFileName).Activate
    Sheets("Stamdata").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                                                  :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                          SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False

End_Error_CopyToOtherWorkbook:
    Set objWB = Nothing
    Set objRange = 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
27. juni 2007 - 22:47 #8
Nu kommer der ingen fejl, men intet i cellerne bliver kopieret over!
Avatar billede h_s Forsker
29. juni 2007 - 18:21 #9
Kabbak - Har du opgivet mig :-)
Avatar billede kabbak Professor
29. juni 2007 - 19:25 #10
koden virker fint her ???
Avatar billede kabbak Professor
29. juni 2007 - 19:28 #11
Den lader jo den workbook, som den kopierer til stå åben, så det er den du ser, når koden er kørt, er det ikke det der forvirrer dig.
Avatar billede h_s Forsker
30. juni 2007 - 10:19 #12
Jeg har prøvet at skrive noget i cellerne J6 samt i E27 og E28 hvor jeg også har farvet cellerne. Det kommer ikke med over! Jeg har prøvet at ændre følgende:

objWS_Destination.Range("A1").PasteSpecial xlPasteValues 'Ændret A! til A1
    Application.CutCopyMode = False

Uden held.
Både det ark, som jeg kopier fra og til hedder Stamdata - Kan det være derfor?
Avatar billede kabbak Professor
30. juni 2007 - 11:13 #13
"Både det ark, som jeg kopier fra og til hedder Stamdata - Kan det være derfor?"
Det gør de også i min test og uden fejl
Avatar billede h_s Forsker
30. juni 2007 - 12:08 #14
Jeg har ændret

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                          SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                          SkipBlanks:=False, Transpose:=False

til

    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False

..og så virker det. Kan ikke rigtig se forskellen på at tage Værdier og Formater hver for sig og så tage Alt på en gang.

Samtidig har jeg ændret:

Range("A1").Select
til
    Cells.Select
Makroen ser nu sådan ud:

Public Sub CopyToOtherWorkbook()
    Dim objWB As Workbook
    Dim objRange As Range
    Dim objWB_Destination As Workbook
    Dim strFileName As String
    Dim StrPath As String

    On Error GoTo Error_CopyToOtherWorkbook

    Set objRange = ActiveWorkbook.Sheets("Stamdata").Cells
    StrPath = ActiveWorkbook.Sheets("Beregninger").Range("c25")
    If Right(StrPath, 1) <> "\" Then StrPath = StrPath & "\"
    strFileName = ActiveWorkbook.Sheets("Beregninger").Range("c26")


    For Each objWB In Application.Workbooks
        If LCase(objWB.Name) = 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(StrPath & strFileName)
            Else
                MsgBox "Destinationsfilen " & StrPath & strFileName & " eksisterer ikke.", vbCritical
                GoTo End_Error_CopyToOtherWorkbook
            End If
        End If
    End If
       
    'Kopier alle celler i ObjRange
    objRange.Copy
        Windows(strFileName).Activate
    Sheets("Stamdata").Select
   
    'Vælger alle celler i Stamdata
    Cells.Select
   
    'Indsætter alt fra Stamdataprojektmappen - Ark Stamdata i nye Ark Stamdata
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.CutCopyMode = False

End_Error_CopyToOtherWorkbook:
    Set objWB = Nothing
    Set objRange = 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

Og det virker!

Kabbak smid et svar!
Avatar billede kabbak Professor
30. juni 2007 - 14:19 #15
Godt du fik det til at virke, jeg kan heller ikke se forskellen, tag nogen point selv, da du selv ordnede resten. ;-))
Avatar billede h_s Forsker
01. juli 2007 - 09:54 #16
OK
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