Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketNy fil, med data fra ark og specifik navn

 Besvar Besvar
Forfatter
Jesper C Se dropdown
Forum Begynder
Forum Begynder


Medlem: 20.Feb.2018
Land: DK
Status: Offline
Point: 9
Direkte link til dette indlæg Emne: Ny fil, med data fra ark og specifik navn
    Sendt: 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:

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.
Til top



Til top
maxzpad Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 04.Aug.2016
Land: Danmark
Status: Offline
Point: 567
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 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
Til top
maxzpad Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 04.Aug.2016
Land: Danmark
Status: Offline
Point: 567
Direkte link til dette indlæg Sendt: 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

Til top
maxzpad Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 04.Aug.2016
Land: Danmark
Status: Offline
Point: 567
Direkte link til dette indlæg Sendt: 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
Til top
Jesper C Se dropdown
Forum Begynder
Forum Begynder


Medlem: 20.Feb.2018
Land: DK
Status: Offline
Point: 9
Direkte link til dette indlæg Sendt: 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!
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5481
Direkte link til dette indlæg Sendt: 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
Til top
maxzpad Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 04.Aug.2016
Land: Danmark
Status: Offline
Point: 567
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 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
Til top
Jesper C Se dropdown
Forum Begynder
Forum Begynder


Medlem: 20.Feb.2018
Land: DK
Status: Offline
Point: 9
Direkte link til dette indlæg Sendt: 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!
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 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.
Til top
InfoTAL Se dropdown
Sølv bruger
Sølv bruger
Avatar

Medlem: 05.Okt.2017
Land: DK, 6900
Status: Offline
Point: 376
Direkte link til dette indlæg Sendt: 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.
Til top
maxzpad Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 04.Aug.2016
Land: Danmark
Status: Offline
Point: 567
Direkte link til dette indlæg Sendt: 13.Sep.2018 kl. 08:17
Tak til alle jer der har ønsket mig tillykke i går Smile
Til top
Jesper C Se dropdown
Forum Begynder
Forum Begynder


Medlem: 20.Feb.2018
Land: DK
Status: Offline
Point: 9
Direkte link til dette indlæg Sendt: 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!
Til top
maxzpad Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 04.Aug.2016
Land: Danmark
Status: Offline
Point: 567
Direkte link til dette indlæg Sendt: 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."
Til top
Jesper C Se dropdown
Forum Begynder
Forum Begynder


Medlem: 20.Feb.2018
Land: DK
Status: Offline
Point: 9
Direkte link til dette indlæg Sendt: 13.Sep.2018 kl. 10:27
Tak for det Max!

Tråd hermed afsluttet og lukket.
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk