Microsoft Excel

Herbers Excel/VBA-Archiv

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

Hilfe zu Makro...

Betrifft: Hilfe zu Makro...
von: Harti
Geschrieben am: 21.04.2003 - 14:27:05

Ich muss leider mein Thema noch einmal aufgreifen. Habe zwar eine Antwort bekommen, die Lösung funktioniert aber nicht richtig.

Aber erst einmal zum eigentlichen Hintergrund:

Und zwar habe ich in einer Datei in den Feldern E11 bis E316 und G11 bis G316 Werte stehen. Diese möchte ich jetzt mittels Makro in eine andere Datei kopieren, nennen wir sie einfach datei2.xls. Das Makro soll aber vorher abfragen, in welches Tabellenblatt die Werte (inklusive Formatierung der Zellen) kopiert werden sollen. Dann gebe ich etwa tabelle1 ein und die Werte werden dann in die Tabelle1 kopiert und zwar sollen die Werte stets in die Felder B11 bis B316 und D11 bis D316 kopiert werden.

So...dazu habe ich folgende Lösung (die leider nicht funktioniert) erhalten. Wer kann helfen...ist wirklich wichtig und dringend:

Public Sub CopyColumns()
'kopiert 2 Bereiche in ausgewählte Tabelle
Const strOutFile = "F:\projekte\dunst\datei2.xls"
Dim rngInput1 As Range 'Input-Spalte 1
Dim rngInput2 As Range 'Input-Spalte 2
Dim rngOutput1 As Range 'Output-Spalte 1
Dim rngOutput2 As Range 'Output-Spalte 2
Dim wbkOutput As Workbook 'Output-File
Dim shtOutput As Worksheet 'Output-Tabelle
Dim strSheet As String 'Tabellen-Name

strSheet = InputBox("Tabellenblatt:") 'Tabellen-Namen abfrage

Set rngInput1 = [E11:E316] 'Input-Spalte 1 zuweisen
Set rngInput2 = [G11:G316] 'Input-Spalte 2 zuweisen
Set wbkOutput = Workbooks.Open(strOutFile) 'Output-File öffnen
On Error GoTo errhand
Set shtOutput = wbkOutput.Worksheets(strSheet) 'Output-Tabelle zuweisen
On Error GoTo 0
Set rngOutput1 = shtOutput.[B11:B316] 'Output-Spalte 1 zuweisen
Set rngOutput2 = shtOutput.[D11:D316] 'Output-Spalte 2 zuweisen

rngInput1.Copy 'Spalte 1 kopieren
rngOutput1.PasteSpecial xlPasteValues 'als Wert einfügen
rngInput2.Copy 'Spalte 2 kopieren
rngOutput2.PasteSpecial xlPasteValues 'als Wert einfügen
Application.CutCopyMode = False 'Kopiermodus beenden

shtOutput.Activate 'Output-Tabelle anzeigen
[A1].Activate 'go home

Exit Sub




  

Re: Hilfe zu Makro...
von: ChrisL
Geschrieben am: 21.04.2003 - 16:47:43

Hallo Harti

Was funktioniert denn bei deinem Code nicht (Zeile und Fehlermeldung)?

Jedenfalls denke ich, dass es auch einfacher geht. Versuch mal nachstehendes Beispiel.

Option Explicit

Sub Makro1()
On Error GoTo errorhandler

Workbooks.Open Filename:="F:\projekte\dunst\datei2.xls"

With Workbooks("datei2.xls").Sheets("Tabelle1")
.Range("B11") = Workbooks("datei1.xls").Sheets("Tabelle1").Range("E11")
.Range("D11") = Workbooks("datei1.xls").Sheets("Tabelle1").Range("G11")
.Range("B316") = Workbooks("datei1.xls").Sheets("Tabelle1").Range("E316")
.Range("D316") = Workbooks("datei1.xls").Sheets("Tabelle1").Range("G316")
End With

errorhandler:
End Sub


Gruss
Chris


  

Re: Hilfe zu Makro...
von: andre
Geschrieben am: 21.04.2003 - 16:51:42

hallo harti,
xp haben noch nicht viele, daher musst du bestimmt warten. habe auch keins, aber beschreibe mal den fehler, vielleicht bekommt man es "theoretisch" hin.
gruss andre

  

Re: Hilfe zu Makro...
von: Harti
Geschrieben am: 21.04.2003 - 17:10:14

Fehlermeldung lautet:

Die Fehler beim Kompilieren.
Sprungmarke nicht definiert!

Wichtig bei dem ganzen ist, dass vorher die Abfrage erscheint, bei der ich den Tabellennamen der Datei datei2.xls eingeben kann.

Die Datei hat nämlich mehrere Tabellenblätter und ich muss die Auswahl treffen


  

Re: Hilfe zu Makro...
von: ChrisL
Geschrieben am: 21.04.2003 - 17:11:17

Hallo Harti

Hab jetzt mal genauer gelesen... :-)

Der erste Vorschlag war schon nicht schlecht... noch ein paar kleine Änderungen.

Option Explicit

Private Sub CommandButton1_Click()
'kopiert 2 Bereiche in ausgewählte Tabelle
Const strOutFile = "C:\Dokumente und Einstellungen\Administrator\Desktop\datei2.xls"
Dim rngInput1 As Range 'Input-Spalte 1
Dim rngInput2 As Range 'Input-Spalte 2
Dim rngOutput1 As Range 'Output-Spalte 1
Dim rngOutput2 As Range 'Output-Spalte 2
Dim wbkOutput As Workbook 'Output-File
Dim shtOutput As Worksheet 'Output-Tabelle
Dim strSheet As String 'Tabellen-Name

strSheet = InputBox("Tabellenblatt:") 'Tabellen-Namen abfrage

Set rngInput1 = [E11:E316] 'Input-Spalte 1 zuweisen
Set rngInput2 = [G11:G316] 'Input-Spalte 2 zuweisen
Set wbkOutput = Workbooks.Open(strOutFile) 'Output-File öffnen
On Error GoTo errhandler
Set shtOutput = wbkOutput.Worksheets(strSheet) 'Output-Tabelle zuweisen
On Error GoTo 0
Set rngOutput1 = shtOutput.[B11:B316] 'Output-Spalte 1 zuweisen
Set rngOutput2 = shtOutput.[D11:D316] 'Output-Spalte 2 zuweisen

rngInput1.Copy 'Spalte 1 kopieren
rngOutput1.PasteSpecial xlAll 'als Wert einfügen
rngInput2.Copy 'Spalte 2 kopieren
rngOutput2.PasteSpecial xlAll 'als Wert einfügen
Application.CutCopyMode = False 'Kopiermodus beenden

shtOutput.Activate
shtOutput.Range("A1").Select 'go home

errhandler:
End Sub


Gruss
Chris

  

Re: Hilfe zu Makro...
von: andre
Geschrieben am: 21.04.2003 - 17:15:49

hallo harti,
chris hat's ja gerade geschrieben:
errhandler:
hat bei dir gefehlt
gruss andre

  

Re: Hilfe zu Makro...
von: Harti
Geschrieben am: 21.04.2003 - 17:52:55

Hat wunderbar geklappt....vielen Dank!

Eine Frage noch: Wie muss ich die Zeile

Const strOutFile = "C:\Dokumente und Einstellungen\Administrator\Desktop\datei2.xls"

ändern, damit das Makro funktioniert, egal in welchem Ordner die Datei datei2.xls steht? Beide Dateien sind stets im selben Ordner...

Harti

  

Re: Hilfe zu Makro...
von: Harti
Geschrieben am: 21.04.2003 - 17:58:58

Noch eine Frage (ich weiß, heute bin ich echt unverschähmt).

Was bedeutet am Anfang des Makros
Option Explicit

Private Sub


Habe Option Explicit und Private weggelassen. Makro funktioniert trotzdem. Brauche ich die beiden Einträge unbedingt?

Harti

  

Re: Hilfe zu Makro...
von: andre
Geschrieben am: 21.04.2003 - 18:31:48

hallo harti,
1. o..e.. du musst alle variablen definieren, z.B. mit dim
2. makro ist z.b. bei extra-makro-ausführen verborgen
gruss andre

  

Re: Hilfe zu Makro...
von: andre
Geschrieben am: 21.04.2003 - 18:37:07

hallo harti,
( den pfad mit activeworkbook.path feststellen )
Const strOutFile = activeworkbook.path & "\datei2.xls"
gruss andre

  

Re: Hilfe zu Makro...
von: ChrisL
Geschrieben am: 21.04.2003 - 18:42:00

Hallo Harti

Wenn du wie folgt abänderst müsste es funken...

Dim strOutFile As String

strOutFile = ThisWorkbook.Path & "\datei2.xls"
Set wbkOutput = Workbooks.Open(strOutFile) 'Output-File öffnen

statt...
Const strOutFile = "C:\Dokumente und Einstellungen\Administrator\Desktop\datei2.xls"


Und zur Frage betr. Option Explicit. Zwingend brauchen ist nicht der Fall, aber schau mal hier...
https://www.herber.de/forum/archiv/228to232/t230670.htm

Gruss
Chris

  

Re: Hilfe zu Makro...
von: ChrisL
Geschrieben am: 21.04.2003 - 18:45:41

Hallo Andre

Glaube nicht. Bin kein Profi, aber Const steht vermutlich für konstant, was es eben nicht ist. Jedenfalls hat es bei mir nicht funktioniert.

Gruss
Chris

  

Re: Hilfe zu Makro...
von: andre
Geschrieben am: 21.04.2003 - 19:23:46

...stimmt. das const muss in dem fall weg.
gruss andre