vollständige Referenzierung

Hallo liebe Experten der TabellenKalkulation,
bisher habe ich eine Excel-Liste mit ca. 8000 Zeilen, die AngebotsDaten beinhaltet. Außerdem eine andere Datei mit aktuellen Auftragsdaten, die nur ca. 40 Zeile umfasst, aber auch zusätzliche Angaben enthält.
Meine Idee ist jetzt, die 2. Liste zu eliminieren und weniger PflegeAufwand zu haben. Die Aufträge stehen nämlich auch in der AngebotsDatei und sind anhand der beiden ersten Einträge in der Zeile zu erkennen.
Ich habe also eine Spalte ( S30 ) mit logisch errechneten WAHR / FALSCH einträgen in der AngebotsDatei, so dass ich leicht filtern kann.
Dort gibt es auch eine Spalte mit Hyperlinks zu den Verzeichnissen, in denen sich jeweils eine Projekt_4711.xls mit den zusätzlichen Angaben befindet. In einer anderen Spalte ( S23 ) habe ich auch Hyperlinks direkt zu den Projekt…xls
Die Hyperlinks funktionieren. Bezüge auf Zellen in den ProjektDateien funktionieren auch (=WENN(ZS30;‚Y:\Angebote\11\11371 KundenName[Projekt_11371.xls]DATEN‘!Z45S4;"") liefert das korrekte Datum des AuftragsEingangs.
Nun muss der Bezug natürlich dynamisch sein, weil ich ja auf verschiedene ProjektDateien in verschiedenen Ordnern zugreifen will.
Habe auch mit Hilfe der Datei-Hyperlinks eine Zelle zusammengebastelt, die exakt den Bezug enthält
="’"&LINKS(ZS23;SUCHEN(„Projekt“;ZS23)-1)&"["&RECHTS(ZS23;LÄNGE(ZS23)-SUCHEN(„Projekt“;ZS23)+1)&"]DATEN’!Z45S4"
Was kann ich damit jetzt anfangen? Mit „Indirekt“ habe ich es nicht geschafft, den Eintrag aus der ProjektDatei abzubilden:
=INDIREKT(ZS(-8)) liefert #Bezug!
Ich hoffe auf Eure Ideen :smile:
Freundliche Grüße
Thomas

Habe auch mit Hilfe der Datei-Hyperlinks eine Zelle
zusammengebastelt, die exakt den Bezug enthält
="’"&LINKS(ZS23;SUCHEN(„Projekt“;ZS23)-1)&"["&RECHTS(ZS23;LÄNGE
(ZS23)-SUCHEN(„Projekt“;ZS23)+1)&"]DATEN’!Z45S4"

Was kann ich damit jetzt anfangen? Mit „Indirekt“ habe ich es
nicht geschafft, den Eintrag aus der ProjektDatei abzubilden:
=INDIREKT(ZS(-8)) liefert #Bezug!

Hallo Thomas,

ein Grund für #Bezug kann sein daß das was in ZS(-8) steht kein gültiger Zellenname ist.

lade mal bitte eine Beispielmappe hoch.

Gruß
Reinhard

Grüezi Thomas

(=WENN(ZS30;‚Y:\Angebote\11\11371
KundenName[Projekt_11371.xls]DATEN‘!Z45S4;"") liefert das
korrekte Datum des AuftragsEingangs.

Habe auch mit Hilfe der Datei-Hyperlinks eine Zelle
zusammengebastelt, die exakt den Bezug enthält
="’"&LINKS(ZS23;SUCHEN(„Projekt“;ZS23)-1)&"["&RECHTS(ZS23;LÄNGE
(ZS23)-SUCHEN(„Projekt“;ZS23)+1)&"]DATEN’!Z45S4"
Was kann ich damit jetzt anfangen? Mit „Indirekt“ habe ich es
nicht geschafft, den Eintrag aus der ProjektDatei abzubilden:
=INDIREKT(ZS(-8)) liefert #Bezug!

INDIREKT() kann nur mit geöffneten Mappen arbeiten.

Andere Möglichkeiten gibt es ‚on Board‘ nicht um Pfade per String-Operationen zusammenzubauen und dann auch funktionierend zu haben.

Also musst Du wohl auf VBA-Programmierung zurückgreifen oder das Ganze gleich in/mit einer ‚echten‘ Datenbank aufbauen.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi Thomas

INDIREKT() kann nur mit geöffneten Mappen arbeiten.

Andere Möglichkeiten gibt es ‚on Board‘ nicht um Pfade per
String-Operationen zusammenzubauen und dann auch
funktionierend zu haben.

Also musst Du wohl auf VBA-Programmierung zurückgreifen oder
das Ganze gleich in/mit einer ‚echten‘ Datenbank aufbauen.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Thomas,
vielen Dank für Deinen Hinweis. Dann werde ich auch nicht weiter herumprobieren und es erst´mal mit VBA versuchen. Mit „echten“ DatenBanken habe ich kaum Erfahrungen …
Schönes WochenEnde
Thomas

Hallo Reinhard,
nach Thomas Ramels Hinweis werde ich es mit VBA probieren. Mit Excel-Formeln wird es wohl nicht zu machen sein.
Vielen Dank und freundliche Grüße
Thomas

nach Thomas Ramels Hinweis werde ich es mit VBA probieren. Mit
Excel-Formeln wird es wohl nicht zu machen sein.

Hallo Thomas,

mal was anderes zu deiner Formel. Scheinbar setzt sie nicht korrekt zusammen, hab jetzt noch nicht nachgeforscht warum.
In ZS23 steht:
‚Y:\Angebote\11\11371 KundenName[Projekt_11371.xls]DATEN‘!Z45S4

Tabellenblatt: C:\DOKUME~1\ich2\LOKALE~1\Temp\[Mappe1.xls]!Tabelle2
 │ A │
──┼────────────────────────────────────────────────────────────────────────────────┤
1 │ 'Y:\Angebote\11\11371 KundenName\[[Projekt\_11371.xls]DATEN'!Z45S4]DATEN'!Z45S4 │
──┼────────────────────────────────────────────────────────────────────────────────┤
2 │ Y:\Angebote\11\11371 KundenName\[Projekt\_11371.xls]DATEN'!Z45S4 │
──┴────────────────────────────────────────────────────────────────────────────────┘
Benutzte Formeln:
A1: ="'"&LINKS(ZS23;SUCHEN("Projekt";ZS23)-1)&"["&RECHTS(ZS23;LÄNGE(ZS23)-SUCHEN("Projekt";ZS23)+1)&"]DATEN'!Z45S4"
A2: =Z1S23

A1:A2
haben das Zahlenformat: Standard

Gruß
Reinhard

Hallo Reinhard,
oben „[]“ zu viel und unten „’“ zu wenig, komisch.
Vielen Dank für Deinen Hinweis.
Habe ich so nicht festgestellt. Momentan habe ich auch keine ServerVerbindung zum Büro.
Mit VBA habe ich noch geschafft, dass die Formeln bei Bedarf in die Zellen geschrieben werden. Es wird aber zu jeder Formel mit externem Bezug ein Dialog geöffnet. Das war bei der fest eingegebenen Formel nicht so.
Zudem startet der Dialog in einem anderen Verzeichnis ( jedesmal in Y:\Angebote\2\2714 Nagel. Aber das kann man vielleicht mit application.screenupdating=false wegbekommen?
Mit der festen Formel ging das Alles prompt, also ohne RückFragen oder Öffnen von Dateien - jedenfalls nicht so, dass man als Anwender ´was davon merkt :wink:

Kann ich aber Alles erst am Montag probieren :frowning:

Also: Ersma schönes WochenEnde
Thomas

Hallo Thomas,

mal was anderes zu deiner Formel. Scheinbar setzt sie nicht
korrekt zusammen, hab jetzt noch nicht nachgeforscht warum.
In ZS23 steht:
‚Y:\Angebote\11\11371
KundenName[Projekt_11371.xls]DATEN‘!Z45S4

Tabellenblatt:
C:\DOKUME~1\ich2\LOKALE~1\Temp[Mappe1.xls]!Tabelle2
│ A

──┼────────────────────────────────────────────────────────────
────────────────────┤
1 │ ‚Y:\Angebote\11\11371
KundenName[[Projekt_11371.xls]DATEN‘!Z45S4]DATEN’!Z45S4 │
──┼────────────────────────────────────────────────────────────
────────────────────┤
2 │ Y:\Angebote\11\11371
KundenName[Projekt_11371.xls]DATEN’!Z45S4 │
──┴────────────────────────────────────────────────────────────
────────────────────┘
Benutzte Formeln:
A1:
="’"&LINKS(ZS23;SUCHEN(„Projekt“;ZS23)-1)&"["&RECHTS(ZS23;LÄNGE
(ZS23)-SUCHEN(„Projekt“;ZS23)+1)&"]DATEN’!Z45S4"
A2: =Z1S23

A1:A2
haben das Zahlenformat: Standard

Gruß
Reinhard

Hallo Thomas,

oben „[]“ zu viel und unten „’“ zu wenig, komisch.
Habe ich so nicht festgestellt.

ich habe das eben mal durchgetestet das mit [[ und doppeltem
DATEN’!Z45S4 ist schon okay von Excel, das wird Excel durch deine Formel gesagt.

Und ein fehlendes Hochkomma habe ich nicht, eher eines zuviel vorne durch deine Formel :smile:

Mit VBA habe ich noch geschafft, dass die Formeln bei Bedarf
in die Zellen geschrieben werden. Es wird aber zu jeder Formel
mit externem Bezug ein Dialog geöffnet. Das war bei der fest
eingegebenen Formel nicht so.

Ich kenne deinen Code nicht.

Zudem startet der Dialog in einem anderen Verzeichnis (
jedesmal in Y:\Angebote\2\2714 Nagel. Aber das kann man
vielleicht mit application.screenupdating=false wegbekommen?

Nein, damit nicht, das regelt ja nur die Bildschirmaktualisierung.
Was genau willst du, daß der Dialog gar nicht kommt?
Kann schwierig werden wenn du per Vba in Excel eine Formel eintragen läßt bei der Excel automatisch diesen Dalog öffnet.

Um Pfade zu beeinflußen könnte man ChDrive, danach ChDir benutzen in manchen Fällen.

Ich liebe aussagekräftige Beispielmappen :smile:

Ich weiß nicht, warst du es den ich schonmal gefragt hat ob er den Befehl Subst kennt?

Gruß
Reinhard

Hallo Reinhard,
leider habe ich z. Zt. keine ServerVerbindung zum Büro. Deshalb bin ich gestern abend noch ins Büro gegangen und habe die Dateien geholt und anonymisiert und Hyperlinks gelöscht. Mittlerweile funktioniert es hier mit „subst“.
application.screenupdating=false ist natürlich Quatsch. Ich meinte displayAlerts, sorry. Habe ich aber noch nicht getestet, sondern erst ´mal die Dateien hochgeladen:
http://www.file-upload.net/download-4031366/test.7z…
Wenn Du Lust hat, kannst Du ja ´mal ´reinschauen.
Schönen Sonntagabend wünscht Dir
Thomas

BeispielMappe
http://www.file-upload.net/download-4031386/test.zip…

Hallo Thomas,

Deshalb bin ich gestern abend noch ins Büro gegangen und habe

ach du kacke, das wollt ich aber nicht :frowning:
WE sollte heilig sein.
Naja, andererseits, wenn mich Dinge interessieren mache ich das auch locker :smile:

http://www.file-upload.net/download-4031366/test.7z…
Wenn Du Lust hat, kannst Du ja ´mal ´reinschauen.

Ich habe jetzt nicht diesen Link runtergeladen sondern den den du um 17:11 gezeigt hast.
Ist das korrekt oder soll ich diesen Link nehmen?

Zu deinen Codes. Du benutzt kein Option Explicit, ich kann dir nur wärmstens enpfehlen in den Editor-optionen Variablendeklaration erforderlich anzuhaken und somit immer Option Explicit zu benutzen.

Was ich bei Proficodes schon öfters sah, die bauen sich eine Sub für Application.EnableEvents usw.
In etwa ungetest so:

Sub Schnell(JaNein as Boolean)
Application.EnableEvents = Not Janein
Application.ScreenUpdating = Not Janein
Application.Calculation = IIf(janein,xlManual,xlautomatic)
End Sub

Dann kannst du bequem in deinem ganzen Projekt mit
Call Schnell(True)
darauf zugreifen.

Übrigens, kann auch eine persönliche Marotte von mir sein aber
ich kann dadurch Code schneller lesen weil es eindeutig ist, ich
setze immer Call vor Prozeduraufrufe.

Zu ChDrive, das wertet seltsamerweise, also bei Dos/Win sehr unüblich nur den ersten Buchstaben aus.
Also ist
ChDrive „Y“ genau das gleiche wie so wie du es benutzt.
Aber das ist unwichtiges Wissen denn auch deine variante funktioniert
und vieeeel wichtiger ist daß du ChDrive immer vor ChDir einsetzt und benutzt. Denn sonst riskierst du sehr unliebsame Überrascheungen.

Denn wer sich nur auf
ChDir „Y:\Test“
verläßt und glaubt er (der Code) wäre 100 %ig im Pfad „Y:\Test“ der irrt :frowning:

Zu Einrückungen und leerzeilen in deinen Codes,
Hier ist eine xla von Hans W. Herber, installiere die dir.
Klappt auch in XL 2007 was du wohl hast.
Einrücken und leerzeilen findest du dann unter „Utilities“.
http://www.file-upload.net/download-4031914/vbePLUSd…

Der Rest der Features ist meist selbsterklärend. Spiel einfach mal damit rum.
Wenn was noch unklar bleibt sag bescheid, Hans da da auch eine Hilfe-chm geschrieben, dann suche ich die raus.

So, das waren bemerkunkungen zu meinem ersten Eindruck deiner Codes.
Jetzt muß ich mal oben nachlesen was du eigentlich genau angefragt hast und was das mit den deinen Codes zu tun hat bzw. was ich da wo wie tun sollte/könnte :smile:

Dir auch einen schönen SoAbnd
Reinhard

Hallo Reinhard,
ist ja klasse, dass Du am Sonntag Zeit für meine Probleme hast :smile:

Hallo Thomas,

Deshalb bin ich gestern abend noch ins Büro gegangen und habe

ach du kacke, das wollt ich aber nicht :frowning:
WE sollte heilig sein.
Naja, andererseits, wenn mich Dinge interessieren mache ich
das auch locker :smile:

Naja, sind nur 250 m bis dahin. Mehr Zeit hat die Anonymisierung gekostet - und ich bin nicht sicher, dass Alles sauber ist.

http://www.file-upload.net/download-4031366/test.7z…
Wenn Du Lust hat, kannst Du ja ´mal ´reinschauen.

Ich habe jetzt nicht diesen Link runtergeladen sondern den den
du um 17:11 gezeigt hast.
Ist das korrekt oder soll ich diesen Link nehmen?

Inhalt ist identisch. War nur nicht sicher, dass das Jeder entzippen kann

Zu deinen Codes. Du benutzt kein Option Explicit, ich kann dir
nur wärmstens enpfehlen in den Editor-optionen
Variablendeklaration erforderlich anzuhaken und somit immer
Option Explicit zu benutzen.

OE benutze ich seit einiger Zeit eigentlich immer. Nur bei alten Makros, die ich erweitere, kommt es manchmal vor, dass es fehlt

Was ich bei Proficodes schon öfters sah, die bauen sich eine
Sub für Application.EnableEvents usw.
In etwa ungetest so:

Sub Schnell(JaNein as Boolean)
Application.EnableEvents = Not Janein
Application.ScreenUpdating = Not Janein
Application.Calculation = IIf(janein,xlManual,xlautomatic)
End Sub

Dann kannst du bequem in deinem ganzen Projekt mit
Call Schnell(True)
darauf zugreifen.

Da werde ich drüber nachdenken. Habe auch ähnliche Makros ( Filter aus, Alles sichtbar usw. ) geschrieben, aber noch nicht in meine MenüDatei eingebaut, die irgendwann Voraussetzung zum Zugang zu meinen Tabellen sein soll. Solche Standard-Makros will ich dann auch als Add-Ins verwalten, kenne mich damit aber noch nicht aus :frowning:

Übrigens, kann auch eine persönliche Marotte von mir sein aber
ich kann dadurch Code schneller lesen weil es eindeutig ist,
ich
setze immer Call vor Prozeduraufrufe.

O. k., das werde ich mir auch vornehmen.

Zu ChDrive, das wertet seltsamerweise, also bei Dos/Win sehr
unüblich nur den ersten Buchstaben aus.
Also ist
ChDrive „Y“ genau das gleiche wie so wie du es benutzt.
Aber das ist unwichtiges Wissen denn auch deine variante
funktioniert
und vieeeel wichtiger ist daß du ChDrive immer vor ChDir
einsetzt und benutzt. Denn sonst riskierst du sehr unliebsame
Überrascheungen.

Habe ich bisher Beides noch nicht in diesen Code eingebaut. Ist aber logisch.

Denn wer sich nur auf
ChDir „Y:\Test“
verläßt und glaubt er (der Code) wäre 100 %ig im Pfad
„Y:\Test“ der irrt :frowning:

Zu Einrückungen und leerzeilen in deinen Codes,
Hier ist eine xla von Hans W. Herber, installiere die dir.
Klappt auch in XL 2007 was du wohl hast.
Einrücken und leerzeilen findest du dann unter „Utilities“.
http://www.file-upload.net/download-4031914/vbePLUSd…

Hmh, ist wohl ein Add-in … Keine Ahnung, wo ich das hinkopieren muss :frowning:

Der Rest der Features ist meist selbsterklärend. Spiel einfach
mal damit rum.
Wenn was noch unklar bleibt sag bescheid, Hans da da auch eine
Hilfe-chm geschrieben, dann suche ich die raus.

Wäre vielleicht hilfreich ( wenn nicht zu kompliziert für mein lückenhaftes Wissen )

So, das waren bemerkunkungen zu meinem ersten Eindruck deiner
Codes.

Meine Einrückungen gefallen Dir also nicht. Leerzeilen mache ich nur selten. Kommentare kann man kaum zu viele schreiben.

Jetzt muß ich mal oben nachlesen was du eigentlich genau
angefragt hast und was das mit den deinen Codes zu tun hat
bzw. was ich da wo wie tun sollte/könnte :smile:

Wenn ich morgen ein paar Minuten Zeit finde, versuche ich zuerst einmal, den DateiDialog mit ChDrive und ChDir zu vereinfachen oder mit displayAlerts auszuschalten.
Heute war ich sehr eingebunden, weil meine 3 Kids übers WE bei mir waren und auch der Umzug noch nicht fertig ist.

Dir auch einen schönen SoAbnd
Reinhard

Wünsche ich Dir auch
Thomas

Hallo Thomas,

Naja, sind nur 250 m bis dahin. Mehr Zeit hat die
Anonymisierung gekostet - und ich bin nicht sicher, dass Alles
sauber ist.

Ja, du hast vergessen die handynummer von Claudia Schiffer zu löschen.
Ich hab schon Kontakt aufgenommen…

-)))

Dann kannst du bequem in deinem ganzen Projekt mit
Call Schnell(True)
darauf zugreifen.

Da werde ich drüber nachdenken. Habe auch ähnliche Makros (
Filter aus, Alles sichtbar usw. ) geschrieben, aber noch nicht
in meine MenüDatei eingebaut, die irgendwann Voraussetzung zum
Zugang zu meinen Tabellen sein soll. Solche Standard-Makros
will ich dann auch als Add-Ins verwalten, kenne mich damit
aber noch nicht aus :frowning:

Okay, frag dann zu Add-Ins gezielt hier nach.
Ein guter Tipp vorneweg. Es empfiehlt sich sehr daß du deine Add-Ins als zwei Mappen „führst“.
Also eine xls in der du Änderungen vornimmst wenn du da mal das gleichnamige Add-In=xla abändern willst.

Dann änderst du du einfach die xls, speicherst sie als xls und als xla und fertig.
Das ist viel einfacher als direkt eine xla zu ändern.

Übrigens, kann auch eine persönliche Marotte von mir sein aber
ich kann dadurch Code schneller lesen weil es eindeutig ist,
ich
setze immer Call vor Prozeduraufrufe.

O. k., das werde ich mir auch vornehmen.

Wie du willst, im Internet sieht man das mal mit Call mal ohne, ich für mich habe mich für immer mit entschieden.

Zu ChDrive

Habe ich bisher Beides noch nicht in diesen Code eingebaut.
Ist aber logisch.

? Ich habs doch da geshen?
Da ich es als sehr uneffektiv empfinde mir für diesen einen Sonderfall was anders als sonst zu überlegen,
schreib weiter
ChDrive „C:“
Wenn dir ohne Mühe sofort einfällt daß in diesem Sonderfall geht:
ChDrive „C“
dann mach das halt so, wie gesagt nicht wichtig.
Nur wichtig ist daß du ChDrive benutzt.

http://www.file-upload.net/download-4031914/vbePLUSd…

Hmh, ist wohl ein Add-in … Keine Ahnung, wo ich das
hinkopieren muss :frowning:

Öffne sie in deinem XL 2007…

Wenn was noch unklar bleibt sag bescheid, Hans da da auch eine
Hilfe-chm geschrieben, dann suche ich die raus.

Wäre vielleicht hilfreich ( wenn nicht zu kompliziert für mein
lückenhaftes Wissen )

Jetzt mach dich doch nicht selbst nieder, Ggfs. mach ich das schon oder andere aus deiner Umgebung *lächel

So, das waren bemerkunkungen zu meinem ersten Eindruck deiner
Codes.

Meine Einrückungen gefallen Dir also nicht. Leerzeilen mache
ich nur selten.

Naja, so mit meinen Vba-Augen gesehen sieht das nicht so toll aus:
http://www.uploadagent.de/show-181777-1326661805.html

Kommentare kann man kaum zu viele schreiben.

Korrekt.

Wenn ich morgen ein paar Minuten Zeit finde, versuche ich
zuerst einmal, den DateiDialog mit ChDrive und ChDir zu
vereinfachen oder mit displayAlerts auszuschalten.

Mit ChDrive und ChDir wählst du wenn es funtioniert nur das Verzeichnis aus was dann in einem Datei-Dialog angezeigt wird.
displayAlerts macht da keinen Sinn, das blendet nur Warnungen aus.
So wie wenn du ein Tabellenblatt per Code löschen willst.
Dann kannst du mit displayAlerts verhindern daß du beim Blattlöschen gefragt wirst ob du das wirklich willst.

Heute war ich sehr eingebunden, weil meine 3 Kids übers WE bei
mir waren und auch der Umzug noch nicht fertig ist.

Kein Akt, bei mir in der Nähe praktiziert der Kinderarzt Dr. Prügelpeitsch.
Der kennt bewährte Methoden, nach Anwendung machen die Kinderchen keinen Ärcher mehr :smile:))

Gruß
Reinhard

Änderung von AddIns…
Grüezi Reinhard

Okay, frag dann zu Add-Ins gezielt hier nach.
Ein guter Tipp vorneweg. Es empfiehlt sich sehr daß du deine
Add-Ins als zwei Mappen „führst“.
Also eine xls in der du Änderungen vornimmst wenn du da mal
das gleichnamige Add-In=xla abändern willst.

Dann änderst du du einfach die xls, speicherst sie als xls und
als xla und fertig.
Das ist viel einfacher als direkt eine xla zu ändern.

Wo genau siehst Du hier die Vereinfachung?

Ich habe meine eigenen Codes (vor allem Funktionen) seit Jahren in einem eigenen AddIn, das ich regelmässig erweitere und anpasse.

Wenn ich VBA-Code verändere spielt es keine Rolle ob ich das in einem AddIn oder einer ‚normalen‘ Excel-Mappe tue (Der Unterschied ist ja eh nur die Datei-Endung und dass die Mappe unsichtbar geladen wird).

Wieso hier also zweigleisig fahren?

(Bei PowerPoint sieht die Sache anders aus - da ist nur eine PP und kein AddIn veränderbar).

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezie Thomas,

Dann änderst du du einfach die xls, speicherst sie als xls und
als xla und fertig.
Das ist viel einfacher als direkt eine xla zu ändern.

Wo genau siehst Du hier die Vereinfachung?

ups, ich las das mal vor Jahren irgendwo und hab das so übernommen.

Wenn ich an ein Blatt der xla will muß ich nicht IsAddin1 auf False setzen, auf die Blätter zugreifen, danach dann wieder isAddin auf True setzen.
Mehr konrete Vorteile fielen mir jetzt auf die Schnelle nicht ein :smile:

1 = Im VB-Editor im Projekt (der xla) „DieseArbeitsmappe“ anklicken, F4 drücken…

Ich habe meine eigenen Codes (vor allem Funktionen) seit
Jahren in einem eigenen AddIn, das ich regelmässig erweitere
und anpasse.

Das macht Sinn für Prozeduren due du sehr häufig brauchst, diese als Block zu speichern.
Prozeduren die ich nur bei z.B. wenigen Dateien mal brauche habe ich gerne in einer jeweils eigenen xla.

(Bei PowerPoint sieht die Sache anders aus - da ist nur eine
PP und kein AddIn veränderbar).

Interessant zu wissen. Naja bei PP wäre ich schon froh daß ich da die Referenzierung eines einfachen Makros hinkriegen würde :smile:

Gruß
Reinhard

Grüezi Reinhard

Dann änderst du du einfach die xls, speicherst sie als xls und
als xla und fertig.
Das ist viel einfacher als direkt eine xla zu ändern.

Wo genau siehst Du hier die Vereinfachung?

ups, ich las das mal vor Jahren irgendwo und hab das so
übernommen.

Wenn ich an ein Blatt der xla will muß ich nicht IsAddin1
auf False setzen, auf die Blätter zugreifen, danach dann
wieder isAddin auf True setzen.

…ja, aber auch das nur, wenn das Tabellenblatt sichtbar bearbeitet werden soll.
Wenn die Bearbeitung über VBA erfolgt ist ein Einblenden nicht notwendig.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Dialog für externe Referenz unterdrücken - wie?
Hallo Reinhard,
hoffentlich hast Du Claudia wenigstens von mir gegrüßt :wink:

Wenn ich morgen ein paar Minuten Zeit finde, versuche ich
zuerst einmal, den DateiDialog mit ChDrive und ChDir zu
vereinfachen oder mit displayAlerts auszuschalten.

Mit ChDrive und ChDir wählst du wenn es funtioniert nur das
Verzeichnis aus was dann in einem Datei-Dialog angezeigt wird.
displayAlerts macht da keinen Sinn, das blendet nur Warnungen
aus.

Soeben hatte ich ein paar Minuten, um ChDrive und ChDir zu checken --> Dialog ist schon viel besser, weil der StartOrdner jetzt sofort stimmt. Ist aber immer noch zu viel geklicke, wenn man ca. 40 Dateien und ebensoviele Blätter auswählen muss bei jeder Aktualisierung. Wie Du schon prophezeit hast, geht application.DisplayAlerts=false in diesem Fall nicht, um blöde Fragen zu unterdrücken. Dabei ist das Ziel doch genau angegeben vom Laufwerk bis zur Zelle. Und bei händisch eingegebenem Verweis klappt es auch ohne Rückfrage. Hast Du da noch eine Idee, wie man den Dialog unterdrückt?

So wie wenn du ein Tabellenblatt per Code löschen willst.
Dann kannst du mit displayAlerts verhindern daß du beim
Blattlöschen gefragt wirst ob du das wirklich willst.

Ich glaube mich zu erinnern, dass es auch schon geholfen hat, um die überflüssige Rückfrage nach SpeicherOrt und Dateinamen zu unterdrücken, die ich auch schon im Code spezifiziert hatte … Habe gerade noch einmal nachgesehen: Das war in der Projekt.xltm, die sich auch in der zip-Datei befindet ( unter Y:\Vorlagen\Excel ).

In diesem Fall ging der Cursor schnell und ohne RückFrage durch die Zeilen.*
In den fraglichen Zellen stand dann aber leider wieder #Bezug!
Das bringt natürlich auch nicht voran :frowning:
Aber vielleicht hast Du ja noch eine Idee

Freundliche Grüße
Thomas

*Nachtrag
Nachtrag:

In diesem Fall ging der Cursor schnell und ohne RückFrage
durch die Zeilen.*

In der TestPhase arbeite ich gern mit select, weil ich dann besser sehe, was passiert

Freundliche Grüße
Thomas

Hallo Thomas,

hoffentlich hast Du Claudia wenigstens von mir gegrüßt :wink:

ja, so bei Gesprächsende habe ich dich mal kurz erwähnt.
Warum eigentlich kann sie deinen Namen nicht aussprechen und nennt dich immer „der Schuft“?
*grien*

Zu der Xla von Hans, schon installiert? Mach das, sind gute Dinge dabei.
Und, ich benutze an sich davon nur in den Utilities den Einrücker und den Cleaner.
Für Codes die ich selbst schreibe brauch ich das nicht.
Dann benutze ich noch Formel(n) wenn ich auf die Schnelle mal das Vba-Wort für eine Excel-Funktion brauche.

Aber, eben nach einigen Jahren habe ich die Hilfe-chm nochmal überflogen, kann sein daß ich in Zukunft da auch noch andere Features öfters einsetze/benutze.

Hier haste die die komplette vbeplusde.zip
Ist Freeware und darf mit Erlaubnis von Hans an jeden weitergegeben werden.

Gruß
Reinhard

Grüezi Thomas

Ist aber immer noch zu viel geklicke,
wenn man ca. 40 Dateien und ebensoviele Blätter auswählen
muss bei jeder Aktualisierung. Wie Du schon prophezeit hast,
geht application.DisplayAlerts=false in diesem Fall nicht, um
blöde Fragen zu unterdrücken. Dabei ist das Ziel doch genau
angegeben vom Laufwerk bis zur Zelle. Und bei händisch
eingegebenem Verweis klappt es auch ohne Rückfrage. Hast Du da
noch eine Idee, wie man den Dialog unterdrückt?

Hmmm, ws genau tust Du denn mit deinem Code?
Fügst Du Formeln in Zellen ein, die dann Bezüge zu den externen Mappen herstellen?

Wenn das korrekt gemacht wird, poppt da kein Dialog auf - das geht sogar recht gut.
Erählst Du also die Aufforderung eine Datei auszuwählen dann heisst das, dass in der Formel die Du in die Zelle(n) schreibst irgend ein Schreibfehler drin ist.

Schau dir mal folgende Funktion an, die tut genau das - Daten aus externen Dateien per Formeln in die Zellen schreiben und dann durch Werte ersetzen:

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
'05.07.2011 - Anpassung für Apostroph im Dateinamen
'17.11.2011 - Anpassung für fehlenden Slash am Ende des Pfadnamens
'© [email protected]

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

 On Error GoTo InvalidInput

 If Left(SourcePath, 1) "\" Then
 SourcePath = SourcePath & "\"
 End If

 strQuelle = "'" & SourcePath & "[" & Replace(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

Und diese Sub hier zeigt ein Beispiel wie die Funktion verwendet werden kann:

Public Sub HoleDaten3()
Dim Pfad As String
Dim Dateiname As String
Dim Blatt As String
Dim Zellen As String

 Pfad = "D:\DeinPfad\"
 Dateiname = "DeineDatei.xls"
 Blatt = "DeinTabellenblatt"
 Zellen = "B10" 'auch ein Bereich ist möglich: "B10:C20"

 If GetDataClosedWB(Pfad, \_
 Dateiname, \_
 Blatt, \_
 Zellen, \_
 Worksheets("Tabelle1").Range("B10")) Then
 MsgBox "Daten importiert"
 End If
End Sub

Ich könnte mir vorstellen, dass dies ein Ansatz ist, den Du verfolgen könntest/solltest.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -