Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

@fcs (Franz) ... Habe da noch eine Bitte | Herbers Excel-Forum


Betrifft: @fcs (Franz) ... Habe da noch eine Bitte von: Eddie
Geschrieben am: 20.10.2008 12:34:03

Hallo Franz ......... vielleicht könntest du mir das Problem noch lösen ??

https://www.herber.de/forum/messages/1016729.html

gruß der Eddie

  

Betrifft: AW: @fcs (Franz) ... Habe da noch eine Bitte von: fcs
Geschrieben am: 20.10.2008 15:05:47

Hallo Eddie,

hier der entsprechend angepasster Code der Hauptprozedur.

Gruß
Franz

Sub Text_Export()
  Dim varDatei, wks As Worksheet, intAnzahlZeichen As Integer, bolLinks As Boolean
  Dim lngZeile1 As Long, lngZeileE As Long, lngZ As Long
  Dim lngZeile As Long, intFF As Integer, strText As String
  Dim lngSpalte As Long, intI As Long, arrBreite() As Long, lngSpalte_mit_A As Long
  Const strSep = " | " 'Trennzeichen zwischen Daten-Spalten in Tabellenabschnitten
  Const strSep1 = " || " 'Trennzeichen nach Case ID und vor "_A"
  Const strSep2 = " " 'Trennzeichen zwischen Daten-Spalten außerhalb Tabellenabschnitten
  On Error GoTo Fehler
  varDatei = Application.GetSaveAsFilename(InitialFileName:="TestExport.txt", _
    Filefilter:="Text(*.txt), *.txt", _
    Title:="Bitte Namen für Export-Datei wählen oder eingeben und speichern")
  If varDatei <> False Then
    Set wks = ActiveSheet
    With wks
      intFF = FreeFile()
      Open varDatei For Output As #intFF
      lngZeileLast = .UsedRange.Row + .UsedRange.Rows.Count - 1
      For lngZeile = 1 To lngZeileLast
        lngZeile1 = lngZeile
        'nächste Tabelle suchen ("case id" steht in Spalte A)
        Do
          lngZeile = lngZeile + 1
          If lngZeile > lngZeileLast Then Exit Do
        Loop Until InStr(1, .Cells(lngZeile, 1).Value, "case id") > 0
        lngZeileE = lngZeile - 1
        'Nicht Tabellentexte in Datei schreiben
        Do
          strText = wks.Cells(lngZeile1, 1).Text
          'ggf. Texte aus weiteren Spalten einlesen
          If .Cells(lngZeile1, .Columns.Count).End(xlToLeft).Column > 1 Then
            For lngSpalte = 2 To .Cells(lngZeile1, .Columns.Count).End(xlToLeft).Column
              intAnzahlZeichen = Len(wks.Cells(lngZeile1, lngSpalte).Text)
              strText = strText & strSep2 _
                & LeerzeichenAuffuellen(strText:=wks.Cells(lngZeile1, _
                lngSpalte).Text, intZeichen:=intAnzahlZeichen, bolLinks:=True)
            Next
          End If
          Print #intFF, strText
          lngZeile1 = lngZeile1 + 1
        Loop Until lngZeile1 > lngZeileE
        If lngZeileE = lngZeileLast Then Exit For
        'Anfang Tabelle setzen
        lngZeile1 = lngZeileE + 1
        'Ende Tabelle suchen (nächste leere Zeile)
        lngZeileE = lngZeile1 + 1
        Do
          lngZeile = lngZeile + 1
          If lngZeile >= lngZeileLast Then Exit Do
        Loop Until IsEmpty(.Cells(lngZeile, 1)) Or IsEmpty(.Cells(lngZeile, 2))
        lngZeileE = lngZeile - 1
        
        'Letzte Spalte in Titelzeile ermitteln
        lngSpalteMax = .Cells(lngZeile1, .Columns.Count).End(xlToLeft).Column
        ReDim arrBreite(1 To lngSpalteMax)
        'Spalten Breiten ermitteln und in Array speichern
        For lngSpalte = 1 To lngSpalteMax
          For lngZ = lngZeile1 To lngZeileE
            If LCase(.Cells(lngZ, lngSpalte).Text) = "remarks/comment" Then
              arrBreite(lngSpalte) = 999
              Exit For
            Else
            If Len(.Cells(lngZ, lngSpalte).Text) > arrBreite(lngSpalte) Then
              arrBreite(lngSpalte) = Len(.Cells(lngZ, lngSpalte).Text)
            End If
            End If
          Next
        Next
        'Spalte mit Titel mit "_A" ermitteln
        lngSpalte_mit_A = 999
        For lngSpalte = 1 To lngSpalteMax
            If InStr(.Cells(lngZeile1, lngSpalte).Text, "_A") > 0 Then
              lngSpalte_mit_A = lngSpalte
              Exit For
            End If
        Next
        'Zeilen des Tabellenbereichs einlesen
        For lngZ = lngZeile1 To lngZeileE
          'Wert aus 1. Spalte einlesen
          intAnzahlZeichen = arrBreite(1)
          strText = LeerzeichenAuffuellen(strText:=.Cells(lngZ, 1).Text, _
              intZeichen:=intAnzahlZeichen, bolLinks:=IsNumeric(.Cells(lngZ, 1).Text))
          'Werte aus restlichen Spalten einlesen
          For lngSpalte = 2 To lngSpalteMax
            If arrBreite(lngSpalte) <> 999 Then
              intAnzahlZeichen = arrBreite(lngSpalte)
            Else
              intAnzahlZeichen = Len(wks.Cells(lngZ, lngSpalte).Text)
            End If
            bolLinks = IsNumeric(.Cells(lngZeile, 1).Text)
            Select Case lngSpalte
              Case 2, lngSpalte_mit_A
                strText = strText & strSep1 _
                  & LeerzeichenAuffuellen(strText:=wks.Cells(lngZ, _
                  lngSpalte).Text, intZeichen:=intAnzahlZeichen, bolLinks:=bolLinks)
              Case Else
                strText = strText & strSep _
                  & LeerzeichenAuffuellen(strText:=wks.Cells(lngZ, _
                  lngSpalte).Text, intZeichen:=intAnzahlZeichen, bolLinks:=bolLinks)
            End Select
          Next
          'Zeile in Text-Datei schreiben
          Print #intFF, strText
          
          If lngZ = lngZeile1 Then
            'Zeile mit "-" nach 1. Zeile der Tabelle einfügen
            'Gesamt-Anzahl Zeichen in den Spalten ermitteln
            intI = 0
            intI = arrBreite(1)
            For lngSpalte = 2 To lngSpalteMax
              If arrBreite(lngSpalte) = 999 Then
                intI = intI + Len(strSep) + Len("remarks/comment")
              Else
                intI = intI + Len(strSep) + arrBreite(lngSpalte)
              End If
            Next
            'zusätzliche Zeichen für Sonderlänge 1. Trennzeichen und vor "_A" in tabelle
            intI = intI + (Len(strSep1) - Len(strSep))
            If lngSpalte_mit_A <> 999 Then
              intI = intI + (Len(strSep1) - Len(strSep))
            End If
            strText = String(intI, "-")
            Print #intFF, strText
          End If
        Next
        lngZeile = lngZeileE
      Next
      Close #intFF
    End With
  End If
Fehler:
  If Err.Number <> 0 Then
    Select Case Err.Number
      Case 999 '
      
      Case Else
        MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
    End Select
  End If
End Sub




  

Betrifft: AW: @fcs (Franz) ... Habe da noch eine Bitte von: Eddie
Geschrieben am: 21.10.2008 10:09:55

Hallo Franz
... kann man die Hilfsversion (mit den steps) und die Hauptversion (case id) vielleicht noch eine Funktion einbauen, wo er erst z.B. ab der 10ten zeile das Makro abgearbeitet werden soll ?? (ich würde gerne darüber noch ein paar hinweise einfügen, die er nicht exportieren soll)

danke und Gruß eddie


  

Betrifft: AW: @fcs (Franz) ... Habe da noch eine Bitte von: fcs
Geschrieben am: 21.10.2008 13:55:24

Hallo Eddie,

die Startzeile kann als Konstante am Anfang des Codes gesetzt werden.

Hier die jeweils ersten Zeilen der beiden Haupt-Prozeduren mit markierten geänderten/ergänzten Zeilen.

Gruß
Franz

Sub Text_Export_Schritte()
  Dim varDatei, wks As Worksheet, intAnzahlZeichen As Integer
  Dim lngZeileLast As Long, lngSpalteMax As Long
  Dim lngZeile As Long, intFF As Integer, strText As String
  Dim lngSpalte As Long, arrBreite() As Long
  Const strSep = "||" 'Trennzeichen zwischen Daten-Spalten
  Const lngStartZeile = 10  'Zeile ab der Text-Datei erzeugt werden soll    '#####
  On Error GoTo Fehler
  varDatei = Application.GetSaveAsFilename(InitialFileName:="TestExport.txt", _
    Filefilter:="Text(*.txt), *.txt", _
    Title:="Bitte Namen für Export-Datei wählen oder eingeben und speichern")
  If varDatei <> False Then
    Set wks = ActiveSheet
    With wks
      intFF = FreeFile()
      Open varDatei For Output As #intFF
      lngZeileLast = .UsedRange.Row + .UsedRange.Rows.Count - 1
      'Letzte Spalte in Titelzeile ermitteln
      lngSpalteMax = .Cells(lngStartZeile, .Columns.Count).End(xlToLeft).Column '#####
      ReDim arrBreite(1 To lngSpalteMax)
      'Spalten Breiten ermitteln und in Array speichern
      For lngSpalte = 1 To lngSpalteMax
        For lngZeile = lngStartZeile To lngZeileLast                            '#####
          If Len(.Cells(lngZeile, lngSpalte).Text) > arrBreite(lngSpalte) Then
            arrBreite(lngSpalte) = Len(.Cells(lngZeile, lngSpalte).Text)
          End If
        Next
        arrBreite(lngSpalte) = arrBreite(lngSpalte) + 2 '2 zusätlich für Leerzeichen
      Next
      'Zeilen der Tabelle einlesen
      For lngZeile = lngStartZeile To lngZeileLast                              '#####


Sub Text_Export()
  Dim varDatei, wks As Worksheet, intAnzahlZeichen As Integer, bolLinks As Boolean
  Dim lngZeile1 As Long, lngZeileE As Long, lngZ As Long
  Dim lngZeile As Long, intFF As Integer, strText As String
  Dim lngSpalte As Long, intI As Long, arrBreite() As Long, lngSpalte_mit_A As Long
  Const strSep = " | " 'Trennzeichen zwischen Daten-Spalten in Tabellenabschnitten
  Const strSep1 = " || " 'Trennzeichen nach Case ID und vor "_A"
  Const strSep2 = " " 'Trennzeichen zwischen Daten-Spalten außerhalb Tabellenabschnitten
  Const lngStartZeile = 10  'Zeile ab der Text-Datei erzeugt werden soll    '#####
  On Error GoTo Fehler
  varDatei = Application.GetSaveAsFilename(InitialFileName:="TestExport.txt", _
    Filefilter:="Text(*.txt), *.txt", _
    Title:="Bitte Namen für Export-Datei wählen oder eingeben und speichern")
  If varDatei <> False Then
    Set wks = ActiveSheet
    With wks
      intFF = FreeFile()
      Open varDatei For Output As #intFF
      lngZeileLast = .UsedRange.Row + .UsedRange.Rows.Count - 1
      For lngZeile = lngStartZeile To lngZeileLast                          '#####




  

Betrifft: AW: @fcs (Franz) ... Habe da noch eine Bitte von: Eddie
Geschrieben am: 21.10.2008 14:43:16

Danke ... mir fiel gerade auf, das ich noch eine 2te Bedingung bräuchte ...

ich will nicht nur nach case id sondern auch nach case Id schauen (großes I)

ansonsten ist das bis jetzt echt ein SUPER Service von dir .. ohne dich wäre ich wirklich hoffnungslos :-)

danke und gruß der Eddie


  

Betrifft: AW: @fcs (Franz) ... Habe da noch eine Bitte von: fcs
Geschrieben am: 21.10.2008 15:37:07

Hallo Eddie,

dann muss nachfolgende Anpassung einbauen. Dabei wird "case id" dann im klein geschriebenen Zellinhalt gesucht.

Gruß
Franz

        'nächste Tabelle suchen ("case id" oder "case Id" steht in Spalte A)
        Do
          lngZeile = lngZeile + 1
          If lngZeile > lngZeileLast Then Exit Do
        Loop Until InStr(1, LCase(.Cells(lngZeile, 1).Value), "case id") > 0 '#####




  

Betrifft: DANKE Franz von: Eddie
Geschrieben am: 21.10.2008 16:01:17

.... ich hoffe mal das ich nicht noch auf ein paar Goodies stoße :-) .. aber ich denke mal so ist das jetzt genau nach meinen wünschen :-)

danke und gruß Eddie


  

Betrifft: Habe da noch nen WUNSCH :.-) von: Eddie
Geschrieben am: 22.10.2008 14:57:20

Hallo Franz ....

ich würde gerne noch eine Erweiterung bzw. Reduzierung der beiden Funktionen ...

undzwar sollen die exportierten daten nicht mehr in eine Textdatei gespeichert werden, sondern gleich in die Zwischenablage ... so das es auch keine Abfrage wg. des Dokuments und des Speicherortes geben soll .......

Also nochmals :-) ... textdataeispeicherung soll durch Zwischenablage ersetzt werden


danke und gruß der EDDIE


  

Betrifft: AW: Habe da noch nen WUNSCH :.-) von: fcs
Geschrieben am: 22.10.2008 17:29:59

Hallo Eddie,

ich hab mal einen Versuch gemacht. Das Einfügen der Zwischenablage in Word sieht gut aus (Schriftart dann auf Courier New setzen).
ggf. muss du für die Exceldatei in der das Makrogespeichert ist im VBA-Editor im Menü Extras--Verweise im Dialogfenster noch den Verweis auf "Microsoft Forms x.x Object Library" als verfügbar markieren.

Gruß
Franz

nachfolgend die beiden Modifizierten Haupprozeduren.

Sub Text_Export_Schritte_into_Clipboard()
  Dim objData As DataObject
  Dim varDatei, wks As Worksheet, intAnzahlZeichen As Integer
  Dim lngZeileLast As Long, lngSpalteMax As Long
  Dim lngZeile As Long, strText As String
  Dim lngSpalte As Long, arrBreite() As Long
  Dim strTextdaten As String
  Const strSep = "||" 'Trennzeichen zwischen Daten-Spalten
  Const lngStartZeile = 10  'Zeile ab der Text-Datei erzeugt werden soll
  On Error GoTo Fehler
    Set objData = New DataObject
    Set wks = ActiveSheet
    With wks
      strTextdaten = ""
      lngZeileLast = .UsedRange.Row + .UsedRange.Rows.Count - 1
      'Letzte Spalte in Titelzeile ermitteln
      lngSpalteMax = .Cells(lngStartZeile, .Columns.Count).End(xlToLeft).Column
      ReDim arrBreite(1 To lngSpalteMax)
      'Spalten Breiten ermitteln und in Array speichern
      For lngSpalte = 1 To lngSpalteMax
        For lngZeile = lngStartZeile To lngZeileLast
          If Len(.Cells(lngZeile, lngSpalte).Text) > arrBreite(lngSpalte) Then
            arrBreite(lngSpalte) = Len(.Cells(lngZeile, lngSpalte).Text)
          End If
        Next
        arrBreite(lngSpalte) = arrBreite(lngSpalte) + 2 '2 zusätlich für Leerzeichen
      Next
      'Zeilen der Tabelle einlesen
      For lngZeile = lngStartZeile To lngZeileLast
        'Wert aus 1. Spalte einlesen
        intAnzahlZeichen = arrBreite(1)
        strText = LeerzeichenAuffuellen2(strText:=.Cells(lngZeile, 1).Text, _
            intZeichen:=intAnzahlZeichen)
        'Werte aus Spalten für Schritte einlesen
        For lngSpalte = 2 To lngSpalteMax - 1
          intAnzahlZeichen = arrBreite(lngSpalte)
          strText = strText & strSep & LeerzeichenX(strText:=wks.Cells(lngZeile, _
            lngSpalte).Text, intZeichen:=intAnzahlZeichen)
        Next
        'Hinweise einlesen
        intAnzahlZeichen = arrBreite(lngSpalteMax)
        strText = strText & strSep & LeerzeichenAuffuellen2(strText:=" " _
            & .Cells(lngZeile, lngSpalteMax).Text, intZeichen:=intAnzahlZeichen)
        
        'Zeile in Text-Datei schreiben
        If strTextdaten = "" Then
          strTextdaten = strText
        Else
          strTextdaten = strTextdaten & vbCr & strText
        End If
        'TrennZeile mit "-" nach Zeile der Tabelle einfügen
        strText = String(arrBreite(1), "-")
        For lngSpalte = 2 To lngSpalteMax
            strText = strText & strSep & String(arrBreite(lngSpalte), "-")
        Next
        If strTextdaten = "" Then
          strTextdaten = strText
        Else
          strTextdaten = strTextdaten & vbCr & strText
        End If
      Next
      'Text-String in die Zwischenablage übertragen
      objData.settext strTextdaten
      objData.putinclipboard
      MsgBox "Textdaten sind in Zwischenablage"
    End With
Fehler:
  If Err.Number <> 0 Then
    Select Case Err.Number
      Case 999 '
      
      Case Else
        MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
    End Select
  End If
End Sub




Sub Text_Export_into_Clipboard()
  Dim objData As DataObject
  Dim varDatei, wks As Worksheet, intAnzahlZeichen As Integer, bolLinks As Boolean
  Dim lngZeile1 As Long, lngZeileE As Long, lngZ As Long
  Dim lngZeile As Long, strText As String
  Dim lngSpalte As Long, intI As Long, arrBreite() As Long, lngSpalte_mit_A As Long
  Const strSep = " | " 'Trennzeichen zwischen Daten-Spalten in Tabellenabschnitten
  Const strSep1 = " || " 'Trennzeichen nach Case ID und vor "_A"
  Const strSep2 = " " 'Trennzeichen zwischen Daten-Spalten außerhalb Tabellenabschnitten
  Const lngStartZeile = 10  'Zeile ab der Text-Datei erzeugt werden soll
  On Error GoTo Fehler
    Set objData = New DataObject
    Set wks = ActiveSheet
    With wks
      strTextdaten = ""
      lngZeileLast = .UsedRange.Row + .UsedRange.Rows.Count - 1
      For lngZeile = lngStartZeile To lngZeileLast
        lngZeile1 = lngZeile
        'nächste Tabelle suchen ("case id" oder "case Id" steht in Spalte A)
        Do
          lngZeile = lngZeile + 1
          If lngZeile > lngZeileLast Then Exit Do
        Loop Until InStr(1, LCase(.Cells(lngZeile, 1).Value), "case id") > 0
        lngZeileE = lngZeile - 1
        'Nicht Tabellentexte in Datei schreiben
        Do
          strText = wks.Cells(lngZeile1, 1).Text
          'ggf. Texte aus weiteren Spalten einlesen
          If .Cells(lngZeile1, .Columns.Count).End(xlToLeft).Column > 1 Then
            For lngSpalte = 2 To .Cells(lngZeile1, .Columns.Count).End(xlToLeft).Column
              intAnzahlZeichen = Len(wks.Cells(lngZeile1, lngSpalte).Text)
              strText = strText & strSep2 _
                & LeerzeichenAuffuellen(strText:=wks.Cells(lngZeile1, _
                lngSpalte).Text, intZeichen:=intAnzahlZeichen, bolLinks:=True)
            Next
          End If
          If strTextdaten = "" Then
            strTextdaten = strText
          Else
            strTextdaten = strTextdaten & vbCr & strText
          End If
          lngZeile1 = lngZeile1 + 1
        Loop Until lngZeile1 > lngZeileE
        If lngZeileE = lngZeileLast Then Exit For
        'Anfang Tabelle setzen
        lngZeile1 = lngZeileE + 1
        'Ende Tabelle suchen (nächste leere Zeile)
        lngZeileE = lngZeile1 + 1
        Do
          lngZeile = lngZeile + 1
          If lngZeile >= lngZeileLast Then Exit Do
        Loop Until IsEmpty(.Cells(lngZeile, 1)) Or IsEmpty(.Cells(lngZeile, 2))
        lngZeileE = lngZeile - 1
        
        'Letzte Spalte in Titelzeile ermitteln
        lngSpalteMax = .Cells(lngZeile1, .Columns.Count).End(xlToLeft).Column
        ReDim arrBreite(1 To lngSpalteMax)
        'Spalten Breiten ermitteln und in Array speichern
        For lngSpalte = 1 To lngSpalteMax
          For lngZ = lngZeile1 To lngZeileE
            If LCase(.Cells(lngZ, lngSpalte).Text) = "remarks/comment" Then
              arrBreite(lngSpalte) = 999
              Exit For
            Else
            If Len(.Cells(lngZ, lngSpalte).Text) > arrBreite(lngSpalte) Then
              arrBreite(lngSpalte) = Len(.Cells(lngZ, lngSpalte).Text)
            End If
            End If
          Next
        Next
        'Spalte mit Titel mit "_A" ermitteln
        lngSpalte_mit_A = 999
        For lngSpalte = 1 To lngSpalteMax
            If InStr(.Cells(lngZeile1, lngSpalte).Text, "_A") > 0 Then
              lngSpalte_mit_A = lngSpalte
              Exit For
            End If
        Next
        'Zeilen des Tabellenbereichs einlesen
        For lngZ = lngZeile1 To lngZeileE
          'Wert aus 1. Spalte einlesen
          intAnzahlZeichen = arrBreite(1)
          strText = LeerzeichenAuffuellen(strText:=.Cells(lngZ, 1).Text, _
              intZeichen:=intAnzahlZeichen, bolLinks:=IsNumeric(.Cells(lngZ, 1).Text))
          'Werte aus restlichen Spalten einlesen
          For lngSpalte = 2 To lngSpalteMax
            If arrBreite(lngSpalte) <> 999 Then
              intAnzahlZeichen = arrBreite(lngSpalte)
            Else
              intAnzahlZeichen = Len(wks.Cells(lngZ, lngSpalte).Text)
            End If
            bolLinks = IsNumeric(.Cells(lngZeile, 1).Text)
            Select Case lngSpalte
              Case 2, lngSpalte_mit_A
                strText = strText & strSep1 _
                  & LeerzeichenAuffuellen(strText:=wks.Cells(lngZ, _
                  lngSpalte).Text, intZeichen:=intAnzahlZeichen, bolLinks:=bolLinks)
              Case Else
                strText = strText & strSep _
                  & LeerzeichenAuffuellen(strText:=wks.Cells(lngZ, _
                  lngSpalte).Text, intZeichen:=intAnzahlZeichen, bolLinks:=bolLinks)
            End Select
          Next
          'Zeile in Text-Datei schreiben
            If strTextdaten = "" Then
              strTextdaten = strText
            Else
              strTextdaten = strTextdaten & vbCr & strText
            End If
          
          If lngZ = lngZeile1 Then
            'Zeile mit "-" nach 1. Zeile der Tabelle einfügen
            'Gesamt-Anzahl Zeichen in den Spalten ermitteln
            intI = 0
            intI = arrBreite(1)
            For lngSpalte = 2 To lngSpalteMax
              If arrBreite(lngSpalte) = 999 Then
                intI = intI + Len(strSep) + Len("remarks/comment")
              Else
                intI = intI + Len(strSep) + arrBreite(lngSpalte)
              End If
            Next
            'zusätzliche Zeichen für Sonderlänge 1. Trennzeichen und vor "_A" in tabelle
            intI = intI + (Len(strSep1) - Len(strSep))
            If lngSpalte_mit_A <> 999 Then
              intI = intI + (Len(strSep1) - Len(strSep))
            End If
            strText = String(intI, "-")
            If strTextdaten = "" Then
              strTextdaten = strText
            Else
              strTextdaten = strTextdaten & vbCr & strText
            End If
          End If
        Next
        lngZeile = lngZeileE
      Next
      'Text-String in die Zwischenablage übertragen
      objData.settext strTextdaten
      objData.putinclipboard
      MsgBox "Textdaten sind in Zwischenablage"
    End With
Fehler:
  If Err.Number <> 0 Then
    Select Case Err.Number
      Case 999 '
      
      Case Else
        MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
    End Select
  End If
End Sub




  

Betrifft: Microsoft Forms x.x Object Library ???? von: Eddie
Geschrieben am: 23.10.2008 07:52:23

Guten Morgen Franz...

Leider gibt es bei mir KEIN "Microsoft Forms x.x Object Library" -- habe Excel 2003 .... wie kann man denn das Problem lösen ???

gruß Eddie


  

Betrifft: Kommando Zurück :-).. trotzdemsind Probleme.. von: Eddie
Geschrieben am: 23.10.2008 08:07:53

Guten morgend ie 2te...

das Problem mit der Forms Object Libary wurde mit "Userform einfügen und dann wieder entfernen" gelöst.

Nun aber ein anderen Problem ... den Code aus der Zwischenablage will ich NICHT in Word reinkopieren ... sondern in ein anderes Programm .. nur leider fügt er mir dabei nur die erste Zeile ein ... wenn ich aber den Umweg über einen Texteditor gehe ... es Dort einfüge(das klappt merkwürdigerweise ohne Probleme) und dann es dort rauskopiere und in mein Programm einfüge .. dann wird auch ALLES eingefügt .... gibt es dafür eine Logic ???

wünsch dann erstmal einen schönen Tag

gruß der Eddie


  

Betrifft: Und es ist noch etwas wg des Problems .... von: Eddie
Geschrieben am: 23.10.2008 09:05:57

... undzwar ... vielleicht ist es am einfachsten .. .wenn man die Datenspeicherung in eine _ Textdatei macht (wie vorher) .. diese aber OHNE abfrage des Speicherortes und des Dateinamens ...

C:\Temp\Testreport.txt

<- Dieses soll der Speicherort/Dateiname IMMER sein .......
... nachdem nun der Report gespeichert wurde... soll Excel diese TXT Datei öffnen ... .. STRG+A ... STRG+C und dann wieder schließen .. und eine Message BOX kommt das alles erfolgt ist ...

Würde das denn realisierbar sein ???

DaNKE und Gruß

der Eddie


  

Betrifft: AW: Und es ist noch etwas wg des Problems .... von: fcs
Geschrieben am: 23.10.2008 09:56:31

Hallo Eddie,


warum die direkte Übernahme aus der Zischenablage in das andere Programm nicht funktioniert weiss ich nicht genau. Wahrschscheinlich liegt es an dem Zeichen, das vom Code als Zeilenschaltung eingefügt wird.
Ersetze in den Prozeduren vbCr durch vbCrLf, dann klappt es wahrscheinlich.

Du muss die folgende Zeile in der vorherigen Version anpassen, um in eine Datei mit festem Namen zu schreiben.

  varDatei = Application.GetSaveAsFilename(InitialFileName:="TestExport.txt", _
    Filefilter:="Text(*.txt), *.txt", _
    Title:="Bitte Namen für Export-Datei wählen oder eingeben und speichern")



ändern in

  varDatei = "C:\Temp\Testreport.txt"

und zusätzlich vor der Zeile
Fehler:

die Meldung einbauen
   MsgBox "Daten wurden in Textdatei übertragen."


Gruß
Franz


  

Betrifft: AW: Und es ist noch etwas wg des Problems .... von: Eddie
Geschrieben am: 23.10.2008 10:16:37

Hallo Franz.. die Änderung von vbCr zu vbCrLf hat geklappt ...
Danke und Gruß
der EDDIE


  

Betrifft: Habe da noch nen WUNSCH :.-) von: Eddie
Geschrieben am: 22.10.2008 15:17:22

Hallo Franz ....

ich würde gerne noch eine Erweiterung bzw. Reduzierung der beiden Funktionen ...

undzwar sollen die exportierten daten nicht mehr in eine Textdatei gespeichert werden, sondern gleich in die Zwischenablage ... so das es auch keine Abfrage wg. des Dokuments und des Speicherortes geben soll .......

Also nochmals :-) ... textdataeispeicherung soll durch Zwischenablage ersetzt werden


danke und gruß der EDDIE