Misverstand exporteren excel bestand

Hallo

Ik heb in vba een programma gemaakt dat gegevens uit een tabel (Userform) exporteert naar een Excel-bestand.

Het probleem is dat het programma de eerste keer normaal zal draaien. De 2e (zonder wijziging) zal er een bug 1004 zijn.

 

CODE:

Sub Export_excel()

Zon i, j        Als geheel getal

Zon i0, j0      Als geheel getal

Laten we het aantal punten evalueren

j0 = 0

i0 = 3

k = 0

Terwijl j0 < 1

    Als Array.Workbook1.Cells(i0, 1) <> "Geen" dan

        k = k + 1

        i0 = i0 + 1

    Anders

        d0 = 1

    Einde als

Gaan

Als k = 0 Dan

    MsgBox "De tafel is leeg"

    Sub afsluiten

Einde als

Aantal punten = k + 1

Bel AddNewWorkbook aan

'Wij maken het Excel-object

'Set xlApp = CreateObject("Excel.Application")

'Stel xlBook = xlApp.Worksbooks in

Bestand openen

'Werkmappen.Open bestandNaam:=lien_fichierxlsx

Werkmappen (Nom_Fichier en ".xlsx"). Activeer fout '1004'

'Werkbladen'. Selecteren

Voor i = 1 TB Nbpoints + 1

    Bereik("A" & i) = Array.Werkmap1.Cellen(i, 1)

    Bereik("B" & i) = Array.Werkmap1.Cellen(i, 2)

    Bereik("C" & i) = Array.Werkmap1.Cellen(i, 3)

    Bereik("D" & i) = Array.Werkmap1.Cellen(i, 4)

    Bereik("E" & i) = Array.Werkmap1.Cellen(i, 5)

    Bereik("F" & i) = Array.Werkmap1.Cellen(i, 6)

Volgend

ActiveWorkbook.Opslaan

ActiveWorkbook.Sluiten

MsgBox "Export succesvol!", vbMsgBoxSetForeground + vbExclamation, "TRAPRO DESIGN"

Einde Sub

 

Ik voeg de macro aan je toe als je wilt zien hoe ik het heb gedaan.

U moet een map aanmaken: D:\Import-Export\ (of wijzig de link in Userform_Initialize)

 

Hartelijk dank voor uw antwoorden,

JB


copie_de_prog.swp

Hier is een voorbeeld dat de eerste keer werkt en de tweede keer niet...


capture2.png

Hallo

 

Op welke regel treedt de fout op? Wanneer u debugt, wordt de regel normaal gesproken gemarkeerd.

Het staat op het spel:

Werkmappen (Nom_Fichier en ".xlsx"). Activeren

 

Als ik het in de opmerking zet, is het de regel:

Bereik("A" & i) = Array.Werkmap1.Cellen(i, 1)

 

Sterker nog, ik heb de indruk dat de prb wordt geleverd met de Excel-taal

 

In feite uw lijn:

 

'Werkmappen.Open bestandNaam:=lien_fichierxlsx

 

 

Staat in de reacties en aan het einde van je code sluit je je map!

 

ActiveWorkbook.Sluiten

 

Dus aan het begin van je macro moet je testen of deze al open is en indien nodig opnieuw openen !

Een codefragment waarmee u kunt testen of een werkmap is geopend en indien nodig kunt openen:

 

Dim wbName As String = "Test.xlsx"

Dim PathName As String = "c:\Test\" & wbName

Dim wbBook als Excel.Workbook

 

 

Voor elk wbBook in xlApp.Werkmappen

 

Als wbBook.Name = wbName Dan

wbBook.Activate()

Sub afsluiten 

Einde als

Volgend

Dim xl_wbBook als Excel.Workbook = xlApp.Workbooks.Open(PathName) 

In feite was ik een Excel-bestand aan het maken in AddNewWorkbook.

Ik heb een aantal tests door het te openen in de andere macro.

 

Sub excel_ouvert()

Dim wbName als tekenreeks

Dim PathName als tekenreeks

Dim wbBook Als Excel. Werkmap

 

'wbName = "Test.xlsx"

'PathName = "D:\Import-Export\" & wbName

 

Voor elk wbBook in xlApp.Werkmappen

    Als wbBook.Name = Nom_Fichier & ".xlsx" Dan

        wbBook.Activate

        Sub afsluiten

    Einde als

Volgend

Zon xl_wbBook Als excelleren. Werkmap

 

xl_wbBook = xlApp.Werkboeken.Openen(lien_fichierxlsx)

 

Einde Sub

 

Ik heb een foutmelding bij het aanmaken van het bestand:

xl_wbBook = xlApp.Werkboeken.Openen(lien_fichierxlsx)

 

Om het te begrijpen heb ik de macro in de eerste opmerking gezet.


capture4.png

Er is de optie 

 

UserForm1.Workbook1.Export

 

Kan het in een map worden opgeslagen?

Op dat moment is het codefragment voor mij niet functioneel!

 

In plaats daarvan moet het worden gemaakt:

Dim newWorkbook As Excel.Workbook = Me.Application.Workbooks.Add()

 

Sla het dan op onder de gekozen naam:

 

Toepassing.DisplayAlerts = False ActiveWorkbook.SaveAs Bestandsnaam:=lien_fichierxlsx, FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Application.DisplayAlerts = Waar

 

Ik heb je laatste bericht niet begrepen.

Ik zet

 

Dim nieuwWerkboek Als Excel. Werkmap

newWorkbook = Mij.Toepassing.Werkboeken.Add()

 

en hij zegt me: "Misbruik van mij"

Het programma zit in een module.

 

Moet ik het erin doen?

UserForm1.Workbook1.Application.Workbooks.Add()

 

 

De functie Exporteren in Werkmap 1 exporteert alle gegevens in de werkmap naar een Excel-bestand.

Het is echter alleen-lezen en in een speciaal formaat: .XML

 

Naam van het aangemaakte bestand:

OWCSheet91101.XML

 

Ik wil weten of het mogelijk is om het per macro op te slaan in .xlsx naar de gewenste naam.

Het zou mijn PRB repareren

Sorry

Werkmappen.Toevoegen

zou voldoende moeten zijn voor het opslaan als in plaats van 

Dim nieuwWerkboek Als Excel. Werkmap

newWorkbook = Mij.Toepassing.Werkboeken.Add()

Hier is mijn definitieve code:

Bel AddNewWorkbook aan

'Test of Werkmap is geopend

Voor elk xlBook in xlApp.Workbooks

    Als xlBook.Name = Nom_Fichier & ".xlsx" dan

        xlBook.Activeren

        Sub afsluiten

    Einde als

Volgend

'We voegen een map toe

Stel xlBook = xlApp.Werkboeken.Toevoegen in

'We geven de binder een naam

xlBook.SaveAs (lien_fichierxlsx)

 

'hernoemt de

Vellen("Blad1"). Naam = "Fles Tafel"

Vellen("Blad2"). Name = "Gegevens"

 

'Exporteer het bestand

Voor i = 1 TB Nbpoints + 1

    Bereik("A" & i) = Array.Werkmap1.Cellen(i, 1)

    Bereik("B" & i) = Array.Werkmap1.Cellen(i, 2)

    Bereik("C" & i) = Array.Werkmap1.Cellen(i, 3)

    Bereik("D" & i) = Array.Werkmap1.Cellen(i, 4)

    Bereik("E" & i) = Array.Werkmap1.Cellen(i, 5)

    'Bereik("F" & i) = Array.Werkboek1.Cellen(i; 6)

Volgend

 

ActiveWorkbook.Opslaan

ActiveWorkbook.Sluiten

 

Dank je wel Lucas voor je tijd!!

 

JB

1 like