Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Arbeiten mit 2 Workbooks

Arbeiten mit 2 Workbooks
30.05.2022 20:26:59
Andreas
Hallo,
folgender Code läuft- aber es gibt Fehleintragungen bzw. Fehler, wenn ich das Makro nicht aus dem Worksheet "DRUCKMASKE" im Worbooks "BEARBEITEN" starte.
Vieleicht müsste hier etwas mit Variable in der Zuordnung der Datein rein? Problem hierbei die Aktivation einer anderen Datei- "Workbooks.Open Filename:="D:\ABLAGE\LISTE.xlsm"
dort wird eine Identnummer erstellt und gespeichert. Diese Nummer wird wieder ins Worbooks "BEARBEITEN" ins Worksheet "DRUCKMASKE" eingetragen.
Mir wäre es sicherer, wenn ich das Makro auch aus anderen Tabellenblätter starten kann, aber die Einfügedaten trotzdem ins richtige Blatt kommen.


Option Explicit
Sub Listen_Nr_Vergabe()
Dim iClick As Integer
iClick = MsgBox( _
prompt:="Listen Nummer Vergabe!", _
Buttons:=vbOKOnly)
Workbooks.Open Filename:="D:\ABLAGE\LISTE.xlsm"
Application.CutCopyMode = False         'Zwischenspeicher löschen
Dim Zeile As Long
Zeile = Range("O65536").End(xlUp).Row
MsgBox "Letzter  Eintrag ist in Zeile Nr. " & Zeile
Windows("BEARBEITEN.xlsm").Activate
Range("AC28").Select
Application.CutCopyMode = False
Selection.Copy
Windows("LISTEN.xlsm").Activate
Application.Goto Range("O65536").End(xlUp).Offset(1, 0)
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.Goto Range("O65536").End(xlUp).Offset(0, -1)
Application.CutCopyMode = False
Selection.Copy
Windows("BEARBEITEN.xlsm").Activate
Range("Y35").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("W35:Z35").Select
Application.CutCopyMode = False
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Windows("LISTEN.xlsm").Activate
Application.Goto Range("O65536").End(xlUp).Offset(1, -1)
Windows("LISTEN.xlsm").Activate
Application.CutCopyMode = False         'Zwischenspeicher löschen
ActiveWorkbook.Close True
End Sub
Gruß Andreas

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Korrekte Referenzierung
30.05.2022 20:47:17
{Boris}
Hi,
ein Zellbereich wird grundsätzlich korrekt und eindeutig angesprochen durch Angabe von Dateiname, Blattname und Zellreferenz.
Workbooks("Mappenname").Worksheets("Blattname").Range(...)
Damit solltest Du das Makro aus jedem Blatt starten können.
Die WIndows-Ansprache ist dann nicht mehr nötig.
VG, Boris
AW: Arbeiten mit 2 Workbooks
30.05.2022 23:07:27
Rudi
Hallo,
du öffnest Workbooks("Liste.xlsm") und aktivierst Windows("ListeN.xlsm") ?
Wie Boris schon sagte: Korrekte Referenzierung ist das A&O.
Gruß
Rudi
sähe bei mir ...
30.05.2022 23:30:58
Rudi
...etwa so aus

Sub Listen_Nr_Vergabe()
Dim iClick As Integer, Zeile As Long
Dim wksLISTE As Worksheet, wksDRUCKMASKE As Worksheet
Set wksDRUCKMASKE = ThisWorkbook.Worksheets("Druckmaske")
iClick = MsgBox( _
prompt:="Listen Nummer Vergabe!", _
Buttons:=vbOKOnly)
Set wksLISTE = Workbooks.Open(Filename:="D:\ABLAGE\LISTE.xlsm").Sheets(1)
Zeile = wksLISTE.Range("O65536").End(xlUp).Row
MsgBox "Letzter  Eintrag ist in Zeile Nr. " & Zeile
wksDRUCKMASKE.Range("AC28").Copy
With wksLISTE.Range("O65536").End(xlUp).Offset(1, 0)
.PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
.Offset(0, -1).Copy
End With
With wksDRUCKMASKE
.Range("Y35").PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
With .Range("W35:Z35")
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With .Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End With
End With
wksLISTE.Parent.Close True
End Sub
Gruß
Rudi
Anzeige
AW: sähe bei mir ...Automatisierungsfehler
31.05.2022 06:23:14
Andreas
Danke Rudi- das läuft sauber durch.
Es bleibt nur am Ende hängen- mit Automatisierungsfehler.
Wahrscheinlich geht es um Schließen des wksLISTE mit Speichern ohne Nachfrage- so sollte es eigenlich sein. Ich befasse mich mal damit.
Ist es evtl.sinnvol,l vor Beginn und am Ende des Makros den Zwischenspeicher extra zu löschen?

wksLISTE.Parent.Close True
Gruß Andreas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige