Excel Makro funktioniert nicht mehr wenn er automatisch gestartet wird?

2 Antworten

Je nach dem wie es implementiert ist kommt es darauf an "welche" Datei im Vordergrund ist:
Das "ActiveSheet.Copy" ist welche Datei ?
Wenn man mit Dateien jongliert dann besser immer das komplette Objekt verwenden.
Workbook("").Worksheets("").Range().Copy...
ODER
Mit Workbook("").Activate rechtzeitig dafür sorgen dass das richtige im Vordergrund ist.


SchattexTv 
Beitragsersteller
 02.12.2022, 14:18

Hallo Nochmal, mich hat es Gesundheitlich entschärft daher die verspätete Rückmeldung. Das <ActiveSheets> soll in diesem Fall Datei 1 sein. Es könnte fast sein das der Makro an der stelle ein bisschen zu schnell ist.
Ich habe auch die beiden Versionen von dir probiert und beide haben leider keinen Erfolg erzielen können

0
IchMalWiederXY  02.12.2022, 17:48
@SchattexTv

mmhh.
Poste mal deinen Code.
Beschreibe auch welche Datei im Vordergrund ist wenn das Makro startet.
Solche multi - Dateizugriffe mit zig Dateien ist mein täglich Brot und es funktioniert bestens, wenn man die "Reihenfolge" und die Objekte unter Kontrolle hält.

0
SchattexTv 
Beitragsersteller
 17.11.2022, 11:41

Hallo, Danke für die Antwort. Ich probier es heute abend gleich mal aus und gebe eine Rückmeldung.

0

Anbei der Quelltext (einzelne Werte musste ich aus Datenschutzgründen anpassen, funktionieren sollte es trotzdem noch.

Option Explicit

Dim i As Integer

Dim a As Integer

Dim c As Integer

Dim mail As String

Dim techniker As String

Dim art As String

Dim MyDate As Date

Dim filename As String

Sub CopyTest()

'Fehlermeldungen Deaktivieren

Application.ScreenUpdating = True

Application.DisplayAlerts = False

'Start

OpenWorkbooks

'Anzahl der der Loop Zeilen

a = 100

c = 0

'Loop start

For i = 1 To a 'run the loop until field is empty

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

If Workbooks("Export.xlsx").Sheets("Tickets").Range("J" & 1 + i) <> " " Then

  If Workbooks("Export.xlsx").Sheets("Tickets").Range("E" & 1 + i) <> "??" Then

    If Workbooks("Export.xlsx").Sheets("Tickets").Range("X" & 1 + i) = " Störung" Then

      c = c + 1

    CopyData

    End If

  End If

End If

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

'Loop end

Next i

' Export schließen

Workbooks("Export.xlsx").Close SaveChanges:=False

'Datei als csv exportieren

FileExport

'Template schließen

Workbooks("Template.xlsx").Close SaveChanges:=False

'Fehlermeldungen aktivieren

Application.DisplayAlerts = True

Application.ScreenUpdating = False

End Sub

Function OpenWorkbooks()

'Öffnet das Template

Workbooks.Open "Template.xlsx"

'Öffnet den MKS-Export

Workbooks.Open "Export.xlsx"

End Function

Function CopyData()

'Feste Werte

Workbooks("Template.xlsx").Sheets("Template").Range("W" & 1 + c) = "Ort" 'Region

Workbooks("Template.xlsx").Sheets("Template").Range("R" & 1 + c) = land

Workbooks("Template.xlsx").Sheets("Template").Range("Q" & 1 + c) = "land 2" 'Country

Workbooks("Template.xlsx").Sheets("Template").Range("J" & 1 + c) = 1 'SR_Source

Workbooks("Template.xlsx").Sheets("Template").Range("E" & 1 + c) = 10 'Sprache

Workbooks("Template.xlsx").Sheets("Template").Range("C" & 1 + c) = 3 'Gender

Workbooks("Template.xlsx").Sheets("Template").Range("AN" & 1 + c) = "" 'Team

Workbooks("Template.xlsx").Sheets("Template").Range("AS" & 1 + c) = "Mail1" 'Escalation Mail 1

Workbooks("Template.xlsx").Sheets("Template").Range("AT" & 1 + c) = "Mail2" 'Escalation Mail 2

Workbooks("Template.xlsx").Sheets("Template").Range("AU" & 1 + c) = "Mail3" 'Escalation Mail 3

'Dynamische Werte

Workbooks("Template.xlsx").Sheets("Template").Range("A" & 1 + c) = Workbooks("Export.xlsx").Sheets("Tickets").Range("G" & 1 + i)

Workbooks("Template.xlsx").Sheets("Template").Range("B" & 1 + c) = Workbooks("Export.xlsx").Sheets("Tickets").Range("F" & 1 + i)

Workbooks("Template.xlsx").Sheets("Template").Range("D" & 1 + c) = Workbooks("Export.xlsx").Sheets("Tickets").Range("J" & 1 + i)

Workbooks("Template.xlsx").Sheets("Template").Range("F" & 1 + c) = Workbooks("Export.xlsx").Sheets("Tickets").Range("I" & 1 + i)

Workbooks("Template.xlsx").Sheets("Template").Range("H" & 1 + c) = Workbooks("Export.xlsx").Sheets("Tickets").Range("C" & 1 + i)

Workbooks("Template.xlsx").Sheets("Template").Range("O" & 1 + c) = Workbooks("Export.xlsx").Sheets("Tickets").Range("E" & 1 + i) '

Workbooks("Template.xlsx").Sheets("Template").Range("G" & 1 + c) = Workbooks("Export.xlsx").Sheets("Tickets").Range("A" & 1 + i) '

Workbooks("Template.xlsx").Sheets("Template").Range("AO" & 1 + c) = Workbooks("Export.xlsx").Sheets("Tickets").Range("AH" & 1 + i)

Workbooks("Template.xlsx").Sheets("Template").Range("AP" & 1 + c) = Workbooks("Export.xlsx").Sheets("Tickets").Range("U" & 1 + i)

Workbooks("Template.xlsx").Sheets("Template").Range("AM" & 1 + c) = Workbooks("Export.xlsx").Sheets("Tickets").Range("Z" & 1 + i)

End Function

Function FileExport()

'Variablen Für Dateipfad

Dim myCSVFileName As String

Dim tempWB As Workbook

'Datum Formatieren

MyDate = Date

'Dateinamen erstellen

FileFormat

'Dateispeicherort festlegen

myCSVFileName = "Pfad" & filename

'Tabellenblatt auswählen

ActiveSheet.Copy

Set tempWB = ActiveWorkbook

'Speichervorgang

With tempWB

  tempWB.SaveAs filename:=myCSVFileName, FileFormat:=xlCSVUTF8

  tempWB.Close

End With

   

'Workbooks("Template.xlsx").Close SaveChanges:=False

End Function

Function FileFormat()

'Variablen für Dateinamen

Dim part1 As String

Dim part2 As String

Dim part3 As String

'Wertzuweisung

part1 = "_"

part3 = "_"

MyDate = Date

part2 = Format(Date, "yyyymmdd")

filename = part1 & part2 & part3 & ".csv"

End Function