Thema Datum  Von Nutzer Rating
Antwort
05.12.2022 00:10:09 ulli
NotSolved
Blau Fehler beim Speichern einer Range als CSV
05.12.2022 00:24:38 Gast58902
NotSolved
05.12.2022 09:01:18 ulli
NotSolved

Ansicht des Beitrags:
Von:
Gast58902
Datum:
05.12.2022 00:24:38
Views:
363
Rating: Antwort:
  Ja
Thema:
Fehler beim Speichern einer Range als CSV

Wie kann ich eine  .xlsm  einstellen. Nur mit dem Modul ist der Fehler schwer zu  finden.

Das Modul funktioniert auf einem Blatt und auf anderen nicht.
Eine ältere Excelversion zeigt den Aufabau der Tabelle aber noch ohne das aktuelle Modul.

Zu finden: https://www.max-mg.de  800 Bücher...

https://www.max-mg.de

Option Explicit
                                
  Sub AutoRange_Export()        'Das Modul_AutoRng muss auf dem ersten Feldnamen (hier Standort) _
                                 gestartet werden. Der nach der Vorlage (siehe Blatt ANLEITUNG) _
                                 erkannte Zellbereich wird als Bereich erkannt und in eine _
                                 Semikolongetrennte *.CSV-Datei gespeichert
                                
    Dim WorkRng As Variant           ' für Zellbereich aus Kopfzeilen + Datenzellen
    Dim Worksheetx As Variant
    Dim CSVName As String           '    Ist die letzte Spalte eine Kopfzelle
    Dim lngDauer As Variant            '    Ist die letzte zeile eine Datenzelle (Inhalt vorhanden)
    Dim AzBuecher As Variant
    Dim ErsteZelleValue As String
    Dim ErrorFlag As Boolean
                                    ' +++ Defaultwerte
    CSVName = "CSV-Transfer"        ' Dateineme für CSV-Datei
    lngDauer = 1.5                  ' MsgBox Anzeigedauer in Sekunden
    
  On Error Resume Next
'    Set WorkRng = Application.Selection
'    WorkRng.Select
'    'Range(WorkRng).Select

     
    Set WorkRng = Application.Selection
    WorkRng.Select
    Range(WorkRng).Select

    'MsgBox "The name of the active sheet is " & ActiveSheet.Name

    Worksheetx = ActiveSheet.Name   'Speichern aufrufendes Arbeitsblatt
    'MsgBox "The name of the active sheet is " & ActiveSheet.Name
    Call auto_range(Worksheetx, ErsteZelleValue, ErrorFlag, WorkRng, AzBuecher) 'gültiger Zellbereich ermitteln
    If ErrorFlag = True Then GoTo Fehler
    
    '*** Zellbereich Bearbeiten
    
    Application.ActiveSheet.Copy        'Kopiert in neues Workbook unter "Mappe_n)
    Application.ActiveSheet.Cells.Clear 'löscht alle Zellen in neuer Mappe_n
    'MsgBox WorkRng.Address  '+++ zeigt Zellauswahl an +++
    
    WorkRng.Copy Application.ActiveSheet.Range("A1") 'Kopiert "Bereich/Range" ab A1 in Mappe_n
    Application.DisplayAlerts = False   'WarnMeldung wenn überschreiben ? AUS
    Application.ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & CSVName, FileFormat:=xlCSV, _
        CreateBackup:=False, Local:=True    'Speichert im Pfad der Exceldatei
    Application.DisplayAlerts = True    'WarnMeldung überschreiben ? Ein
    Application.ActiveWorkbook.Close True
    Call MessageBox_zeitgesteuert(CSVName, lngDauer, AzBuecher)
Fehler:
End Sub

Sub auto_range(Worksheetx, ErsteZelleValue, ErrorFlag, WorkRng, AzBuecher) 'Datensatz auf Gültigkeit prüfen
    
    Dim numCol As Variant
    Dim cntcol As Variant
    Dim LastCol As Variant
    Dim LastRow As Variant
    Dim Startzelle As Variant
    Dim Endzeile As Variant
    Dim Text As Variant
    Dim MaxBuecher As Variant
    Dim VorlFeldnamen(1 To 6) As Variant
    Dim i As Integer
    
    ErrorFlag = False          'Fehlerflag rücksetzten
       
    '******* Mu-ster Kopfzellen und Anzahl Datenzellen lesen und speichern *****
    
    Sheets("ANLEITUNG").Select
    Range("Kopfz_S").Select                 'Kopfzelle_S Startzelle

    For i = 1 To 6                           'Vorl_agen Feldnamen in Datenfeld speichern
      VorlFeldnamen(i) = Selection.Value
      ActiveCell.Offset(0, 1).Select
    Next i
     
    Range("MaxBuecher").Select
    MaxBuecher = Selection.Value           'Maximale Anzahl Datenzeilen speichern Zelle aktivieren
    
    Sheets(Worksheetx).Select              'Zurück zum aufrufenden Arbeitsblatt
        
'***************** Prüfen ob die Kopfzeile der Vorgabe aus "Anleitung" entspricht *************

    If ActiveCell.Value = VorlFeldnamen(1) Then    'Prüfen ob Wert der 1. Zelle der Kopfzelle stimmt
      Startzelle = ActiveCell.Address
    Else
      ErrorFlag = True
      GoTo FehlerZeileErsterFeldname
    End If
 '---------------
    ActiveCell.Offset(0, 1).Select             ' 2. Kopfwert

For i = 2 To 6          ' 1.Zelle wurde schon als Startzelle geprüft
    If ActiveCell.Value <> VorlFeldnamen(i) Or VorlFeldnamen(i) = "" Then
    GoTo VorlagenEnde
    ElseIf ActiveCell.Value = "" Then
      MsgBox "Feldnamen stimmen nicht überein - Siehe Blatt Anleitung!!", vbCritical
      ErrorFlag = True
      GoTo Brexit
      End If
      ActiveCell.Offset(0, 1).Select
Next i
     
VorlagenEnde:
     LastCol = i - 1                            'da LEERE Zelle erkannt, eine Spalte zurück
     ActiveCell.Offset(0, -1).Select
    
'*** Prüfen: Anzahl der Datenzellen in Spalte 1 bis LeerZelle in 1. Spalte oder Meldung wenn _
                                                                MaxBuecher erreicht
    Range(Startzelle).Select
    numCol = ActiveCell.Address
    cntcol = "1"                                'Erster Dateneintrag
    Text = ActiveCell.Value
    ActiveCell.Offset(1, 0).Select              'von Kopf- in Datenzeile 1. Spalte
       
    Do
        ActiveCell.Offset(1, 0).Select          'Suchlauf in 1. Spalte bis LEERzelle
        cntcol = cntcol + 1
    Loop While ActiveCell.Value <> ""
    
    ActiveCell.Offset(-1, 0).Select             'Korrektur auf letzten Eintrag
    LastRow = cntcol
    Endzeile = ActiveCell.Address
    
    If LastRow > MaxBuecher + 1 Then
    MsgBox cntcol - 1 & " Bücher, es sind nur " & MaxBuecher & " im Fach vorgesehen", vbExclamation
    End If
    AzBuecher = "777" 'cntcol - 1      'für MsgBox Ausgabe
Datenzellen_geprüft:

    Range(Startzelle).Resize(LastRow, LastCol).Select  'Ändert die Größe des angegebenen Bereichs
    Set WorkRng = Application.Selection
    GoTo Brexit
FehlerZeile:
    MsgBox ("Zellauswahl ungültig"), vbCritical
    ErrorFlag = True
    GoTo Brexit
FehlerZeileErsterFeldname:
    MsgBox ("Bitte ersten Feldnamen Wählen (Standort)"), vbCritical
    ErrorFlag = True
    GoTo Brexit
FehlerSpalte:
    MsgBox ("Zellauswahl ungültig, da Leerzelle in 1.Spalte oder eine weitere Kopfzelle ") & _
                                                                ("in der 1. Spalte"), vbCritical
    ErrorFlag = True
Brexit:
    Sheets(Worksheetx).Select       'Zurück zur aufrufendem Blatt
End Sub

Sub MessageBox_zeitgesteuert(CSVName, lngDauer, AzBuecher) 'Beendet die Windows "MessageBox" nach lngDauer
Dim iAnzeige As Integer
Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")
iAnzeige = objShell.Popup("In der neuen Datei  " & CSVName & ".CSV  wurden " & AzBuecher & " Bücher gespeichert", _
  lngDauer, "CSV für BOOKcook Import                                    Anzeigedauer: " & lngDauer _
  & " sec.", vbInformation)
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
05.12.2022 00:10:09 ulli
NotSolved
Blau Fehler beim Speichern einer Range als CSV
05.12.2022 00:24:38 Gast58902
NotSolved
05.12.2022 09:01:18 ulli
NotSolved