Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1272to1276
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

VBA's in separater Datei

VBA's in separater Datei
Rolf
Hallo excelFreunde,
die gängige SW zur elektrischen Datenverarbeitung versetzt mich hin und wieder in ungläubiges Erstaunen; manchmal verursacht sie bei mir auch schlaflose Nächte.
Folgendes Szenario:
• Datei "A" mit mehreren (verknüpften) Arbeitsblättern zur Datenerfassung und Auswertung
Diese Datei enthält Bereichsnamen, damit die VBA's auch beim Einfügen zusätzlicher Spalten/Zeilen
noch funktionieren.
• Datei "B" mit UF's und Makros
Warum Datei "B"?
Gans einfach: Datei "A" wird von mehreren Usern auf autonomen Systemen genutzt. Jeder User kann bestimmte Parameter nach eigenem Gusto definieren und seine Daten erfassen.
Wenn sich bei einem Makro Korrekturbedarf ergibt, muss ich die Änderung nur 1x in der Makrodatei ("B") vornehmen, statt x-mal in "A". Davon abgesehen enthalten die "A"-Dateien persönliche Daten.
Alles hat wunderbar funktioniert . . . - bis ich neulich eine aktualisierte Version der Makro-Datei per Outlook verteilt habe.
Resultat: Fehler beim Kompilieren bei einem Makro (Workbook_open), das ich überhaupt nicht verändert hatte.
Zunächst habe ich natürlich den Fehler bei mir bzw. in meinen VBA's gesucht. Erfolglos.
Der Abgleich der Datei-Parameter und der Parameter für Makro-Sicherheit (alt/neu) hat ebenfalls nichts gebracht.
Schließlich kam mir – in einem Anfall geistiger Umnachtung - die absurde Idee, eine alte Makrodatei-Version zu nehmen, die vorhandenen UF's und Module zu löschen und durch die aktuellen zu ersetzen. Die elektrische Datenverarbeitungs-SW von Billy hat dies wohlwollend zur Kenntnis genommen und akzeptiert. Alles funktioniert wieder einwandfrei. Ich bin sprachlos.
Was habe ich übersehen? Kann mir jemand von euch dieses Phänomen erklären, damit ich zukünftig nicht wieder auf die Schnauze falle?
Gruß, Rolf

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA's in separater Datei
11.08.2012 20:13:37
Matze,Matthias
Hallo Rolf,
hab nur eine Zwischenfrage,
bis ich neulich eine aktualisierte Version der Makro-Datei per Outlook verteilt habe.

hast du die komlette Mappe B versand oder nur ein Makroabschnitt der in Workbook_open defeniert war?
Ich vermute das etwas beim letzten Speichervorgang durch Excel schief gelaufen ist. Denn dort wird "kompiliert" - outlook würde komprimieren, aber ob dadurch zu einem Fehler kam? Seltsam das Ganze!
Gruß Matze
Offen für Weitere Meinungen !
AW: VBA's in separater Datei
12.08.2012 07:49:49
Rolf
Hallo Matthias,
ich habe natürlich die komplette Datei verschickt.
Du musst wissen, bezüglich VBA bin ich auf einem Auge blind und auf dem anderen sehe ich alles nur durch einen Grauschleier. Die Jungs & Mädels, die meine excel-Lösung unbedingt auch nutzen wollten, sind - soweit es VBA anbelangt - nicht nur blind, sie sind auch stumm und haben eingegipste Hände.
Das Problem ist zwischenzeitlich auch bei einer anderen Anwendung aufgetreten. Verblüffend ist allerdings, dass die Geschichte bei einem Anwender mit excel 2007 einwandfrei läuft, bei einem anderen mit der 2010er Version aber nicht.
Zu dieser Anwendung füge mal eine abgespeckte Musterdatei nebst Makrodatei bei. Es ist Wurscht, unter welchem Namen und in welchem Ordner du sie speicherst; Haupsache, sie befinden sich beide im gleichen Verzeichnis.
https://www.herber.de/bbs/user/81384.xlsm (= abgespeckte Version wegen max. KB 300)
https://www.herber.de/bbs/user/81385.xlsm (= Makro-Datei)
Gruß, Rolf
Anzeige
AW: VBA's in separater Datei
12.08.2012 09:20:43
Hajo_Zi
Hallo Rolf,
Du hast Leider nicht geschrieben welches Makro. Du hast in Deinem Code den Namen der Datei bestimmt angepast. Sie hat jetzt ja den Namen 81384.xlsm.
Den markierten Bereich klicken hat keine Reaktion. Würde ich vermuten. Da mir nicht bekannt wo was geändert wird.

AW: VBA's in separater Datei
12.08.2012 10:04:40
Rolf
Moin Hajo,
deine AW verwirrt mich. Hast du dir die beiden Dateien mal angesehen?
Gruß, Rolf
AW: VBA's in separater Datei
12.08.2012 10:11:23
Hajo_Zi
Hallo Rolf,
ich sollte mir nur die Datei mit dem Makro öffnen und das Makro ausführen. Es Stand nichts im Beitrag das ich die Dateien erst noch analysieren soll. Dafür habe ich keine Zeit.
Gruß Hajo
Anzeige
AW: VBA's in separater Datei
12.08.2012 11:12:33
Rolf
Sorry,
ich dachte, ich hätte mich halbwegs klar ausgedrückt. Offenbar nicht. - mein Fehler!
Also: beide Dateien "speichern unter", anschließend öffnen.
Gruß, Rolf
AW: VBA's in separater Datei
12.08.2012 11:23:06
Hajo_Zi
Hallo Rolf,
Du hast aber immer noch nicht geschrieben welches Makro. Ich hätte vermutet in der zweiten Datei? Ich bekomme aber gleich Fehler beim öffnen.
Userbild
Was bestimmt daran liegt das der Dateiname bnicht nagepast wurde.
Gruß Hajo
Anzeige
AW: VBA's in separater Datei
12.08.2012 09:39:09
Luschi
Hallo Rolf,
hier könnenen verschiedene kleine Unstimmigkeiten zu Problemen führen;

- die Orgininal-Ereignisprozedur beim Öffnen einer Arbeitsmappe (AM) lautet:
Private Sub Workbook_Open()
- in Deiner Daten-AM steht sie aber so geschrieben:
Sub workbook_open()
- Sollte diese Groß-Klein-Schreibungs-Änderung automatisch in Vba passieren, dann hat Deine
Makro-AM  sicher eine größeres Problem, welches sich erst beim Aufrugf auf anderen PC
richtig auswirkt.
- Hier hilft nur die Radikalkur:
alle Makros einschließlich Rormulare exportieren und in einer neuen leeren AM wieder
importieren.
- Du verwendest Umlaute in vergebenen Namen (erfBetrag_Ü) und Modulbezeichnungen
(mdlTE_löschen)  und Variablennamen ( erfTEXT_Ü)
- Was passiert, wenn jemand seinen Länderzeichensatz in der Taskleiste aus Versehen auf
'Englisch (USA)'  umgestellt bzw. bewußt in der Windows-Systemsteuerung geändert hat.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA's in separater Datei
12.08.2012 11:01:36
Rolf
Hallo Luschi aus Klein-Paris (wo immer das sein mag - ich kenne nur Klein-Bonum, südlich von Köln),
ich bin vergeistert!
Deine Infos haben mir mal wieder meine trüben Augen geöffnet. Manchmal brauche ich so einen Arschtritt, damit ich im Wald auch einzelne Bäume sehe.
Dein Hinweis zum Thema "Umlaute" ist natürlich richtig. Momentan für mich aber nicht releFant.
Aber:
- die Orgininal-Ereignisprozedur beim Öffnen einer Arbeitsmappe (AM) lautet:
Private Sub Workbook_Open()
- in Deiner Daten-AM steht sie aber so geschrieben:
Sub workbook_open()
Wenn es nur an Klein-/Großbuchstaben liegt, flippe ich jetzt aus und boxe mit dem Papst im Kettenhemd.
Werde es testen. Wenn's funktioniert, darfst du mich auch mal an's Schienbein treten (soll heißen: ich bin dir einen Gefallen schuldig)
Gruß, Rolf
Anzeige
AW: VBA's in separater Datei
12.08.2012 18:30:47
Erich
Hi Rolf,
die Codes in beiden Mappen haben einen (hier auch entscheidenden) Mangel:
Die Module beginnen nicht mit "Option Explicit"!
Und deine Fehlerbeschreibung hat auch einen Mangel:
Der "Fehler beim Kompilieren bei einem Makro (Workbook_open)" ginge genauer:
Fehler beim Kompilieren - Projekt oder Bibliothek nicht gefunden"
Dabei wird jeweils der Name einer Variablen deutlich markiert - da ist also der Fehler zu suchen.
Und er tritt bei mit nicht im Workbook.Open auf, sondern in drei anderen Modulen...
Hier meine Korrekturen:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'   Deklaration der Bereichsnamen und Variablen
Dim erfBetrag As String                       ' ###%%%
Dim Datum As Range
Dim Betrag As Range
Dim Zelle
erfBetrag = Range("erfBetrag").Address
Set Datum = Columns("D")
Set Betrag = Columns("G")
If Intersect(Target, Betrag) Is Nothing Then
For Each Zelle In Range("erfBetrag")
If Zelle.Offset(0, -3)  "" Then
Zelle.Interior.ColorIndex = xlColorIndexNone
End If
Next Zelle
Exit Sub
Else
If InStr(ActiveCell.Formula, "-") > 0 And InStr(ActiveCell _
.Formula, "+") > 0 And ActiveCell.Offset(0, -3) = "" Then
ActiveCell.Interior.ColorIndex = 6
Else
ActiveCell.Interior.ColorIndex = xlColorIndexNone
End If
End If
End Sub
Sub Erf_MasterSORT()
'    Path = ActiveWorkbook.Path                       ' ###%%%  Was soll das hier?
Application.Run "AusgMAKROS.xlsm!Aus_MasterSORT"
End Sub
Sub Erf_Teilergebnis()
'    Path = ActiveWorkbook.Path                             ###%%%  dito
Application.Run "AusgMAKROS.xlsm!Aus_Teilergebnis"
End Sub
Sub workbook_open()
Dim myName As String 'Name ist eine Anweisung und eine Eigenschaft
Dim s As String
Dim Datei As String
Application.ScreenUpdating = False
myName = ActiveWorkbook.Name
s = Application.ActiveWorkbook.Path
Datei = "" & s & "\AusgMAKROS.xlsm" & ""
Workbooks.Open (Datei)
Workbooks(myName).Activate
Application.ScreenUpdating = True
End Sub
Name ist ein denkbar schlechter Variablenname, den Grund habe ich als Kommentar in den Code geschrieben.
An etlichen Stellen schreibst du als Kommentar: "Deklarationen der Bereichsnamen und Varablen".
Aber dann kommt gar keine Deklaration. Die würden (üblicherweise) mit "Dim" beginnen.
Bei dir folgen einfach nur Zuweisungen.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige