Print side | Luk vindue

Ny fil, med data fra ark og specifik navn

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=3615
Udskrevet den: 02.Maj.2024 kl. 13:31


Emne: Ny fil, med data fra ark og specifik navn
Besked fra: Jesper C
Emne: Ny fil, med data fra ark og specifik navn
Posteringsdato: 09.Sep.2018 kl. 22:04
Hej folkens.

Jeg er helt ny til VBA og makroer, men jeg vil rigtig gerne lave et stykke kode der:
1: kopiere "skabelon.xlsx"
2: kopiere data fra ark "ny kunde" i "portal.xlsm" enten igennem celler eller input bokse til skabelonen i den nye fil.
3: gemmer filen i den sammen mappe som skabelon ligger i, under et navn defineret i et felt i ny kunde.

Jeg har førhen gjort dette manuelt, men da jeg for nylig har fået øjne op for VBA, tænker jeg det må kunne automatiseres. =)

Jeg har søgt på nettet, uden at finde et svar som jeg selv kan tyde.
Eksempler på sider jeg har fundet:
http://codevba.com/excel/new_workbook.htm#.W5VyDfYyUuU" rel="nofollow - http://codevba.com/excel/new_workbook.htm#.W5VyDfYyUuU
http://www.nhaustralia.com.au/blog/saving-file-unique-name-vba-excel/" rel="nofollow - http://www.nhaustralia.com.au/blog/saving-file-unique-name-vba-excel/
https://stackoverflow.com/questions/34866927/how-to-take-filename-as-input-as-create-a-file-in-vba" rel="nofollow - https://stackoverflow.com/questions/34866927/how-to-take-filename-as-input-as-create-a-file-in-vba

Men da jeg ikke har kunne tyde dem nok til at kunne omformulere dette (jeg har fået noget af det til at virke) og jeg er slet ikke skarp nok, endnu, til at lave noget selv - jeg lære dog hurtigt og jeg elsker at rode med ting jeg ikke forstår og så forstå det.



Svar:
Besked fra: maxzpad
Posteringsdato: 11.Sep.2018 kl. 16:01
Skal makroen køre fra filen "portal.xlsm"? Det antager jeg, da "skabelon.xlsx" ikke kan indeholde makroer.

Du kan kopiere "skabelon.xlsx" således:

FileCopy "C:\mappenavn\skabelon.xlsx", "C:\mappenavn\skabelon_kopi.xlsx"

Herefter skal du åbne kopien, før du kan indsætte data i den:

Workbooks.Open "C:\mappenavn\skabelon_kopi.xlsx"

Overføre data - hvis det er celle til celle (f.eks. fra B8 til A1):

Workbooks("skabelon_kopi.xlsx").Sheets("ArkNavn").Range("A1") = Workbooks("portal.xlsm").Sheets("ny kunde").Range("B8")

Gem filen under nyt navn:

With Workbooks("skabelon_kopi.xlsx")

    .SaveAs FileName:=.Path & "\nyt_filnavn.xlsx", FileFormat:=xlWorkbookDefault

End With



Besked fra: maxzpad
Posteringsdato: 11.Sep.2018 kl. 16:09
Hov, glemte lige, du ville have nyt filnavn fra celle i "ny kunde" - f.eks. celle C1

With Workbooks("skabelon_kopi.xlsx")

    .SaveAs FileName:=.Path & "\" & Workbooks("portal.xlsm").Sheets("ny kunde").Range("C1"),
     FileFormat:=xlWorkbookDefault

End With


Besked fra: Jesper C
Posteringsdato: 12.Sep.2018 kl. 11:54
Det ser rigtig fornuftigt og forståeligt ud maxzpad!
Jeg har dog nogle afklarende spørgsmål:

Hvorledes skal scriptet startes? Noget privat. () what ever i Portal.xlsm("skabelonArk")

Kan jeg gentage step "kopier data" så mange gange jeg vil, eller skal det opdeles på nogen måde?

Nu skriver du "skabelon_kopi" i overfør data delen, ændre vi først navnet til sidst, således at det gemmes igen og ændre navn til indholdet i en celle?

Yep - så ny er jeg, men jeg giver ikke op - dette er lige det jeg ledte efter!
Og jeg sidder allerede og leger med det, men jeg kan lige så godt være på forkant, for jeg smadre med garanti funktioner cirka 100 gange i løbet af de næste par dage!


Besked fra: Bjarnehansen
Posteringsdato: 12.Sep.2018 kl. 12:06
Hej Max
Tillykke med den runde dagBeer


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK


Besked fra: maxzpad
Posteringsdato: 12.Sep.2018 kl. 12:42
Hej Jesper

Jeg vil nok generelt anbefale, at du Google'r efter "Excel VBA tutorial", så du kan få det grundlæggende på plads. Her vil du også lære, at scriptet/koden kan indsættes i et Module i Visual Basic Editor (VBE).

Et eksempel:

Sub MinMakro()

   ' Dimensionér en variabel til det nye filnavn
   Dim strNySkabelon As String

   ' Giv variablen værdien fra celle C1 i arket "ny kunde" i filen "portal.xlsm"
   ' (cellen skal indeholde det nye filnavn inkl. filtypen .xlsx)
    strNySkabelon = Workbooks("portal.xlsm").Sheets("ny kunde").Range("C1")

   ' Kopier skabelon.xlsx direkte til fil med nyt navn
   FileCopy "C:\mappenavn\skabelon.xlsx", "C:\mappenavn\" & strNySkabelon

   Workbooks.Open "C:\mappenavn\" & strNySkabelon

   ' Gentag for det antal celler, du ønsker at overføre/kopiere imellem de to filer
   Workbooks(strNySkabelon).Sheets("ArkNavn").Range("A1") =
   Workbooks("portal.xlsm").Sheets("ny kunde").Range("B8")

   ' Gem den nye fil
   Workbooks(strNySkabelon).Save

End Sub


Det kan skrives/kodes "smukkere", så ovenstående er blot et hurtigt eksempel.


Mvh Max


Besked fra: Jesper C
Posteringsdato: 12.Sep.2018 kl. 13:40
Hej Max.

Jeg var kommet frem til dette - jeg har læst mange forskellige start tutorials, men når man ikke skal bruge mange af de ting der kommer frem er jeg desværre ikke så god til at "forstår" de tutorials - jeg lære bedst ved at sidde med det der driller mig og få dette til at virke.

Tak for det. Jeg kigger på det og ser om jeg kan få det til at virke!


Besked fra: EXCELGAARD
Posteringsdato: 12.Sep.2018 kl. 14:47
Ja, det var tider, dengang man kun var en ung 'årsunge' på sølle 50 år...

...STORT tillykke med dagen, Max  Big smile Clap Thumbs Up


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: InfoTAL
Posteringsdato: 12.Sep.2018 kl. 15:07
Til Max.
Herfra sendes også et stort tillykke med fødselsdagen.


-------------
InfoTAL
v/H.C.
Bruger Excel 2021 DK, 64 bit.
Svar gives/modtages..
Accepteret løsning: MARKER tråden med TAK/Accepteret svar
s.e.&o.


Besked fra: maxzpad
Posteringsdato: 13.Sep.2018 kl. 08:17
Tak til alle jer der har ønsket mig tillykke i går Smile


Besked fra: Jesper C
Posteringsdato: 13.Sep.2018 kl. 10:11
Hej Max.

Tusind tak for hjælpen, jeg har fået det til at virke.
For at kopiere flere celler manglede der lige et .Value efter den range man ville kopiere.
(Såfremt det ikke var en "A1:B2" område der blev kopieret.)

Jeg forstår dog ikke den pop-up som kommer, der står at:
"Beskyttelsesadvarsel: Dokumentet indeholder makroer, ActiveX-objekter, oplysninger om XML-udvidelsespakken eller webkomponenter. Disse kan indeholde personlige oplysninger, der ikke kan fjernes af dokumentinspektionen"
Kan denne undgås? Eller er det fordi mit dokument som jeg kopiere fra indeholder makroerne, selvom skabelon og ny fil ikke gør?
Google gav mig ikke et svar på dette!
(Den kopiere kun data og ikke makroer ol.)


Jeg har markeret dit svar som løsningen!


Besked fra: maxzpad
Posteringsdato: 13.Sep.2018 kl. 10:26
Jeg kan se, at Allan (Forum Admin) har svaret på dette tilbage i 2015:

"Gå til Filer
Indstillinger
Center for sikkerhed og rettighedsadministration
Indstillinger for Center for sikkerhed og rettighedsadministration
Indstillinger for beskyttelse
Fjern markeringen i Fjern personlige oplysninger fra filegenskaberne når filen gemmes."


Besked fra: Jesper C
Posteringsdato: 13.Sep.2018 kl. 10:27
Tak for det Max!

Tråd hermed afsluttet og lukket.



Print side | Luk vindue