9. April 2008 16:24
Hi Leute,
erstelle eine Excel-Datei aus Navision.
Nun möchte ich wenn ich auf "speichern unter" klicke,
dass mir dieser Pfad im Code vorbelegt wird.
Ist dies möglich??
Vielen Dank
9. April 2008 16:55
Hi,
ich habe kurz in die Excel Tabelle in Navision geschaut. Beim Workbook kann man mit SaveAs den Pfad angeben. Ob er das allerdings direkt speichert oder das Fenster nochmal aufgeht, konnte ich jetzt nicht pruefen.
Hier gibts noch die Liste mit den
Excel Enumerations.
Gruesse
feri
9. April 2008 17:52
Mit SaveAs wird das Dokument ohne Dialog gespeichert.
Gruss
10. April 2008 10:44
Hi,
konnte auch keinen Parameter mehr finden, der das steuert. :(
Gruesse
feri
4. Juni 2008 10:54
Habe eine ähnliche Anforderung, das wenn der Dialog zum Speichern erscheint, ich einen Standardpfad definieren möchte. Bisher auch noch keine Lösung gefunden.
Zuletzt geändert von 3TageWach am 4. Juni 2008 12:28, insgesamt 1-mal geändert.
4. Juni 2008 12:26
Habs hinbekommen, indem ich die CodeUnit "Common Dialog Management" neu abgespeichert, in der Zeile „CommonDialogControl.InitDir := DefaultFileName;“, das „DefaultFileName“ mit dem "Wunsch"-Pfad ersetzt und die neue CodeUnit entsprechend in die notwendige Stelle (Globals) eingebunden habe.
// jetzt wäre noch zu überlegen ob es möglich ist den Pfad dynamisch durch eine variable anzupassen...
Mal ein praktisches Beispiel zum Verständniss:
Ich habe ein Reklamationsformular (wo alle Reklamationen zum aktuellen Kunden aufgelistet werden), mit einem Menübutton --> "Zeile" --> "Bild".
Hier erscheint dann eine Tabelle mit den Bildnamen und Bildpfaden die bereits gespeichert wurden. Jeder Kunde hat seinen eigenen Bildordner.
In dieser Tabelle gibt es einen weitere Menübutton mit der Auswahl: speichern, öffnen, löschen.
Wenn man nun auf Speichern klickt, öffnet sich der Windows Dialog wo man das Bild speichern möchte. Schön wäre es wenn der Speicherpfad direkt in den entsprechenden Kundenordner zeigen würde (welcher pro Kunde unterschiedlich ist), damit man sich auch noch die Suche nach dem richtigen Ordner sparen kann.
In der o.g. Stelle der Codeunit steht nun z.B. X:\Reklamation\Bilder, wodurch der Speicherpfad auf den übergeordneten Ordner gesetzt ist.
Nun habe ich mir überlegt das ich es vielleicht in etwa so umsetzen könnte:
X:\Reklamation\Bilder\GLOBALEVARIABLE\.
Nun in der CodeUnit "Common Dialog Management" eine Global anlegen und diese im Code so definieren das sie exakt den Namen des Bildordners bekommt... Könnte man ja bestimmt dann auf die Kundennummer beziehen lassen.
8. August 2008 11:14
*push
Zum Standardspeicherpfad problem scheint es sonst keine schöne Lösung zu geben, oder?
Ich möchte nicht unbedingt für so etwas extra eine Neue Codeunit erzeugen, da wir eh schon einen gewissen engpass im Bereich der verfügbaren Objekte haben.
8. August 2008 15:44
Hast Du schon mal etwas mit SHELL &
Chdir (Cd) probiert?
8. August 2008 16:05
öhm... ne^^
klär mich auf :P
11. August 2008 16:50
Versuche doch mal ein cd über den Shell-Befehl abzusetzten. Klappt dies? Wenn ja, hat es eine Auswirkung auf Excel?
SHELL
Use this function to execute external programs and operating system commands from C/AL programs. You can run this function modally or non-modally, depending on whether or not you include the return value from the external program in your code.
[ReturnCode]:= SHELL(Name [, Param, ...])
ReturnCode
Data type: integer
ReturnCode is used for two different purposes:
First, if ReturnCode is used, the external program will be run modally, while it will be run non-modally if ReturnCode is not used. For instance, if you want to go to the operating system and get a directory listing and then bring that information back into the system, include ReturnCode. Omit ReturnCode if you want to run the external program non-modally. For instance, if all you want to do is pass information (such as a name and address) to a standardized letter that is set up in a word processor, you would omit the ReturnCode.
Second, ReturnCode can contain the return value of the external program. Since external programs can return different codes to reflect whether errors occurred during the execution of the program, the values stored in ReturnCode depend on the external program.
Name
Data type: text or code
The path and name of the command. When you enter the path, keep in mind these shortcuts:
You can...
If the command is located...
Omit the drive designation
On the current drive
Omit the full path
In the current directory
Enter only the subdirectory name
In a subdirectory of the current directory
Param,...
Data type: text or code
One or more optional arguments sent with the external program or command. The system treats each parameter as a substring and concatenates all parameters into a single string, separated by spaces, which forms the argument to the command. For example, the system concatenates 'a', 'b', into 'a b'.
To pass multiple parameters to the command, enter the parameters, either as individual arguments or as a string with the arguments separated by spaces. The total length of the strings cannot exceed 128 characters.
Example
Here is an example of how you can use the SHELL function:
SHELL('c:\joe\myprog.exe', 'arg1', 'arg2');
This statement executes a program named myprog.exe in the directory c:\joe. There are two arguments, arg1 and arg2, which are passed to the function. To call the DOS command DIR, you would use this code:
CommandProcessor := 'c:\command.com';
Argument := '/c';
DOSCommand := 'dir';
SHELL(CommandProcessor, Argument, DOSCommand);
Chdir (Cd)Zeigt den Namen des aktuellen Verzeichnisses an oder wechselt den aktuellen Ordner. Wird chdir nur mit einem Laufwerkbuchstaben (beispielsweise chdir C:) verwendet, zeigt es diesen Laufwerkbuchstaben und den Namen des Ordners an, der auf dem Laufwerk der aktuelle Ordner ist. Ohne Parameter zeigt chdir das aktuelle Laufwerk und den aktuellen Ordner an.
Syntax
chdir [[/d] [Laufwerk:][Pfad] [..]] [[/d] [Laufwerk:][Pfad] [..]]
cd [[/d] [Laufwerk:][Pfad] [..]] [[/d] [Laufwerk:][Pfad] [..]]
Parameter
/d
Wechselt das aktuelle Laufwerk oder das aktuelle Verzeichnis für ein Laufwerk.
[Laufwerk:][Pfad]
Gibt das Laufwerk (sofern es nicht das aktuelle Laufwerk ist) und das Verzeichnis an, zu dem Sie wechseln möchten.
[..]
Gibt an, dass Sie zum übergeordneten Ordner wechseln möchten.
/?
Zeigt Hilfe an der Eingabeaufforderung an.
Hinweise
Arbeiten mit Befehlserweiterungen
Wenn die Befehlserweiterungen aktiviert sind (dies ist die Standardeinstellung), stimmt der aktuelle Verzeichnispfad genau so mit den Ordnernamen überein, wie diese auf der Festplatte angezeigt werden, wobei hinsichtlich Groß-/Kleinschreibung dasselbe Ordnernamensformat verwendet wird. Wenn der Ordner auf der Festplatte z. B. den Namen C:\Temp hat, legt CD C:\TEMP das aktuelle Verzeichnis auf C:\Temp fest, um mit dem Ordnernamensformat des Ordners auf der Festplatte übereinzustimmen.
Wenn Sie die Befehlserweiterungen für einen bestimmten Vorgang deaktivieren möchten, geben Sie Folgendes ein:
cmd e:off
Wenn Sie die Befehlserweiterungen deaktiviert haben, behandelt chdir Leerzeichen nicht als Trennzeichen. Dies hat zur Folge, dass Sie zu einem Unterverzeichnis, dessen Name ein Leerzeichen enthält, wechseln können, ohne [Pfad] in Anführungszeichen setzen zu müssen. Beispielsweise wechselt der folgende Pfad zum Unterverzeichnis \Gemeinsame Dateien:
cd \Programme\Gemeinsame Dateien
Weitere Informationen zum Aktivieren und Deaktivieren von Befehlserweiterungen finden Sie unter dem Stichwort cmd unter "Verwandte Themen" .
Wechseln zum Stammverzeichnis
Das Stammverzeichnis ist das oberste Verzeichnis in der Hierarchie eines Laufwerkes. Geben Sie Folgendes ein, um zum Stammverzeichnis zurückzukehren:
cd\
Wechseln des Standardverzeichnisses auf einem Laufwerk von einem anderen Laufwerk aus
Geben Sie einen der folgenden Befehle ein, um das Standardverzeichnis auf einem Laufwerk zu wechseln, das nicht das aktuelle Laufwerk ist:
chdir [Laufwerk:\[Verzeichnis]]
cd [Laufwerk:\[Verzeichnis]]
Geben Sie einen der folgenden Befehle ein, um den Verzeichniswechsel zu überprüfen:
chdir [Laufwerk:]
cd [Laufwerk:]
Der Befehl chdir ist (mit verschiedenen Parametern) aus der Wiederherstellungskonsole verfügbar.
Beispiele
Wenn Sie den Befehl chdir mit einem Laufwerknamen verwenden, zeigt er das aktuelle Verzeichnis dieses Laufwerkes an. Wenn Sie beispielsweise cd c: an der Eingabeaufforderung C:\Temp eingeben, wird Folgendes angezeigt:
C:\Temp
Geben Sie einen der folgenden Befehle ein, um das aktuelle Verzeichnis zum Verzeichnis Berichte zu wechseln:
chdir \berichte
cd \berichte
Geben Sie Folgendes ein, um das aktuelle Verzeichnis zum Unterverzeichnis \Spezial\Sponsoren zu wechseln:
cd \spezial\sponsoren
Geben Sie folgenden Befehl ein, um zum Unterverzeichnis \Spezial\Sponsoren zu wechseln, wenn \Spezial das aktuelle Verzeichnis ist:
cd sponsoren
Geben Sie Folgendes ein, um von einem Unterverzeichnis zu dessen übergeordnetem Verzeichnis zu wechseln:
cd ..
Verwenden Sie chdir bzw. cd ohne Parameter, um den Namen des aktuellen Verzeichnisses anzuzeigen. Wenn das aktuelle Verzeichnis beispielsweise Benutzer\Keller auf Laufwerk B: ist, wird nach dem Eingeben von chdir Folgendes angezeigt:
B:\Benutzer\Keller
Geben Sie die folgenden Befehle ein, um alle Dateien in den Verzeichnissen \Benutzer\Keller und \Benutzer\Meier auf Laufwerk C: in das Stammverzeichnis von Laufwerk D: zu kopieren:
chdir c:\benutzer\keller
copy c:*.* d:\
chdir c:\benutzer\meier
copy c:*.* d:\
Geben Sie Folgendes ein, um alle Dateien in den Verzeichnissen \Benutzer\Keller und \Benutzer\Meier auf Laufwerk C: in das aktuelle Verzeichnis auf Laufwerk D: zu kopieren:
chdir c:\benutzer\keller
copy c:*.* d:
chdir c:\benutzer\meier
copy c:*.* d:
Formatting legend
Format Meaning
Italic Information that the user must supply
Bold Elements that the user must type exactly as shown
Ellipsis (...) Parameter that can be repeated several times in a command line
Between brackets ([]) Optional items
Between braces ({}); choices separated by pipe (|). Example: {even|odd} Set of choices from which the user must choose only one
Courier font Code or program output