2017-05-16 5 views
1

Ich habe ein Makro, das gut auf meinem PC funktioniert, aber nicht in meinem Freund PC, die ich noch nie zuvor gesehen habe.VBA: Kopieren Sie alle Daten in eine andere Arbeitsmappe

Der Fehler kommt aus diesem Teil:

... 
Workbooks("GOP_Flow_" + Format(DateAdd("m", -1, Date), "yyyy") + Format(DateAdd("m", -1, Date), "mm")).Worksheets(1).UsedRange.Copy 
main.Worksheets(2).Range("A1").PasteSpecial (xlPasteValues) 
... 

Es gibt einen Laufzeitfehler 9: „Index out of range“ auf der Kopie Linie.
- Wie könnte diese Art von Sache passieren, da wir die gleiche Version von Excel verwenden?
- Gibt es eine alternative Möglichkeit, dies zu tun?

Vielen Dank im Voraus.

+2

Index außerhalb des Bereichs bedeutet, dass Sie versuchen, entweder aus einem oder in einen nicht definierten Bereich zu kopieren. Entweder gibt es keine "Hauptarbeitsmappe", die im Skript deklariert wurde, kein Arbeitsblatt mit Index 2, sie kann die Arbeitsmappe mit diesem bestimmten Datum im Namen nicht finden oder das Arbeitsblatt mit Index 1 in dieser Arbeitsmappe nicht finden. Zum Beispiel: ActiveSheet.Range ("A0"). Wert = "etwas" wird auch diesen Fehler erzeugen. –

+0

Danke Rik. Deine Hilfe ist beliebt. – Francis

Antwort

1

Nur eine Vermutung ... Sie haben verschiedene Optionen in Ihren Ordneroptionen zum Anzeigen von Dateinamen.

Auf Ihrem PC ist die Option Hide extensions for know file types aktiviert, daher ist die Dateierweiterung im Dateinamen nicht sichtbar. Daher funktioniert Workbooks("GOP_Flow_201704) für Sie ohne die Dateierweiterung.

auf Ihrem Freund PC wird die Option nicht aktiviert, so dass der Erweiterungsteil von Arbeitsmappe Namen macht, so etwas wie "GOP_Flow_201704.xlsx", so dass Sie die Erweiterung auf die Namen hinzufügen müssen ...

Workbooks("GOP_Flow_" & _ 
Format(DateAdd("m", -1, Date), "yyyy") & _ 
Format(DateAdd("m", -1, Date), "mm") & ".xlsx")... 
'          ^^^^^^^ 

Wie Eine Lösung, die Dateiendung in den Namen setzt, funktioniert in beiden Fällen.

p.s. Übrigens, verwenden Sie nicht + für String-Verkettung, verwenden Sie stattdessen &.

+1

Danke ASH! Genau das ist das Problem. – Francis

+0

@Francis Sie sind willkommen, froh zu wissen, dass es geholfen hat. –

Verwandte Themen