Office: VBA- Verbesserung bei Dateiwechsel

Helfe beim Thema VBA- Verbesserung bei Dateiwechsel in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe einen VBA Code, in dem ich immer zwischen Zwei Dateien wechseln muss. Meine Frage: Kann ich es umgehen immer "Thisworkbook.activate"... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Marius82, 24. Januar 2013.

  1. Marius82 Erfahrener User

    VBA- Verbesserung bei Dateiwechsel


    Hallo,

    ich habe einen VBA Code, in dem ich immer zwischen Zwei Dateien wechseln muss. Meine Frage: Kann ich es umgehen immer "Thisworkbook.activate" bzw das andere Workbook zu aktivieren?
    In meinem Code wechseln die beiden Dateien sich immer ab- ich denke mal das ist nicht gerade sinnvoll. Hat jemand einen Verbesserungsvorschlag?
    Irgendwie mit "SET=" Workbook festlegen oder so?

    Code:
    Sub Formatx(strDatei As String)
      
      Dim lngLastRow As Long, lngZeile As Long, strSuch As String, rngSuche As Range
        Workbooks.OpenText Filename:=OeffnenPfadK119 & strDatei & ".csv", Local:=True, DataType:=xlDelimited, Semicolon:=True
                
        With Worksheets(strDatei)
            lngLastRow = .Cells(1048576, 1).End(xlUp).Row
            For lngZeile = lngLastRow To 4 Step -1
                strSuch = .Cells(lngZeile, 3)
                If strSuch <> "" Then
                    ThisWorkbook.Activate
                    With Worksheets("Ausnahme")
                        Set rngSuche = .Columns(1).Find(strSuch, lookat:=xlWhole)
                        If Not rngSuche Is Nothing Then
                            Windows(strDatei & ".csv").Activate
                            Rows(lngZeile).EntireRow.Delete
                        End If
                    End With
                End If
            Next lngZeile
        End With
    End Sub
    
    
    Ich benutze Excel 2012

    Danke
     
    Marius82, 24. Januar 2013
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi Marius,

    versuche es mal nach diesem Prinzip:

    Code:
    Sub Formatx(strDatei As String)
        Dim lngLastRow As Long, lngZeile As Long, strSuch As String, rngSuche As Range
        Workbooks.OpenText Filename:=OeffnenPfadK119 & strDatei & ".csv", Local:=True, DataType:=xlDelimited, Semicolon:=True
    '    With Worksheets(strDatei)    '<== ????
        With Workbooks(strDatei & ".csv").Worksheets("TabName")  '<== Tabellenname anpassen
            lngLastRow = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
            For lngZeile = lngLastRow To 4 Step -1
                strSuch = .Cells(lngZeile, 3)
                If strSuch <> "" Then
                    With ThisWorkbook.Worksheets("Ausnahme")
                        Set rngSuche = .Columns(1).Find(strSuch, lookat:=xlWhole)
                        If Not rngSuche Is Nothing Then
                            Workbooks(strDatei & ".csv").Worksheets("TabName").Rows(lngZeile).EntireRow.Delete '<== Tabellenname anpassen
                        End If
                    End With
                End If
            Next lngZeile
        End With
    End Sub
    
    Leider weiß ich nicht, was auf deiner Variablen strDatei steht und wie der Name des Tabellenblattes in der csv-Datei ist, sodass ich den Code nur prinzipiell angeben konnte. auf jeden Fall musst du diech auf das Wokbook und das Tabellenblatt beziehen.

    Bis später,
    Karin
     
    Beverly, 24. Januar 2013
    #2
  3. Marius82 Erfahrener User
    Danke, das kklappt schon mal sehr gut!
    Wenn ich jetzt aber an dem Code weiter arbeite, und díe verschiedenen Daten öfters aufrufen muss, will ich nicht immer so viel schreiben wie zB.
    Code:
    With Workbooks(strDatei & ".csv").Worksheets(strDatei)
    Kann ich eine Variable einsetzen im Sinne von:

    Code:
    Dim wbDatei as Workbook, wsTabelle as worksheet
    With wbDatei.wsTabelle
    
    Bzw kann ich das in einer Variablen dann unterbringen? Das ich dann nur noch schreiben würde:
    Code:
    With wbwsTest
    Oder bin ich ganz falsch?

    Danke
     
    Marius82, 25. Januar 2013
    #3
  4. Beverly
    Beverly Erfahrener User

    VBA- Verbesserung bei Dateiwechsel

    Hi Marius,

    eine Arbeitsmappe und ein Tabellenblatt sind Objekte, die man mittels Set-Befehl der betreffenden Variablen zuweist:

    Code:
       Dim wsTabelle As Worksheet
       Set wsTabelle = Workbooks(strDatei & ".csv").Worksheets(strDatei)
       With wsTabelle
           '....
       End With
       Set wsTabelle = Nothing
    
    Wenn du allerdings das Mappe-Objekt auch getrennt vom Tabellenblatt-Objekt verwenden willst, dann so:

    Code:
       Dim wbDatei As Workbook, wsTabelle As Worksheet
       Set wbDatei = Workbooks(strDatei & ".csv")
       Set wsTabelle = wbDatei.Worksheets(strDatei)
       With wbDatei
           '...
       End With
       With wsTabelle
           '...
       End With
       Set wbDatei = Nothing
       Set wsTabelle = Nothing
    
    Am Schluss der Prozedur sollte man alle mit dem Set-Befehl zugewiesenen Variablen wieder leeren, auch wenn es sich um lokale Variablen handelt, also Variablen die innerhalb der Prozedur deklariert wurden.

    Bis später,
    Karin
     
    Beverly, 25. Januar 2013
    #4
  5. Marius82 Erfahrener User
    Vielen Dank
     
    Marius82, 25. Januar 2013
    #5
  6. Marius82 Erfahrener User
    Hallo nochmal,

    ich habe ein Problem bei dem wechseln zwischen worksheets.

    Code:
    Sub Eingabe1()
    Dim wsEingabe As Worksheet, wsBerechnung As Worksheet
      Set wsEingabe = Worksheets("Eingabe")
      Set wsBerechnung = Worksheets("Berechnung")
          
      'Eingaben kopieren
      With wsEingabe
        .Range("A8:G5000").Copy
      End With
      'Eingaben in Berechnungsblatt einfügen
      With wsBerechnung
        .Cells(1048576, 1).End(xlUp).Offset(1, 0).Select
        ActiveSheet.Paste
      End With
      
      Set wsEingabe = Nothing
      Set wsBerechnung = Nothing
    End Sub
    
    In der Zeile .Cells(1048576,1).End(xlUP).Offset(1,0).Select kommt immer folgende Fehlermeldung:

    "Die Select-Methode des Range Objekts konnte nicht ausgeführt werden."

    Was mache ich falsch?

    Danke
     
    Marius82, 29. Januar 2013
    #6
  7. Beverly
    Beverly Erfahrener User
    Hi,

    ich habe es jetzt nicht getestet, aber versuche es mal so:

    Code:
    Sub Eingabe1()
      Dim wsEingabe As Worksheet, wsBerechnung As Worksheet
      Dim lngErste As Long
      Set wsEingabe = Worksheets("Eingabe")
      Set wsBerechnung = Worksheets("Berechnung")
          
      With wsBerechnung
         ' erste freie Zeile in Spalte A ermitteln
         lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
         ' Eingaben kopieren und in die erste freie Zelle Spalte A einfügen
         wsEingabe.Range("A8:G5000").Copy .Cells(lngErste, 1)
       End With
      
      Set wsEingabe = Nothing
      Set wsBerechnung = Nothing
    End Sub
    
    Bis später,
    Karin
     
    Beverly, 29. Januar 2013
    #7
Thema:

VBA- Verbesserung bei Dateiwechsel

Die Seite wird geladen...
  1. VBA- Verbesserung bei Dateiwechsel - Similar Threads - VBA Verbesserung Dateiwechsel

  2. VBA in einer Zeile zu lang

    in Microsoft Excel Hilfe
    VBA in einer Zeile zu lang: Moin, mein VBA Code ist für eine Zeile zu lang. Kann mir einer helfen wie ich den auf 2 Zeilen aufteilen Kann? arrSchuhDaten = Array(Range("A6"), Range("F6"), Range("J6"), Range("A7"),...
  3. Listbox wird nicht breiter, Schriftgrösse ändert sich

    in Microsoft Excel Hilfe
    Listbox wird nicht breiter, Schriftgrösse ändert sich: Hallo, ich habe ein Formular dessen Breite ich mit der Maus ändern kann. Im Formular habe ich einen Rahmen und darin eine Listbox deren Breite an die Formularbreite angepasst wird....
  4. Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch

    in Microsoft Excel Hilfe
    Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch: Hallo zusammen, erstmal danke für all die Tipps und Kniffe, die ich ohne eigenen Thread gefunden und gelernt habe. Leider finde ich mein Thema nirgendwo... Aktuell habe ich zwei Spalten mit...
  5. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  6. Bilder über VBA Größe und DPI ändern für Webshop

    in Microsoft Excel Hilfe
    Bilder über VBA Größe und DPI ändern für Webshop: Hallo Excel Spezialisten, Ich habe mir eine recht aufwendige Tabelle gebastelt, aus der ich Daten für meinen Webshop generiere und in einer .csv bereitstelle. Es werden neue Preislisten...
  7. VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen

    in Microsoft Word Hilfe
    VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen: Hallo zusammen, ich habe eine Word-Vorlage mit Platzhaltern, in die ich mit VBA Daten aus einer Excel-Datei einfüge (in eine Excel-Zeile schreibe ich alle Daten für ein neues Word-Dokument). So...
  8. Erstellung eines Dynamischen Kalenders (ggf. VBA)

    in Microsoft Word Hilfe
    Erstellung eines Dynamischen Kalenders (ggf. VBA): Guten Morgen an Alle, ich hoffe, es geht euch soweit gut :) Ich wende mich heute an euch, weil ich gerade vollkommen verzweifle und irgendwie so ganz und garnicht weiterkomme und irgendwie...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden