Avatar billede terib Nybegynder
20. marts 2008 - 11:08 Der er 4 kommentarer og
1 løsning

Mere detaljeret makro kode

Hej
Jeg har følgende makro på en knap i en excell template. Templaten bruger jeg til at udfylde linier med et udbud af varer.
Når jeg har lavet udbuddet, klikker jeg på Finish og der laves en kopi af templaten som vedhæftes en email og gemmes i en mappe på c drevet. Fungerer super duper...MEN nu kunne jeg godt tænke mig at jeg ud af 15 linier kunne vælge linie 1,3,7 og så var det disse linier der blev lavet en kopi af i et nyt ark, istedet for at det var hele arket der blev kopieret og vedhæftet. Samtidig ville det være dejligt at jeg kunne bestemme hvilke felter der skulle kopieres også, således at det ikke var felter indeholdende info som jeg ikke vil vise frem til den jeg mailer arket til.

Kan det lade sig gøre at bygge ind i den eksisterende kode?
På forhånd tak.
Mvh.

Sub Finish()
    Dim Navn As String
    'Finish Macro

    '
    Cells.Select
    Selection.Copy
    Workbooks.Add
    Cells.Select
    Cells.Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                          False, Transpose:=False
    Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                          False, Transpose:=False
    With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    Range("G11").Select
    Navn = Format(Now(), "dd-mm-yyyy hh_nn_ss")    ' der tillades ikke colon (:) i filnavnet, ret selv i formater

    If Dir("C:\Naal", vbDirectory) = "" Then
        Set fs = CreateObject("Scripting.FileSystemObject")
        fs.createfolder ("C:\Mappe")
    End If


    ActiveWorkbook.SaveAs Filename:="C:\Mappe\" & Navn & ".xls"

    If Application.MailSystem <> xlNoMailSystem Then    ' tjekker om der et mailsystem
        With ActiveWorkbook
            .SendMail _
                    Recipients:="", _
        Subject:="Titel"
        End With
        Application.MailLogoff
    Else
        MsgBox "Microsoft postsystem er ikke installeret.", vbInformation, "Postmeddelelse"
    End If

    ActiveWorkbook.Close


End Sub
Avatar billede excelent Ekspert
21. marts 2008 - 18:14 #1
Prøv denne kode, hvis ok, skal den lige indpasses i din

Sub tst()

Application.ScreenUpdating = False
Set wb1 = ActiveWorkbook
Set sh1 = ActiveSheet

Workbooks.Add
Set wb2 = ActiveWorkbook

For Each sh In wb2.Sheets
sh.Name = sh.Name & 1
Next

Application.ScreenUpdating = True
wb1.Activate
sh1.Select
sh1.Copy Before:=wb2.Sheets(1)
Application.InputBox("Marker område der skal kopieres (+ CTRL hvis flere områder)", "", , , , , , 8).Select

For Each c In Selection
c.Copy Sheets(2).Range(c.Address)
Next

Application.DisplayAlerts = False
Sheets(1).Delete
Application.DisplayAlerts = True

End Sub
Avatar billede terib Nybegynder
25. marts 2008 - 10:32 #2
Hejsa, og tak for forslaget.
Undskyld ventetiden...Jeg tror jeg har klaret en del af opgaven selv. Jeg har indsat et Range(A1:N31).select, og så får jeg nok så nydeligt kun det jeg vil have med.
DOG har jeg et sidste problem eller 2.

Når min makro laver en kopi af arket og indsætter den som vedhæftet fil i en email, så får jeg ikke en kopi med af billeder der er indsat og ejheller af mine indsatte kommentarer.
Desuden har jeg et problem med en VLOOKUP fra et underliggende ark. Der hvor VLOOKUP står i en celle uden at blive brugt står der FALSE - kan det ikke skjules?
Mvh
Avatar billede excelent Ekspert
26. marts 2008 - 19:09 #3
vis din vlookup
og
din forløbige kode
Avatar billede terib Nybegynder
27. marts 2008 - 15:34 #4
VLOOKUP ser således ud: =IF(A21>0;VLOOKUP(A21;Database!A$1:B$30000;2;FALSE))

Resten ser således ud:
Sub Fin()
    Dim Navn As String
    'Fin Macro

    '
   
    Range("A1:N31").Select
    Selection.Copy
    Workbooks.Add
    Cells.Select
    Cells.Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                          False, Transpose:=False
    Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                          False, Transpose:=False
    With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
   
    Navn = Format(Now(), "dd-mm-yyyy hh_nn_ss")    ' der tillades ikke colon (:) i filnavnet, ret selv i formater

    If Dir("C:\Tilbud", vbDirectory) = "" Then
        Set fs = CreateObject("Scripting.FileSystemObject")
        fs.createfolder ("C:\Tilbud")
    End If


    ActiveWorkbook.SaveAs Filename:="C:\Tilbud\" & Navn & ".xls"

    If Application.MailSystem <> xlNoMailSystem Then    ' tjekker om der et mailsystem
        With ActiveWorkbook
            .SendMail _
                    Recipients:="", _
        Subject:="Offers from "
        End With
        Application.MailLogoff
    Else
        MsgBox "Microsoft postsystem er ikke installeret.", vbInformation, "Postmeddelelse"
    End If

    ActiveWorkbook.Close


End Sub

Med venlig hilsen
Avatar billede terib Nybegynder
04. maj 2008 - 05:40 #5
tak for forsøget. Jeg kom ikke videre, så jeg lukker her.
mvh
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