Missverständnis der Export-Excel-Datei

Hallo

Ich habe ein Programm in vba erstellt, das Daten aus einer Tabelle (Userform) in eine Excel-Datei exportiert.

Das Problem ist, dass das Programm beim ersten Mal normal läuft. Am 2. (ohne Modifikation) wird es einen Bug 1004 geben.

 

CODE:

Unternummer Export_excel()

Sun i, j        Als Ganzzahl

Sun i0, j0      Als Ganzzahl

Lassen Sie uns die Anzahl der Punkte auswerten

j0 = 0

i0 = 3

k = 0

Während j0 < 1

    Wenn Array.Workbook1.Cells(i0, 1) <> "Keine", dann

        k = k + 1

        i0 = i0 + 1

    Oder

        d0 = 1

    Ende, wenn

Wend

Wenn k = 0 Dann

    MsgBox "Die Tabelle ist leer"

    Sub beenden

Ende, wenn

Nb-Punkte = k + 1

Aufrufen von AddNewWorkbook

"Wir erstellen das Excel-Objekt

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

'Setze xlBook = xlApp.Worksbooks

Offene Linie

'Arbeitsmappen.Dateiname:= öffnen lien_fichierxlsx

Arbeitsmappen(Nom_Fichier & ".xlsx"). Aktivieren Sie den Fehler '1004'

'Arbeitsblätter'. Auswählen

Für i = 1 TB Nbpunkte + 1

    Bereich("A" & i) = Array.Arbeitsmappe1.Zellen(i, 1)

    Bereich("B" & i) = Array.Arbeitsmappe1.Zellen(i, 2)

    Bereich("C" & i) = Array.Arbeitsmappe1.Zellen(i, 3)

    Bereich("D" & i) = Array.Arbeitsmappe1.Zellen(i, 4)

    Bereich("E" & i) = Array.Arbeitsmappe1.Zellen(i, 5)

    Bereich("F" & i) = Array.Arbeitsmappe1.Zellen(i, 6)

Nächster

ActiveWorkbook.Speichern

ActiveWorkbook.Close

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

Ende Sub

 

Ich hänge das Makro an Sie an, wenn Sie sehen möchten, wie ich es gemacht habe.

Sie müssen einen Ordner erstellen: D:\Import-Export\ (oder ändern Sie den Link in Userform_Initialize)

 

Vielen Dank für Ihre Antworten,

JB


copie_de_prog.swp

Hier ist ein Beispiel, das beim ersten Mal funktioniert und nicht beim zweiten...


capture2.png

Hallo

 

In welcher Zeile tritt der Fehler auf? Beim Debuggen wird die Zeile normalerweise hervorgehoben.

Es steht auf dem Spiel:

Arbeitsmappen(Nom_Fichier & ".xlsx"). Aktivieren

 

Wenn ich es in den Kommentar schreibe, ist es die Zeile:

Bereich("A" & i) = Array.Arbeitsmappe1.Zellen(i, 1)

 

Tatsächlich habe ich den Eindruck, dass das prb mit der Excel-Sprache geliefert wird

 

Tatsächlich ist Ihre Zeile:

 

'Arbeitsmappen.Dateiname:= öffnen lien_fichierxlsx

 

 

Steht in den Kommentaren und am Ende Ihres Codes schließen Sie Ihren Binder!

 

ActiveWorkbook.Close

 

Zu Beginn Ihres Makros müssen Sie also testen, ob es bereits geöffnet ist, und es bei Bedarf erneut öffnen !

Ein Codeausschnitt, mit dem Sie testen können, ob eine Arbeitsmappe geöffnet ist, und sie bei Bedarf öffnen können:

 

Dim wbName As String = "Test.xlsx"

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

Dim wbAls Excel.Arbeitsmappe buchen  

 

 

Für jedes wbBook in xlApp.Workbooks

 

Wenn wbBook.Name = wbName Dann

wbBook.Activate()

Sub beenden 

Ende , wenn

Nächster

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

Tatsächlich habe ich eine Excel-Datei in AddNewWorkbook erstellt.

Ich habe einige Tests durchgeführt, indem ich es im anderen Makro geöffnet habe.

 

Eingewechselt excel_ouvert()

Dim wbName als Zeichenfolge

Dim PathName As String

Dim wbBook As excel. Arbeitsbuch

 

'wbName = "Test.xlsx"

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

 

Für jedes wbBook in xlApp.Workbooks

    Wenn wbBook.Name = Nom_Fichier & ".xlsx" dann

        wbBook.Aktivieren

        Sub beenden

    Ende, wenn

Nächster

Sun xl_wbBook As excel. Arbeitsbuch

 

xl_wbBook = xlApp.Workbooks.Open(lien_fichierxlsx)

 

Ende Sub

 

Beim Erstellen der Datei ist ein Fehler aufgetreten:

xl_wbBook = xlApp.Workbooks.Open(lien_fichierxlsx)

 

Um es zu verstehen, habe ich das Makro in den ersten Kommentar eingefügt.


capture4.png

Es gibt die Möglichkeit ,

 

UserForm1.Arbeitsmappe1.Exportieren

 

Kann es in einem Ordner gespeichert werden?

Zu dem Zeitpunkt ist der Code-Schnipsel für mich nicht funktionsfähig!

 

Stattdessen sollte es erstellt werden:

Dimmen newWorkbook als Excel.Workbook = Me.Application.Workbooks.Add()

 

Speichern Sie es dann unter dem gewählten Namen:

 

Anwendung.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=lien_fichierxlsx, FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Anwendung.DisplayAlerts = Wahr

 

Ich habe deine letzte Nachricht nicht verstanden.

Ich setze

 

Dimmen newWorkbook Als Excel. Arbeitsbuch

newWorkbook = Ich.Anwendung.Arbeitsmappen.Add()

 

und er sagt mir: "Missbrauch von mir"

Das Programm befindet sich in einem Modul.

 

Soll ich es einlegen?

UserForm1.Workbook1.Application.Workbooks.Add()

 

 

Die Exportfunktion in Arbeitsmappe 1 exportiert alle Daten in der Arbeitsmappe in eine Excel-Datei.

Es ist jedoch schreibgeschützt und in einem speziellen Format: .XML

 

Name der erstellten Datei:

OWCSheet91101.XML

 

Ich möchte wissen, ob es per Makro möglich ist, es in .xlsx auf den gewünschten Namen zu speichern.

Es würde mein PRB reparieren

Tut mir Leid

Arbeitsmappen.Hinzufügen

sollte vor dem Speichern unter anstelle von 

Dimmen newWorkbook Als Excel. Arbeitsbuch

newWorkbook = Ich.Anwendung.Arbeitsmappen.Add()

Hier ist mein endgültiger Code:

Aufrufen von AddNewWorkbook

'Testen, ob die Arbeitsmappe geöffnet ist

Für jedes xlBook in xlApp.Workbooks

    Wenn xlBook.Name = Nom_Fichier & ".xlsx" dann

        xlBook.Aktivieren

        Sub beenden

    Ende, wenn

Nächster

"Wir fügen einen Ordner hinzu

Legen Sie xlBook = xlApp.Workbooks.Add fest

"Wir geben dem Binder einen Namen

xlBook.SaveAs (lien_fichierxlsx)

 

"benennt die

Blätter("Sheet1"). Name = "Flaschentisch"

Tabellen("Blatt2"). Name = "Daten"

 

'Exportieren Sie die Datei

Für i = 1 TB Nbpunkte + 1

    Bereich("A" & i) = Array.Arbeitsmappe1.Zellen(i, 1)

    Bereich("B" & i) = Array.Arbeitsmappe1.Zellen(i, 2)

    Bereich("C" & i) = Array.Arbeitsmappe1.Zellen(i, 3)

    Bereich("D" & i) = Array.Arbeitsmappe1.Zellen(i, 4)

    Bereich("E" & i) = Array.Arbeitsmappe1.Zellen(i, 5)

    'Bereich("F" & i) = Array.Arbeitsmappe1.Zellen(i, 6)

Nächster

 

ActiveWorkbook.Speichern

ActiveWorkbook.Close

 

Danke Lucas für deine Zeit!!

 

JB

1 „Gefällt mir“