Thema Datum  Von Nutzer Rating
Antwort
02.05.2018 15:31:43 Torsten Heck
NotSolved
02.05.2018 15:59:45 Ulrich
NotSolved
02.05.2018 16:07:44 Torsten Heck
NotSolved
02.05.2018 23:26:12 Gast33875
NotSolved
Rot Formatierung einer zweiten Tabelle (per VBA)
03.05.2018 08:00:58 Torsten Heck
NotSolved
03.05.2018 10:27:22 Ulrich
NotSolved
03.05.2018 11:22:06 Torsten Heck
NotSolved

Ansicht des Beitrags:
Von:
Torsten Heck
Datum:
03.05.2018 08:00:58
Views:
496
Rating: Antwort:
  Ja
Thema:
Formatierung einer zweiten Tabelle (per VBA)

Guten Morgen Ulrich,

ich werde es versuchen...

Dein Coding oben vermischt im Prinzip das Coding der beiden Programme...

Die erste Datei hat die Funktion, andere Dateien, die dort zeilenweise stehen, der Reihe nach zu öffnen, zu aktualisieren und anschließend neu zu speichern/per Mail zu versenden und dann natürlich auch wieder zu schließen. Das funktioniert auch prima, die meisten Dateien sind eh .XLSX und nur wenige .XLSM.

Codingauszug der ersten Datei (und das ist echt nur ein kleiner Auszug):

Dim currentWorkbook As string
Dim wb2 As Workbook
Dim xlApp As Application
Dim theFilename As String         ' theFilename = C:\Datei2.XLSM
Dim newFilename As String         ' newFilename = C:\Aktuell.XLSX
 
currentWorkbook = Active.Workbook.Name   ' Aktuelles Workbook --> Steuerdatei C:\Datei1.XLSM für späteren Zugriff merken
 
Set xlApp = CreateObject("Excel.Application")      ' Neue Excel-Instanz erzeugen
 
xlApp.Visible = True
 
xlApp.Application.StatusBar = "Opening " & theFilename       '  Anzeige Text in der Statuszeile der neuen Excel-Instanz
 
Set wb2 = xlApp.Workbooks.Open(theFilename, False, False)
 
--> nach dem Öffnen wird weiteres Coding in der Steuerdatei ausgeführt (hier ebenfalls nur ein Auszug)
 
lresult = xlApp.Application.Run("SAPExecuteCommand", "RefreshData")    ' Aktualisierung der geöffneten Datei mit SAP
 
wb2.SaveAs newFilename, FileFormat:=51   --> Das ist der Zeitpunkt, an dem das Coding der Datei2.XLSM durchlaufen wird (siehe unten)
 

Coding aus Datei2.XLSM (Komplett) --> auch mit SAP-Funktionen --> und es funktioniert alles, wenn ich die Datei2.XLSM manuell öffne und speicher

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
        Cancel As Boolean)
 
Dim Celle As String
Dim iresult As String
Dim Jahr1 As String
Dim Jahr1Found As Boolean
Dim Jahr2 As String
Dim Jahr2Found As Boolean
Dim SelectJahr As String
Dim Formel As String
Dim StrAdressR1C1 As Range
Dim MySheet As Worksheet
Dim wb As Workbook
 
' Erstes Jahr
Range("A10").FormulaR1C1 = "=MID(SAPGetDimensionEffectiveFilter(""DS_1"", ""0CALYEAR""),1,4)"
Jahr1 = Range("A10").Value
 
' Zweites Jahr
Range("A10").FormulaR1C1 = "=MID(SAPGetDimensionEffectiveFilter(""DS_1"", ""0CALYEAR""),7,4)"
Jahr2 = Range("A10").Value
 
' Monatsintervall
Range("A10").FormulaR1C1 = "=MID(SAPGetDimensionEffectiveFilter(""DS_1"", ""0CALMONTH""),1,100)"
If InStr(1, Range("A10").Value, Jahr1) Then Jahr1Found = True
If InStr(1, Range("A10").Value, Jahr2) Then Jahr2Found = True
 
Set MySheet = Excel.Sheets(2)
MySheet.Range("A10").Value = ""
 
' Auffrischen aus Analysis deaktivieren
iresult = Application.Run("SAPSetRefreshBehaviour", "Off")
 
' Spalte vergrößern
Columns(4).ColumnWidth = 15  --> Funktioniert nicht bei Aufruf aus Steuerdatei
 
' Nur ein Jahr gefunden, dann immer Jahr1 ausführen
If Jahr1Found = False Then
   If Jahr2Found = True Then
      Jahr1 = Jahr2
      Jahr1Found = True
      Jahr2Found = False
    End If
End If
 
If Jahr1Found = True Then
    ' Zwei Zeilen einfügen
    Rows(10).EntireRow.Insert  --> Funktioniert nicht bei Aufruf aus Steuerdatei
    Rows(10).EntireRow.Insert  --> Funktioniert nicht bei Aufruf aus Steuerdatei
 
    Range("D10").Formula = "'" & Jahr1
    
    ' Formeln einfügen
    Jahr1 = "*" & Jahr1
    
    Formel = " "
    Formel = "=SUMIF(C[-5]," & Chr(34) & Jahr1 & Chr(34) & ",C)"
    Range("J10").FormulaR1C1 = Formel
    
    Formel = " "
    Formel = "=SUMIF(C[-6]," & Chr(34) & Jahr1 & Chr(34) & ",C)"
    Range("K10").FormulaR1C1 = Formel
    
    Formel = " "
    Formel = "=SUMIF(C[-7]," & Chr(34) & Jahr1 & Chr(34) & ",C)"
    Range("L10").FormulaR1C1 = Formel
    
    Formel = " "
    Formel = "=SUMIF(C[-8]," & Chr(34) & Jahr1 & Chr(34) & ",C)"
    Range("M10").FormulaR1C1 = Formel
    
    ' Formatierung
    Range("D10:M10").Select
    Selection.Style = "Summe"
    Range("D11:I11").Select
    Selection.Style = "SAPMemberCell"
    Range("J11:M11").Select
    Selection.Style = "SAPDataCell"
    
End If
 
If Jahr2Found = True Then
    'ersten Eintrag für neues Jahr finden
    SelectJahr = "JAN" & " " & Jahr2
    
    Set StrAdressR1C1 = Range("E:E").Find(SelectJahr)
    
    If Not StrAdressR1C1 Is Nothing Then
    
        Celle = StrAdressR1C1.Row
        ' Zwei Zeilen einfügen
        Rows(StrAdressR1C1.Row).EntireRow.Insert
        Rows(StrAdressR1C1.Row).EntireRow.Insert
    
        'Jahr einfügen
        Range(Cells(Celle, 4), Cells(Celle, 4)).Formula = "'" & Jahr2
     
        ' Formeln einfügen
        Jahr2 = "*" & Jahr2
        
        Formel = " "
        Formel = "=SUMIF(C[-5]," & Chr(34) & Jahr2 & Chr(34) & ",C)"
        Range(Cells(Celle, 10), Cells(Celle, 10)).FormulaR1C1 = Formel
    
        Formel = " "
        Formel = "=SUMIF(C[-6]," & Chr(34) & Jahr2 & Chr(34) & ",C)"
        Range(Cells(Celle, 11), Cells(Celle, 11)).FormulaR1C1 = Formel
    
        Formel = " "
        Formel = "=SUMIF(C[-7]," & Chr(34) & Jahr2 & Chr(34) & ",C)"
        Range(Cells(Celle, 12), Cells(Celle, 12)).FormulaR1C1 = Formel
    
        Formel = " "
        Formel = "=SUMIF(C[-8]," & Chr(34) & Jahr2 & Chr(34) & ",C)"
        Range(Cells(Celle, 13), Cells(Celle, 13)).FormulaR1C1 = Formel
    
        ' Formatierung
        Range(Cells(Celle, 4), Cells(Celle, 13)).Select
        Selection.Style = "Summe"
           
    End If
End If
 
Range("A1").Select
 
End Sub
 

Nach erfolgreichem Speicher --> Abschluß Coding Datei1 --> also unmittelbar nach dem Befehl wb2.SaveAs newFilename, FileFormat:=51wb2.Close

 
xlApp.Application.DisplayAlerts = True
xlApp.Quit
 
Set wb2 = Nothing
Set xlApp = Nothing
Workbooks(currentWorkbook).Activate
 
--> Und dann wird die nächste Datei der Steuerdatei verarbeitet!
 
So viel Details...
 
Danke im Voraus
 
Grüße
Torsten Heck

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
02.05.2018 15:31:43 Torsten Heck
NotSolved
02.05.2018 15:59:45 Ulrich
NotSolved
02.05.2018 16:07:44 Torsten Heck
NotSolved
02.05.2018 23:26:12 Gast33875
NotSolved
Rot Formatierung einer zweiten Tabelle (per VBA)
03.05.2018 08:00:58 Torsten Heck
NotSolved
03.05.2018 10:27:22 Ulrich
NotSolved
03.05.2018 11:22:06 Torsten Heck
NotSolved