VBA Dateiauswahl - Bei Abbruch Laufzeitfehler 5, jemand Ideen?

Hallo zusammen,

was müsste ich hinzufügen, um den Laufzeitfehler 5 zu umgehen? Wenn ich den VBA-Code ausführe, öffnet sich das Fenster für den Import von DAT-Dateien. Drücke ich auf Abbrechen, erscheint der Laufzeitfehler 5. Vermerkt wird der Code "Set F = fs.GetFolder(strPfad)". Wo und welchen Code müsste ich hinzufügen, um den Fehler zu beheben? Vielen Dank im Voraus. :)

Sub Schaltfläche1_Klicken()
'
'
'*** Öffnen von DAT-Dateien
Dim strText As String, strFilter As String

strText = "Bitte eine Auswertung Auswählen"
strFilter = "DAT-Dateien (*.DAT), *.DAT"""
strAuswahl = Application.GetOpenFilename(strFilter, 1, strText)
strPfad = Pfad_ermitteln(strAuswahl)
'
Set fs = CreateObject("Scripting.FileSystemObject")
Set F = fs.GetFolder(strPfad)
Set fc = F.Files

If ActiveSheet Is Nothing Then Workbooks.Add
For Each File In fc
    Zeile = Cells(65000, 1).End(xlUp).Row + 2
    strEinfügen = Cells(Zeile, 1).Address
    strAuswahl = File.Path

    'Einfügen
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & strAuswahl _
        , Destination:=Range(strEinfügen))
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileDecimalSeparator = "."
        .TextFileThousandsSeparator = ","
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
  End With
  Range(strEinfügen).QueryTable.Delete
Next
End Sub
_______________________________

 Function Pfad_ermitteln(ByVal strAuswahl As String) As String
 
 For i = Len(strAuswahl) To 1 Step -1
    If Mid(strAuswahl, i, 1) = "\" Then
        Pfad_ermitteln = Left(strAuswahl, i - 1)
        Exit Function
    End If
Next
End Function
Computer, Microsoft Excel, Microsoft Office, Makro, VBA, Code
Excel VBA - Nach kopieren anderen Zelleninhalt "zurückwerfen"?

Hallo,

ich habe eine Formularseite gebastelt, bei der eingegebene Daten in eine Liste eingefügt werden. Nun möchte ich, dass das Makro, welches die Daten in das andere Blatt in eine neue Zeile kopiert hat, auf der Formularseite die Zeilennummer in ein Feld einträgt.

Die Eingabeseite heißt "Eingaben" und das Blatt mit der Liste heißt "Liste"

Beispiel:

Ich gebe Daten ein, klicke den Button an auf dem das Makro liegt, und die Daten werden nach "Liste" in Zeile 10 kopiert (während Zeilen 5-9 schon Daten enthalten aus vorherigen Übertragungen).

In dem selben Makro soll nun am Ende die Nummer, die in A10 steht (In Zeile A stehen von mir eigens vergebene Nummern), auf der Eingabeseite in das Feld B10 kopiert werden.

Anders formuliert:

Spalte A (Lliste) enthält Reklamationsnummern, fortlaufend. Beginnend mit RK20220001.

Wenn ich jetzt in der "Eingaben"-Seite meine Daten erfasse und das Makro nutze, werden die eingegebenen Daten in die "Liste" kopiert. Es wird automatisch immer die letzte Zeile gefüllt, ab Spalte B.

Nun möchte ich, dass die Reklamationsnr., die neben den zuletzt eingefügten Daten steht, in das "Eingaben"-Blatt in das Feld B10 kopiert wird.

Denn die Eingabefelder sind bereits so formatiert, dass man ein Etikett drucken kann, das dann an die Ware kann. Damit man nicht immer manuell die Nummer raus suchen muss, soll sie halt automatisch dort rein.

Computer, Office, Visual Basic, Microsoft Excel, Technik, programmieren, VBA, Technologie
Excel VBA - Darstellung waagerecht-vertikal beim kopieren ändern?

Hallo,

ich habe in einer fertigen Tabelle etwas geändert, um die Eingabe der Daten zu erleichtern. Statt die Daten in der Spalte zu erfassen, werden die Daten jetzt in einer Zeile eingegeben.

Also statt vorher in B10, B11, B12... jetzt in B10, C10, D10...

Die Daten werden mit Hilfe eine Makros in eine andere Tabelle transferiert und waagerecht eingefügt.

Da ich aber die Eingabeart verändert habe, werden die Daten jetzt untereinander in die Tabelle eingefügt.

Ich weiß, dass das mit "Application.Transpose" zu tun hat.

Nun weiss ich aber nicht wie ich die Zeile umbenennen muss, damit die waagerechte Darstellung übernommen wird.

Wie ändere ich die Zeile, damit die angesprochenen Werte waagerecht in die Zeile kopiert werden?

Hier der komplette Code:

Sub transfer_werte()
    Dim rngKunde    As Excel.Range
    Dim rngReklam   As Excel.Range
    Dim rngArtikel   As Excel.Range

     Set rngKunde = Worksheets("Eingaben").Range("C5:C10")
    Set rngReklam = Worksheets("Eingaben").Range("D5:D9")
    Set rngArtikel = Worksheets("Eingaben").Range("C14:L14")
   
        With Worksheets("Liste")
          With .Cells(.Rows.Count, 2).End(xlUp)
               .Offset(1, 0).Resize(rngKunde.Columns.Count, rngKunde.Rows.Count).Value = Application.Transpose(rngKunde.Value)
        End With
    End With
   
    With Worksheets("Liste")
        With .Cells(.Rows.Count, 8).End(xlUp)
             .Offset(1, 0).Resize(rngReklam.Columns.Count, rngReklam.Rows.Count).Value = Application.Transpose(rngReklam.Value)
        End With
    End With
  
   With Worksheets("Liste")
        With .Cells(.Rows.Count, 14).End(xlUp)
             .Offset(1, 0).Resize(rngArtikel.Columns.Count, rngArtikel.Rows.Count).Value = Application.Transpose(rngArtikel.Value)
        End With
    End With
      
End Sub
Computer, Software, Office, Microsoft Excel, programmieren, VBA
VBA Problem mit ListIndex?

Hallo zsm

ich habe folgendes Problem: Ich habe etwas in der ListBox geändert. Nun möchte ich es in die Tabelle übertragen.

Wie kriege ich das hin?

Private Sub Speichern_Click()
    With Worksheets("Datensatz").Range("B:O")
    ListenIndex = Me.ListBox1.ListIndex
    Set rngCell = .Find(ListenIndex, LookIn:=xlValues, lookat:=xlWhole)
        If Not rngCell Is Nothing Then
            rngCell.Text = Me.ListBox1.Column(0, lngZeile)
            rngCell.Offset(0, 1).Text = Me.ListBox1.Column(1, lngZeile)
            rngCell.Offset(0, 2).Text = Me.ListBox1.Column(2, lngZeile)
            rngCell.Offset(0, 3).Text = Me.ListBox1.Column(3, lngZeile)
            rngCell.Offset(0, 4).Text = Me.ListBox1.Column(0, lngZeile)
            rngCell.Offset(0, 5).Text = Me.ListBox1.Column(1, lngZeile)
            rngCell.Offset(0, 6).Text = Me.ListBox1.Column(2, lngZeile)
            rngCell.Offset(0, 7).Text = Me.ListBox1.Column(3, lngZeile)
            rngCell.Offset(0, 8).Text = Me.ListBox1.Column(4, lngZeile)
            rngCell.Offset(0, 9).Text = Me.ListBox1.Column(5, lngZeile)
            rngCell.Offset(0, 10).Text = Me.ListBox1.Column(6, lngZeile)
            rngCell.Offset(0, 11).Text = Me.ListBox1.Column(7, lngZeile)
            rngCell.Offset(0, 12).Text = Me.ListBox1.Column(8, lngZeile)
            rngCell.Offset(0, 13).Text = Me.ListBox1.Column(9, lngZeile)
        End If
    End With
End Sub
Microsoft Excel, VBA
VBA mehrere Tabellen zur PDF zusammenfügen?

Hallo,

ich habe ein kleines Problem mit dem Erstellen von mehreren PFD-Seiten aus unterschiedlichen Tabellenblätter. Je nach Erfüllung der Bedingung (If-Abfrage) wird eine PDF erstellt.

Sofern nur ein eine Tabelle angesprochen wird, gibt es keine Probleme mit der Erstellung. Dabei ist es egal, ob die Tabelle oder zwei Seiten hat. Die Formatierung/Range ist korrekt und das Makro läuft durch.


Sheets("DUZ").Select
Range("A1:Y52").Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Aber soweit ich auf zwei oder mehr Tabellenblätter zugreife, gibt es Probleme:

Sheets(Array("Deckblatt", "Übersicht", "Tagebuch", "Ges", "Reisekosten", "DUZ")).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Tagebuch_RZ_DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Wie kann ich entsprechend die Range unterbringen, sodass es evtl. problemlos klappt?

'Sheets("Deckblatt").Select --> Hochformat (1 Seite)
'Range("A1:H43").Select
                    
'Sheets("Übersicht").Select --> Querformat (1 Seite)
'Range("A1:R35").Select
                    
'Sheets("Tagebuch").Select --> Hochformat (6 Seiten)
'Range("A1:V146").Select
                    
'Sheets("Ges").Select --> Hochformat (1 Seite)
'Range("A1:G43").Select
                    
'Sheets("DUZ").Select --> Querformat (2 Seiten)
'Range("A1:Y52").Select
                    
'Sheets("Reisekosten").Select --> Hochformat (1 Seite)
'Range("A1:N57").Select

Aktueller Fehlerhinweis: Anwendungs- oder objektdefinierter Fehler.

Ich hatte es auch mal wie folgt versucht, aber dann stimmt die Formatierung nicht (wenn es einzeln gespeichert wird, ist sie aber richtig). Außerdem wird dann beim Schreibschutz rumgemeckert (am Ende werden die Blätter wieder mit Schreibschutz versehen). Jedenfalls gibt es diese Probleme beim einzelnen nicht.

Sheets("DUZ").Select
Range("A1:Y52").Select
                    
Sheets("Reisekosten").Select
Range("A1:N57").Select

Sheets(Array("Reisekosten", "DUZ")).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Reisekosten_DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Hat jemand eine Idee?
Gruß
Computer, Microsoft Excel, Technik, programmieren, VBA, Technologie
Aufgabe automatisieren VBA Excel Text in Tabelle konvertieren?

Hallo Leute,

ich habe einen Text den ich aus einer Webapplikation per STRG-C kopiere und dann in Excel einfügen muss. Der Text ist immer unterschiedlich und das muss ich 2-4Tausend mal machen die nächsten Monate. Daher bin ich daran interessiert, das effizienter mit VBA und Makros zu gestalten aber komme auch mit Makro aufzeichnen nicht zu dem gewünschten Ergebnis.
Also ich schildere euch mal was für ein Text das ist und wie ich das Endformat haben will:

Text:
Es wurden XY bla und XY bla überprüft
Es wurden XY Fehler gefunden
Leerzeile
Text; Text; Text (Zeilen, xmal manchmal 12 manchmal 150 manchmal 1000 Zeilen)

Output: in dem Excelmakrodatei ein Button der das was ich im Zwischenspeicher habe einfügt.
Ab Zeile 4 bis Ende markieren und Text in Spalten konvertieren - Getrennt anhaken --> Weiter, dann Haken nur bei Semikolon setzen --> Fertig klicken.

Dann soll das als Tabelle Formatiert werden aber mit zwei zusätzlichen Spalten aber da ich immer unterschiedliche viele Zeilen habe, weiß ich nicht wie ich das automatisieren soll.

Und dann vor allem möchte ich ganze Zeilen mit die in Spalte C u.a. eine bestimmte textkette haben löschen lassen.
Für jede Hilfe bin ich dankbar. Ich habe mir Tutorials angeschaut aber die behandeln irgendwie alle es auf komische Art und Weise und nicht das Problem mit dem Formatieren der unterschiedlich langen Tabelle sowie des Löschen der Zeilen.

Computer, Microsoft Excel, VBA
Wie erstellt man ein Notenberechnungsprogramm in Excel mit VBA?

Hallo, wir haben von unserem Informatiklehrer folgende Aufgabe bekommen:

Der Lehrer Herr Müller möchte ein kleines Computerprogramm mit VBA in Excel erstellen, um bei der Korrektur der Arbeiten sofort sehen zu können, welche Note die Schüler mit ihrer erreichten Punktzahl bekommen. Dabei geht er folgendermaßen vor. 

Er kann z.B. die erreichte Prozentzahl mit Hilfe der erreichten Punktzahl und der Gesamtpunktzahl berechnen.

Dabei weiß er, dass es  die Note „1“ ab 95 % bis 100 %

                                              die Note „2“ ab 80 % bis   94 %

                                              die Note „3“ ab 60 % bis  79 %

                                              die Note „4“ ab 40 % bis  59 %

                                              die Note „5“ ab 20 % bis  39 %

                                              die Note „6“              bis  19 % gibt.

Da Herr Müller sehr streng ist, entscheidet er sich immer dafür, erst ab der tatsächlich erreichten Mindestprozentzahl (die roten Prozentzahlen) die bessere Note zu geben. Die kleinste, zu verge-bende Punktzahl ist 0,5 Punkte.

Beispiel:             Gesamtpunktzahl = 82

                              erreichte Punktzahl = 32,5 à 39,6 % à Note 5

Anders ausgedrückt ist die notwendige Punktzahl für eine Note „4“ bei 82 Gesamtpunkten:

82 * 0,4 = 32,8 à Da 32,8 mehr ist als 32,5 Punkte, gibt es für 32,5 Punkte die Note „5“

(die Note „4“gibt es erst ab 33 Punkten).

Der Algorithmus sollte so gestaltet sein, dass Herr Müller die Gesamtpunktzahl zu Beginn seiner Korrektur der Arbeiten einmal eingibt und anschließend die minimale Punktzahl „Grenzpunktzahl“ für jede Note ausgegeben wird, so dass er sofort einen Überblick hat, welche Note der für jede erreichte Punktzahl geben kann.

 

Aufgabenstellung:

1.      Beschreibe den Algorithmus zur Berechnung und Anzeige der „Grenzpunktzahlen“ zuerst als Wortmodell. Achte darauf, dass es auch für dritte verständlich ist.

2.      Setze dein Wortmodell in ein Struktogramm um.

3.      Setze das Struktogramm in VBA -Code in der Entwicklerumgebung von Excel um.

Ich würde mich freuen, wenn mir jemande dabei helfen könnte.

Schule, programmieren, VBA, Notenberechnung
Wie kann ich Kontrollkästchen elegant miteinander verknüpfen, um nach mehreren Kriterien zu filtern?

Hallo zusammen,

in einer ExcelDatei befinden sich Formularsteuerlemente bzw. 3 Kontrollkästchen mit denen ich verschiedene Kriterien nach Hunde, Katzen und Vögel filtern sowie verknüpfen möchte.

Mit ActiveX-Steuerelemente Kontrollstästchen und CommandButton konnte ich folgendes Beispiel aufbauen:

Private Sub ausführen_Click()

    If CheckBox1.Value = True And CheckBox2.Value = False And CheckBox3.Value = False Then
        Hund
    ElseIf CheckBox1.Value = False And CheckBox2.Value = True And CheckBox3.Value = False Then
        Katze
    ElseIf CheckBox1.Value = False And CheckBox2.Value = False And CheckBox3.Value = True Then
        Vogel
    ElseIf CheckBox1.Value = True And CheckBox2.Value = True And CheckBox3.Value = False Then
        HundKatze
    ElseIf CheckBox1.Value = False And CheckBox2.Value = True And CheckBox3.Value = True Then
        KatzeVogel
    ElseIf CheckBox1.Value = True And CheckBox2.Value = False And CheckBox3.Value = True Then
        HundVogel
    ElseIf CheckBox1.Value = True And CheckBox2.Value = True And CheckBox3.Value = True Then
        Alle
    Else
        MsgBox ("Es wurde nichts ausgewählt")
    End If

End Sub

Sub Hund()
' Hund Makro
    Worksheets("Tabelle2").Range("$A$4:$B$8").AutoFilter Field:=2, Criteria1:="Hund"
End Sub
Sub Katze()
' Katze Makro
    Worksheets("Tabelle2").Range("$A$4:$B$8").AutoFilter Field:=2, Criteria1:="Katze"
End Sub
Sub Vogel()
' Vogel Makro
    Worksheets("Tabelle2").Range("$A$4:$B$8").AutoFilter Field:=2, Criteria1:="Vogel"
End Sub
Sub Alle()
' Alle Makro
    Worksheets("Tabelle2").Range("$A$4:$B$8").AutoFilter Field:=2
End Sub
Sub HundKatze()
' HundKatze Makro
    ActiveSheet.Range("$A$6:$B$13").AutoFilter Field:=2, Criteria1:="=Hund", _
        Operator:=xlOr, Criteria2:="=Katze"
End Sub
Sub KatzeVogel()
' KatzeVogel Makro
    ActiveSheet.Range("$A$6:$B$13").AutoFilter Field:=2, Criteria1:="=Katze", _
        Operator:=xlOr, Criteria2:="=Vogel"
End Sub
Sub HundVogel()
' HundVogel Makro
    ActiveSheet.Range("$A$6:$B$13").AutoFilter Field:=2, Criteria1:="=Hund", _
        Operator:=xlOr, Criteria2:="=Vogel"
End Sub

Das funktioniert soweit ganz gut.

Allerdings benötige ich Formularsteuerelemente Kontrollkästchen. Die Ergebnisse sollen sich schon während ein Kontrollkästchen betätigt wird aktualisieren. Aktuell läuft das über ActiveX-Steuerelemente Kontrollkästchen und CommandButton.

Gegenüberstellung der Varianten:

Nachgebaute Excel:

Bis auf die G4 funktioniert alles sehr gut. Vielleicht seht ihr den Fehler. Auf eine einfache Formel wie im Funktionstest reagiert die Zelle.

Vielen Dank für eure Hilfe. Liebe Grüße

Bild zum Beitrag
Microsoft Excel, VBA
Excel VBA Laufzeitfehler 13?

Hallo,

wie kann ich den o.g. Fehler lösen?

Was passiert:

Ich hab eine Userform und darin Listboxen

Die Listbox beginnt automatisch bei der Zahl 0

Wenn jedoch nur 1 listbox verändert wird, und die anderen nicht und auf 0 bleiben, dann erscheint der o.g. Fehler

Mein Code:

Private Sub CommandButton1_Click()

Range("C6").Value = Range("C6") - ListBox1.Value

Range("D6").Value = Range("D6") - ListBox2.Value

Range("F6").Value = Range("F6") + ListBox3.Value

Range("G6").Value = Range("G6") + ListBox4.Value

Range("C10").Value = Range("C10") + ListBox1

Range("C11").Value = Range("C11") + ListBox2

Dim n

For n = 0 To ListBox1.ListCount - 1

ListBox1.Selected(n) = True

Next n

Dim m

For m = 0 To ListBox2.ListCount - 1

ListBox2.Selected(m) = True

Next m

Dim b As Long

For b = 0 To ListBox3.ListCount - 1

ListBox3.Selected(b) = True

Next b

Dim c As Long

For c = 0 To ListBox4.ListCount - 1

ListBox4.Selected(c) = True

Next c

End Sub

Private Sub CommandButton2_Click()

Unload Me

End Sub

Private Sub UserForm_Initialize()

'---

With ListBox1

ListBox1.List = Tabelle1.Range("C49:C59").Value

For n = 0 To ListBox1.ListCount - 1

ListBox1.Selected(n) = True

Next n

End With

'----

With ListBox2

ListBox2.List = Tabelle1.Range("C49:C59").Value

For m = 0 To ListBox2.ListCount - 1

ListBox2.Selected(m) = True

Next m

End With

'---

With ListBox3

ListBox3.List = Tabelle1.Range("C49:C59").Value

For b = 0 To ListBox3.ListCount - 1

ListBox3.Selected(b) = True

Next b

End With

'---

With ListBox4

ListBox4.List = Tabelle1.Range("C49:C59").Value

For c = 0 To ListBox4.ListCount - 1

ListBox4.Selected(c) = True

Next c

End With

End Sub

Microsoft Excel, VBA
Bei Serienbrief Dokumente einzeln Speichern mit Makro funktioniert nicht?
Ich möchte die Dokumente im Serienbrief einzeln automatisch speichern mittels Makro und habe das unten angefügte Makro dafür auch gefunden aber es funktioniert bei mir noch nicht sondern debugt immer und zeigt Fehler in der Variable an. Ich hab auch den Pfad schon auf mein Dokument angepasst. Muss ich evtl noch den Dateinamen ändern?

Sub Test()
 '
 ' Serienbrief in einzelnen Word Dokumenten speichern
 '
 Dim Dateiname As String
 Dim LetzterRec As Long
     
 Application.ScreenUpdating = False
 Application.Visible = False

 Const path As String = "C:\Test\"          'Pfad anpassen
 ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord
 LetzterRec = Word.ActiveDocument.MailMerge.DataSource.ActiveRecord
 ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord


     With ActiveDocument.MailMerge
         .DataSource.ActiveRecord = wdFirstRecord
         Do
             If .DataSource.ActiveRecord > 0 Then
                If .DataSource.DataFields("VorNachname").Value <> "0" Then
                     .Destination = wdSendToNewDocument
                    .SuppressBlankLines = True

                     With .DataSource
                         .FirstRecord = .ActiveRecord
                         .LastRecord = .ActiveRecord
                
                         Dateiname = path & .DataFields("VorNachname").Value & ".docx"
                
                     End With
                        .Execute Pause:=False
                 
                         ActiveDocument.SaveAs FileName:=Dateiname           'Speichern unter Dateiname
                        ActiveDocument.Close False
                 End If

               End If
               
             If .DataSource.ActiveRecord < LetzterRec Then
                 .DataSource.ActiveRecord = wdNextRecord
             Else
                 Exit Do
             End If
         Loop
     End With
     
     Application.Visible = True
     Application.ScreenUpdating = True
 End Sub

Computer, Microsoft Word, Technik, Makro, VBA

Meistgelesene Beiträge zum Thema VBA