Microsoft Excel

Herbers Excel/VBA-Archiv

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

Fixes Makro durch Variablen verbessern

Betrifft: Fixes Makro durch Variablen verbessern von: Simon
Geschrieben am: 07.09.2020 16:50:17

Hallo zusammen,


ich habe relativ mühsam, mit meinen sehr übersichtlichen Kenntnissen folgendes Makro gebastelt.

Es kopiert werde aus dem ausgewählten Tabellenblatt in eine andere Arbeitsmappe um diesen dann wo abspeichern zu können.


Zwei Dinge würde ich gerne mit eurer Hilfe verbessern:

1) Dateiname als Variable, am besten über Textbox ändern

2) Er soll bitte die Werte aus allen Tabellenblättern (Bereiche bleiben die selben), in die Upload Datei kopieren.


https://www.herber.de/bbs/user/140100.xlsm

Vielen Dank vorab.

Betrifft: AW: Fixes Makro durch Variablen verbessern
von: Werner
Geschrieben am: 07.09.2020 17:56:04

Hallo,

1. eine leere Beispielmappe macht mal so richtig viel Sinn
2. ist dieser Bereich Range("jl7:ki125").Select richtig oder schreibfehler?

Gruß Werner

Betrifft: AW: Fixes Makro durch Variablen verbessern
von: Simon
Geschrieben am: 08.09.2020 07:59:09

Hallo,

zu 1. die Mappe befüllt sich immer mit den Werten aus verschiedenen Dateien, die hier jetzt zum _ Beispiel über den Befehl
"Windows("Sonstige.xlsx").Activate"
angesteuert wird. Bis jetzt ist mein Vorgenen den Dateinamen "Sonstige" durch Suchen und Ersetzen auszustauschen, die Idee wäre hier flexibel zu arbeiten. Bringt es tatsächlich in diesem Fall einen so großen Mehrwert eine Beispieldatei hochzuladen? Denn es ist mir nur durch das herauslöschen einiger Monate und Zeilen möglich auf die vorgeschriebene größe zu kommen, so wird der eigentlich Zweck der Datei auch nicht besser dargestellt.

2. Nein, die zu kopierenden Werte kommen erst weit "hinten" in der auszuwählenden Blätter.

Betrifft: AW: Fixes Makro durch Variablen verbessern
von: Werner
Geschrieben am: 08.09.2020 09:35:02

Hallo,

meine Frage hast du nicht wirklich beantwortet.
Alle "Kopierbereiche" gehen jeweils von Zeile 7 bis Zeile 125 und sind jeweils 24 Spalten breit.
Nur dein "erster Kopierbereich" weicht davon ab.

Teste mal:
Option Explicit

Sub Kopieren()
Dim strQuelle As String, ws As Worksheet
Dim loZeile As Long, i As Long

Application.ScreenUpdating = False

strQuelle = InputBox("Bitte Name der Quelldatei angeben:", "Kopieren aus Datei")

If Not strQuelle = vbNullString Then
    If InStr(strQuelle, ".") = 0 Then strQuelle = strQuelle & ".xlsx"
    For Each ws In Workbooks(strQuelle).Worksheets
        With ws
            Range("J17:KI125").Copy
            With ThisWorkbook.Worksheets("Upload")
                loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
                If loZeile < 3 Then loZeile = 3
                .Range("A" & loZeile).PasteSpecial Paste:=xlPasteValues
                loZeile = loZeile + 150
            End With
            For i = 296 To 536 Step 24
                Cells(17, i).Resize(109, 24).Copy
                ThisWorkbook.Worksheets("Upload").Range("A" & loZeile).PasteSpecial _
                Paste:=xlPasteValues
                loZeile = loZeile + 150
            Next i
        End With
    Next ws
End If

Application.CutCopyMode = False
End Sub
Gruß Werner

Betrifft: AW: Fixes Makro durch Variablen verbessern
von: Simon
Geschrieben am: 08.09.2020 13:01:51

Danke, das hilft mir!

Betrifft: zwei Fehler im Code
von: Werner
Geschrieben am: 08.09.2020 13:06:57

Hallo,

hier
Range("J17:KI125").Copy
Cells(17, i).Resize(109, 24).Copy

fehlt jeweils ein Punkt vor dem Range-Objekt
.Range("J17:KI125").Copy
.Cells(17, i).Resize(109, 24).Copy
Gruß Werner

Beiträge aus dem Excel-Forum zum Thema "Fixes Makro durch Variablen verbessern"