Excel: macro voor importeren in excel naar nieuw tablad

Pagina: 1
Acties:

Vraag


  • Simplythebest85
  • Registratie: November 2013
  • Laatst online: 26-01-2021
Hallo iedereen!

Ik ben een beginnende VBA programmeur en tracht nu enkele acties om te zetten in geautomatiseerde code.
Ik tracht hieronder het probleem zo goed mogelijk te omschrijven.

Wat ik wil doen is een soort van template maken waardoor bepaalde acties worden gemaakt op bestanden.

Hoofdsheet:
Dit is mijn worksheet die gebruikt zal kunnen worden door verschillende mensen. Aangezien deze niet zo computer behendig zijn wil ik zoveel mogelijk automatiseren.
Op de eerste sheet van de excel boek wil ik dus allereerst een knop waar een macro achter steekt.

Wanneer op deze knop gedrukt wordt, moet er een pop up komen waardoor ze kunnen bladeren naar een toe te voegen bestand. Dit bestand is een excel worksheet van 2013. In het toe te voegen bestand bevindt zich allerlij data in tabelvorm. Het enige wat ik echter voorlopig wil is dat bij het drukken op deze knop, ze het toe te voegen bestand selecteren. En dat de gehele sheet geimporteerd wordt in de hoofd excel boek maar op een automatisch gecreëerde sheet nr 2.

Daarna wens ik nog een macro toe te voegen die allerlij handelingen uitvoert met de toegevoegde sheet, dit kan ik echter al behoorlijk zelf. Het probleem is de macro te schrijven die het bovenstaande doet.
Tot mijn grote verbazing zocht ik het internet af naar een reeds bestaande oplossing hiervoor, maar zonder succes. Is dit een actie die wel mogelijk is?

Ik hoop dat iemand me kan helpen!

Alvast bedankt!

Groetjes,

Simplythebest85

Alle reacties


  • Atanamir
  • Registratie: December 2014
  • Laatst online: 09-11 07:44
Dit is sowieso goed te doen in VBA. Wel vreemd dat je niets hebt kunnen vinden tot nu toe. Welke zoektermen gebruik je?

Lijkt me dat "excel vba select workbook import" wel wat moet opleveren. Onderstaande link bijvoorbeeld:

http://stackoverflow.com/...-existing-workbook-on-nex

  • Simplythebest85
  • Registratie: November 2013
  • Laatst online: 26-01-2021
Dank Atanamir!

Ik ben tot onderstaande gekomen:

Sub Macro1()
Dim FilterIndex As Integer
Dim Title As String
Dim FileName As Variant
FileName = Application.GetOpenFilename(Finfo, _
FilterIndex, Title)
Workbooks.Open (FileName)
End Sub

Echter dan opent hij het geselecteerde workbook. Hoe krijg ik het geselecteerde workbook in een nieuw sheet van het huidige excelbestand vanwaar ik de macro draai?

Waarschijnlijk is de oplossing doodeenvoudig maar uren surfen hebben mij alleen teleurstellingen opgeleverd.

  • Atanamir
  • Registratie: December 2014
  • Laatst online: 09-11 07:44
Goed bezig dat je in ieder geval begonnen bent met het maken van de code!

Nadat je het nieuwe werkboek hebt geopend moet je de data die je wilt hebben kopieren en vervolgens op een locatie in je huidige werkboek plakken.

Om voor jezelf de verschillende werkboeken makkelijk uit elkaar te houden, raad ik je aan nog even 2 variabelen te definieren. Aan het begin van je code "wb1 = activeworkbook" en na het openen van het nieuwe bestand "wb2 = activeworkbook".

Daarna zal je een range moeten kopieren uit wb2 en deze in wb1 moeten plakken.
Iets zoals dit:

'maken nieuwe sheet en definieren naam
wb1.Sheets.Add.Name = "Data" & "_" & Format(Date, "dd-mm-yy") & "_" & Format(Time, "hhmm")
set ws1 = wb1.sheets("Data" & "_" & Format(Date, "dd-mm-yy") & "_" & Format(Time, "hhmm"))

'kopieren brondata
wb2.sheet1.Range(wb2.sheet1.Cells(1,1),wb2.sheet1.Cells(100,5)).Copy

'plakken data
wb1.ws1.Cells(1,1).PasteSpecial xlPasteValues

En daarna werkboek 2 weer afsluiten.

wb2.Close

Ik denk dat je hier wel weer even mee aan de slag kunt. Succes!

  • Simplythebest85
  • Registratie: November 2013
  • Laatst online: 26-01-2021
Thanks Atanamir! Fijn dat je me zo goed op weg hebt geholpen. Na veel trial and error kan ik zeggen: Het werkt!

Onderstaand de code tot zover:

Sub Macro1()
Set wb1 = ActiveWorkbook
Dim FilterIndex As Integer
Dim Title As String
Dim FileName As Variant
FileName = Application.GetOpenFilename(Finfo, _
FilterIndex, Title)
Workbooks.Open (FileName)

'maken nieuwe sheet en definieren naam
wb1.Sheets.Add.Name = "Here"

Set wb2 = ActiveWorkbook
'kopieren brondata
wb2.Worksheets("acties_20032017").Range("A:ZZ").Copy
wb1.Worksheets("Here").Activate
wb1.Worksheets("Here").Range("A1").PasteSpecial Paste:=xlPasteAll
'werkboek 2 sluiten
Application.CutCopyMode = False
wb2.Close

End Sub


Nu kopieert hij kolom A t/m ZZ in sheet "acties_20032017". Echter zullen de sheets telkens een andere naam hebben. De werkboeken zullen echter telkens 1 sheet hebben. Hoe krijg ik dit voor elkaar? Het is me niet gelukt om het op google te vinden.

  • Atanamir
  • Registratie: December 2014
  • Laatst online: 09-11 07:44
Wellicht dat je "Activesheet" kunt gebruiken? Als dat werkboek altijd wordt gesloten op het goede werkblad moet dat goed gaan lijkt me. Of als het altijd het eerste werkblad is dan kun je ook "wb2.sheet1.Range...." gebruiken ipv "wb2.Worksheets("Acties_2003").Range....."

  • Simplythebest85
  • Registratie: November 2013
  • Laatst online: 26-01-2021
Activesheet werkt perfect! Sheet1 werkt helaas niet. Dat had ik al eerder geprobeerd.

Heel erg bedankt voor de hulp!

  • Simplythebest85
  • Registratie: November 2013
  • Laatst online: 26-01-2021
Hoi Atanamir,

Je hebt me heel erg geholpen met het importen van een bestand in de huidige werkboek. Nu wil ik het volgende doen: 2 xls of csv bestanden importeren en elk bestand op een aparte sheet zetten. Ik zit eraan te denken om 2 knoppen te maken waarin ik elk bestand selecteer. Een derde knop voor het importeren.

Google is weer elk summier, wat waarschijnlijk komt omdat ik nog niet de juiste zoektermen invoer. In welke richting moet ik denken?

Anderen zijn uiteraard ook welkom om te reageren.

Alvast bedankt!

  • Atanamir
  • Registratie: December 2014
  • Laatst online: 09-11 07:44
Hmm, paar ideeen:

1. Misschien kan het heel eenvoudig met je huidige macro. Als je de naam van het nieuwe tabblad wat specifieker maakt (bijv. dmv toevoeging & Format(Time, "hhmm")) dan kun je gewoon 2x achter elkaar op de bestaande knop drukken.

2. Drie knoppen kan ook, maar dan zul je ofwel global variables moeten definieren die bewaard blijft na afloop van de individuele macro's, of de bestandsnamen die de eerste 2 macro's kiezen even naar een cel moeten wegschrijven zodat de 3e macro ze daaruit kan oppikken.

3. Je kunt natuurlijk ook je huidige macro wat complexer maken door een 2e keuzescherm te laten openen en nog een wb3 te definieren. Of als je helemaal fancy wilt eerst nog een keuze geven of iemand 1 of 2 bestanden wil importen (http://www.ozgrid.com/forum/showthread.php?t=32793) en daarna de code daaraan aanpassen dmv een IF ELSE stukje...

  • Boeryepes
  • Registratie: Januari 2016
  • Niet online
en waarom niet de sheet(s) uit de geselecteerde file copieren ipv de cellen uit de sheet? Wel even naam vd sheet unique maken.

http://stackoverflow.com/...nother-workbook-using-vba

of

http://www.ozgrid.com/forum/showthread.php?t=20734

Dit zijn ook gelijk 2 van de betere sites voor VBA code samples.

The biggest communication problem is we do not listen to understand. We listen to reply.

Pagina: 1