So funktioniert JustAnswer:
  • Fragen Sie einen Experten
    Tausende Experten in über 200 Kategorien.
  • Erhalten Sie eine professionelle Antwort
    Per E-Mail oder sofortiger Benachrichtigung, während Sie auf unserer Website warten.
    Stellen Sie ggf. weitere Anschlussfragen.
  • 100%ige Zufriedenheit garantiert
    Bewerten Sie die erhaltene Antwort.
Stellen Sie Ihre Frage an Tronic.
Tronic
Tronic, IT-Specialist
Kategorie: Computer
Zufriedene Kunden: 2398
Erfahrung:  Elektroniker und EDV-Service
31581453
Geben Sie Ihre Frage in der Kategorie Computer hier ein
Tronic ist jetzt online.

Beim Arbeiten mit Copy-Paste-Makros in andere Excel-Instanzen

Kundenfrage

Beim Arbeiten mit Copy-Paste-Makros in andere Excel-Instanzen kommt es häufig vor, dass die Zwischenablage noch leer ist, wenn das "Paste" erfolgen soll.

Gibts für dieses Problem eine bessere Lösung als der folgende Behelfscode:

'Copy/Paste so lange wiederholen, bis die erste Zelle den selben Wert enthält und mit dem selben Farbindex formatiert ist

While oExcel.Selection.Range("A1").Value Range(MeinBereich).Range("A1").Value _
Or oExcel.Selection.Range("A1").Interior.ColorIndex Range(MeinBereich).Range("A1").Interior.ColorIndex
Application.Wait Now() + TimeValue("00:00:01")
Range(MeinBereich).Copy
On Error Resume Next
oExcel.ActiveSheet.Paste
Wend

Siehe dazu auch: http://www.office-loesung.de/ftopic483222_0_0_asc.php
Gepostet: vor 5 Jahren.
Kategorie: Computer
Kunde: hat geantwortet vor 5 Jahren.
Erneut posten: Ich benötige immer noch Hilfe.
Experte:  tringler hat geantwortet vor 5 Jahren.
Sehr geehrter Fragesteller,

könnten Sie mir den Einsatzzweck ein wenig genauer erläutern oder/und mir eine Excelmappe mit dem Makro [email protected] senden?

Mit freundlichen Grüßen, Thomas Ringler
Kunde: hat geantwortet vor 5 Jahren.

Sehr geehrter Herr Ringler

 

Es geht um Copy-Paste ganz allgemein: Eine Steuerungsdatei öffnet eine Masterdatei, diese Datei macht eine Abfrage (z. B. Daten abfragen aus einem BusinessWarehouse) und dann wird das Ergebnis dieser Abfrage in eine neue Arbeitsmappe einer neuen Instanz kopiert.

 

Da es sich um xlsm-Dateien im neuen Office handelt, schicke ich Ihnen die beiden Dateien Steuerung und Master mit separatem E-Mail.

 

Freundliche Grüsse

Matthäus Blöchliger

Experte:  tringler hat geantwortet vor 5 Jahren.

Sehr geehrter Herr Blöchlinger,

welche Excel-Version verwenden Sie denn? Entweder stell ich mich grade etwas blöd an, aber dieser Code sollte doch lt. Ihrer Aussage nicht so wirklich funktionieren oder?

Unter Excel 2010 kann ich ihr Problem nicht nachstellen. Ich würde Ihnen prinzipiell empfehlen mit C# XXXXX arbeiten.

Viele Grüße, Thomas Ringler

'----------------------------------------------------------'

' Testbeispiel JustAnswer 2011-12-06 '

'----------------------------------------------------------'

Public Const MstPfd = 0, MstNme = MstPfd + 1, MstDgr = MstNme + 1, ExlPfd = MstDgr + 1, ExlNme = ExlPfd + 1, ExlSht = ExlNme + 1, ExlTle = ExlSht + 1

Option Explicit

Sub Make()

Dim oExcel As Object

Dim ColAry() As Object

Dim AryIdx As Integer

Dim PasteErrorCounter As Byte

Dim ActJhr As Integer, ActPde As Integer

PasteErrorCounter = 0

[A6].Select

ReDim ColAry(0)

Set ColAry(0) = ActiveCell.Offset(0, MstPfd)

For AryIdx = 1 To ExlTle

ReDim Preserve ColAry(UBound(ColAry) + 1)

Set ColAry(UBound(ColAry)) = ActiveCell.Offset(0, AryIdx)

Next

Set oExcel = CreateObject("Excel.Application")

oExcel.Visible = True

oExcel.Workbooks.Add

oExcel.ActiveCell = ColAry(ExlTle).Value

oExcel.ActiveCell.Font.Size = 12

oExcel.ActiveCell.Font.Bold = True

oExcel.ActiveCell.Offset(2, 0).Select

ActJhr = [Jhr]

ActPde = [Pde]

Application.Workbooks.Open ColAry(MstPfd) & "\" & ColAry(MstNme)

[Jhr].Value = ActJhr

[Pde].Value = ActPde

Range(Left(ColAry(MstDgr), InStr(ColAry(MstDgr), ",") - 1)).Copy

oExcel.ActiveSheet.Paste

oExcel.ActiveCell.Offset(oExcel.Selection.Rows.Count, 1 - oExcel.Selection.Range("A1").Column).Select

Range(Right(ColAry(MstDgr), Len(ColAry(MstDgr)) - InStr(ColAry(MstDgr), ","))).Copy

oExcel.ActiveSheet.Paste

Application.CutCopyMode = False

oExcel.Selection.Borders(xlEdgeLeft).ColorIndex = Range(Right(ColAry(MstDgr), Len(ColAry(MstDgr)) - InStr(ColAry(MstDgr), ","))).Borders(xlEdgeLeft).ColorIndex

oExcel.Selection.Borders(xlEdgeTop).ColorIndex = Range(Right(ColAry(MstDgr), Len(ColAry(MstDgr)) - InStr(ColAry(MstDgr), ","))).Borders(xlEdgeTop).ColorIndex

oExcel.Selection.Borders(xlEdgeBottom).ColorIndex = Range(Right(ColAry(MstDgr), Len(ColAry(MstDgr)) - InStr(ColAry(MstDgr), ","))).Borders(xlEdgeBottom).ColorIndex

oExcel.Selection.Borders(xlEdgeRight).ColorIndex = Range(Right(ColAry(MstDgr), Len(ColAry(MstDgr)) - InStr(ColAry(MstDgr), ","))).Borders(xlEdgeRight).ColorIndex

oExcel.ActiveCell.Offset(oExcel.Selection.Rows.Count + 1, 1 - oExcel.Selection.Range("A1").Column).Select

oExcel.Cells.Font.Name = "Arial"

oExcel.ActiveWindow.DisplayGridlines = False

oExcel.ActiveWorkbook.SaveAs Filename:=ColAry(ExlPfd) & "\" & ColAry(ExlNme)

Set oExcel = Nothing

ActiveWorkbook.Close

[E1].Value = PasteErrorCounter

End Sub

Kunde: hat geantwortet vor 5 Jahren.

Hallo Herr Ringler

 

Vielen Dank für die prompte Antwort.

 

Excel 2010 auf Windows 7. Mein geposteter Code ist ein schlechter Workaround für das Copy-Paste-Problem im neuen Office (siehe dazu auch http://www.office-loesung.de/ftopic483222_0_0_asc.php). Bei jedem etwa 100. Paste kommt die Formatierung nicht mit und vielleicht bei jedem 1000. Paste ist die Zwischenablage noch leer. Das lässt sich schlecht nachstellen. Das Problem kann vielleicht auch an einer Windows-Einstellung liegen.

 

Ich hab mal einen Loop mit 100 Durchläufen eingerichtet und für einen Make-Aufruf vier Paste-Fehlversuche erhalten. Bei einem nächsten Aufruf waren es drei Fehlversuche. Ich schicke Ihnen die geänderte Datei Steuerung nochmals mit separatem Mail zu.

 

Die ganze Datei Steuerung ist ausgelegt für Standard-Reports von aktuell ca. 200'000 A4-Seiten jährlich. Diesen ganzen Code mit den darin enthaltenen ODBC-Abfragen aus Oracle, aus SAP-BusinessWarehouse, aus Access und aus Excel sowie den Office-Fernsteuerungen ins Excel, Word und PowerPoint kann ich nicht so einfach ins C# übersetzen.

 

Beste Grüsse

Matthäus Blöchliger

Ähnliche Fragen in der Kategorie Computer