Automatisch kopieren en opslaan.

Status
Niet open voor verdere reacties.

IJf

Gebruiker
Lid geworden
5 nov 2006
Berichten
40
Voor mijn werk heb ik een query gemaakt die maandelijks gegevens uit een database ophaalt en middels een tekstbestandkoppeling in een Excelsheet presenteert. Binnen de Excel sheet heb ik een Macro gemaakt, die de gegevens -zonder de tekstbestandkoppeling- naar een leeg bestand kopieert en opslaat. Dit om te voorkomen dat de gebruiker het originele bestand opslaat en bij her-opening op later moment gegevens vernieuwd. De gebruiker moet er dus om denken de macro af te trappen.

Zelf zou ik het echter mooier vinden om de macro geheel automatisch af te starten in 'ThisWorkbook'.
Zodat de gebruiker geen enkele handeling hoeft te verrichten.

Wie kan mij helpen dit om te bouwen?


Code:
Sub CopyPastClosed()
'
' CopyPastClosed Macro
'
'
    Workbooks.Open Filename:="H:\Alg_Rename.xlsx"
    Windows("Besluiten.xlsm").Activate
    Range("A1:Z200").Select
    Selection.Copy
    Windows("Alg_Rename.xlsx").Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows("Besluiten.xlsm").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Alg_Rename.xlsx").Activate
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    'Columns("A:A").EntireColumn.AutoFit
    'Cells.Select
    Selection.AutoFilter
    Cells.EntireColumn.AutoFit
    Selection.Replace What:="   ", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Cells.EntireColumn.AutoFit
    Range("D2").Select
    ActiveWindow.FreezePanes = True
    Range("A2").Select
        Dim Naam As String
        Dim Pad As String
        Dim Bestandsnaam As String
        Naam = Sheets(1).Range("V1").Value & ".xlsx"
        Pad = "H:\Excel\"
        Bestandsnaam = Pad & Naam
        ActiveWorkbook.SaveAs Pad & Naam
    Windows("Besluiten.xlsm").Activate
    Range("A2").Select
    ActiveWorkbook.Close savechanges:=False
End Sub
 
Dat gaat een stuk eenvoudiger als je het Excel en het tekstbestand hier plaatst.

Vermijd 'Activate' en 'Select' in VBA.
 
Wegens ziekte kon ik niet eerder reageren.
Het tekstfile plaatsen lijkt me niet zo zinvol, de sheet moet ik eerst bewerken ivm veel privacy gevoelige gegevens.
probeer ik vandaag te doen...
 
Zie de bijlage
 

Bijlagen

  • __Besluiten.xlsb
    23,9 KB · Weergaven: 65
SNB: Nog bedankt voor je reactie. Het is helaas niet het antwoord op de vraag. Het gaat er juist om dat de gegevens naar een nieuw document wordt gekopieerd, en het brondocument wordt gesloten.
Mocht je nog een tip hebben verneem ik dat graag.
 
Ik ga ervan uit dat als je met VBA werkt je in staat bent de meest basale dingen zelf te kunnen.
Je hebt 99,8 % aangereikt gekregen.
Als je een kant-en-klare oplossing wil kan dat natuurlijk altijd tegen betaling.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan