'#DATEINAME.xlsm'!MAKRONAME statt MAKRONAME
#11
die Änderung findet ja nicht bei jedem Öffnen einer Datei statt. Sondern irgendwann. Da kann ich jede Datei der Welt nehmen. Irgendwann passiert es. Das Problem hockt immer vor dem Bildschirm. Mit Sicherheit mache ich eine Fehleingabe, welche dazu führt. Ich hatte jetzt erhofft, dass Jemand das Problem kennt. Und dann eine Lösung hat, z.B. drücke im Menü Xy: Makronamen stets beibehalten, sonst änder Excel die Makronamen nach dem 10. Öffnen auf 'MODULNAME!.MAKRONAME ab.

Es gibt ja Licht am Ende des Tunnels. Excel benennt die Makros nie zurück um. Sondern hängt nur immer mehr davor und oder dazwischen. Und was soll jetzt nach 'DATEINAME.xlsm'!MODULNAME.MAKRONAME noch kommen? Evlt. sowas wie: 'PFAD'DATEINAME.xlsm'!MODULNAME.MAKRONAME. Oder evtl. noch 'PFAD'DATEINAME.xlsm'!MODULHEADER.MODULNAME.MAKRONAME. Das soll es aber dann auch gewesen sein. Trotzdem natürlich lästig, da man nie weiß, welches Makro es als nächstes erwischt.
Top
#12
Hi,

das gefällt mir:


Zitat:Das Problem hockt immer vor dem Bildschirm.

Dürfte hier absolut zutreffend sein. Leider sieht niemand, was Du veranstaltest, deswegen kann das niemand nachvollziehen. Ich habe eine Vermutung, aber dazu müsste ich die Datei sehen!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • o0Julia0o
Top
#13
(20.03.2017, 12:15)BoskoBiati schrieb: Leider sieht niemand, was Du veranstaltest, deswegen kann das niemand nachvollziehen. Ich habe eine Vermutung
Oder zum Glück ;) Sonst würde mir ständig Jemand auf die Fingerchen hauen. Weche Vermutung denn? Ein Makro z.b. welches alle 3 Stati durchlaufen hat, sieht so aus(entsprechendes Makro zu dieser Tabelle1 aus Tabelle2 sieht entsprechend aus & hat auch die 2 Stati durchlaufen):

Code:
Sub Tabelle1()
'
' Tabelle1 Makro
'

'
   Sheets("Tabelle1").Select
End Sub

In Tabelle 1 werden Daten aus einer anderen Datei geschrieben. Aber das Makro an sich wird nie verändert(wüsste auch nicht wie das ginge, etwas in den Code schreiben zu lassen).
Aus Tabelle 2 werden Daten in anderen Tabellen genutzt, also per =Tabelle!A14 z.B.
Die gesamte Datei wird gespeichert per Makro:
Code:
Sub Erstellen()
Dim vorherWorkbook As Workbook
ActiveWorkbook.Save
For Each x In Workbooks
If x.Name = Worksheets("Tabelle1").Range("J1").Value & Worksheets("Tabelle1").Range("B2").Value & Worksheets("Tabelle1").Range("H2").Value & ".xlsm" Then
   MsgBox "Datei ist noch geöffnet"
   GoTo weiter
   Exit For
End If
Next
ActiveWorkbook.SaveCopyAs Filename:= _
ActiveWorkbook.Path & "\" & Worksheets("Tabelle1").Range("J1").Value & Worksheets("Tabelle1").Range("B2").Value & Worksheets("Tabelle1").Range("H2").Value & ".xlsm"
Workbooks.Open Filename:=ActiveWorkbook.Path & "\" & Worksheets("Tabelle1").Range("J1").Value & Worksheets("Tabelle1").Range("B2").Value & Worksheets("Tabelle1").Range("H2").Value & ".xlsm"
Set vorherWorkbook = ActiveWorkbook
Worksheets("Tabelle1").Shapes("Picture 21").Visible = False
ActiveWorkbook.Save
'Export-Datei Verknpüpfen:
Workbooks("#HAUPT.XLSM").Activate
Range("Calc2!BR4").FormulaLocal = "=" & Range("Calc2!BR3").Value & "Calc2!$BR$5"
ActiveWorkbook.Save
'Export-Datei Verknpüpfen Ende
vorherWorkbook.Activate
ActiveWorkbook.Close savechanges:=False
weiter:
End Sub
Direkt hinterlegt an Code in Tabelle1 sind 2 Subs:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A41:AH43,B4:AI5,AJ5:AQ5,AL41:AP41,AM42:AP42,AQ4,A6:AQ40")) Is Nothing Then
   ThisWorkbook.Names.Add Name:="AktiveZeile", RefersToR1C1:=Target.Row
   ThisWorkbook.Names.Add Name:="AktiveSpalte", RefersToR1C1:=Target.Column
Else
   On Error Resume Next
   ThisWorkbook.Names("AktiveZeile").Delete
   ThisWorkbook.Names("AktiveSpalte").Delete
   On Error GoTo 0
End If
End Sub
(wird von Begingter Formatierung in Tabelle1 genutzt)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("J1")) Is Nothing Then
Call prcHoleDaten
End If
End Sub
Die prcHoleDaten sieht so aus:

Code:
Sub prcHoleDaten()
   Dim Pfad            As String
   Dim Dateiname       As String
   Dim Blatt           As String
   Dim Bereich         As String
   Dim Ziel            As Range
   Pfad = ThisWorkbook.Path & "\" 'Pfad wo sich die Datei befindet aus der kopiert werden soll. Also gleiches Verzeichnis wo sich die Hauptdatei befindet.
   Dateiname = Worksheets("Calc3").Range("J111").text 'aus welcher Datei soll er holen?
   Blatt = "Tabelle1"  'von welcher Tabelle soll er holen?
   Bereich = "A6:AE40"   'aus welchem Bereich soll er holen?
   Set Ziel = Worksheets("Tabelle1").Range("A6")  'in welchen Bereich soll er kopieren? Genauer gesagt: Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
   If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
   End If
   End Sub

Die Funktioni zu der prcHoleDaten sieht so aus:

Code:
Public Function GetDataClosedWB(SourcePath As String, _
                                 SourceFile As String, _
                                 sourceSheet As String, _
                                 SourceRange As String, _
                                 TargetRange As Range) As Boolean
'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© t.ramel@mvps.org

    Dim strQuelle       As String
    Dim Zeilen          As Long
    Dim Spalten         As Byte

    On Error GoTo InvalidInput

    strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & _
                Range(SourceRange).Cells(1, 1).Address(0, 0)

    Zeilen = Range(SourceRange).Rows.Count
    Spalten = Range(SourceRange).Columns.Count

    With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
       .Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
       .Value = .Value
    End With

    GetDataClosedWB = True
    Exit Function

InvalidInput:
    MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", _
           vbExclamation, "Get data from closed Workbook"
    GetDataClosedWB = False
End Function
Ansonsten passiert nix mit Tabelle1. Außer das man manuell Werte einträgt.
Top
#14
Hi,

Zitat:Sonst würde mir ständig Jemand auf die Fingerchen hauen

das denke ich auch, wäre durchaus angebracht :19:

Irgendwann steht halt in irgendeiner der benutzten Zellen mehr als nur ein Tabellenname und schon ist es passiert!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • o0Julia0o
Top
#15
(20.03.2017, 14:20)BoskoBiati schrieb: Irgendwann steht halt in irgendeiner der benutzten Zellen mehr als nur ein Tabellenname und schon ist es passiert!

Was müsste denn in einem Feld stehen, damit das Makro sich automatisch umbenennt von MAKRONAME zu 'DATEINAME.xlsm'!MAKRONAME oder 'DATEINAME.xlsm'!MODULNAME.MAKRONAME ?
Top
#16
Hi,

das Makro nennt sich nicht um, nur die Datei!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • o0Julia0o
Top
#17
Das ist ja aber nicht mein Problem. Die Datei benennt sich nicht um, sondern das Makro. Wenn ich manuell die Datei umbenenne, dann heißen die Makros alles nach wir vor genauso. Außer die Makros, die sich umbenannt haben mit vorangestelltem Dateinamen. Dann ändert sich dieser automatisch mit ab - was ja dann auch sinnvoll ist.
Top
#18
Hallöchen,

kann es sein, dass das Problem in den Dateien auftritt, die Du mit SaveCopyAs erzeugt hast?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • o0Julia0o
Top
#19
Ich arbeite nicht mit diesen Dateien. Wenn ich jetzt mal testweise welche geöffnet habe, war dort nie solch ein Fehler aufgetaucht. Ich habe jetzt mal alle Dateien durchgeprüft - keine hatte diesen Fehler. Jedoch, wie gesagt - arbeite ich mit diesen Dateien nicht, dann kann ich dort ja auch den Fehler nicht hinzufügen. Aber in der Hauptdatei treten die Fehler ja auch immer nur selten auf. Ich weiß leider nicht, in welchem Augenblick das passiert.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste