Meinews.de  


Zurück   Meinews.de > Forum > Newsgroups microsoft.public.de.* 1 Forum > Newsgroup microsoft.public.de.excel
Registrieren FAQ Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren

Newsgroup microsoft.public.de.excel Forum microsoft.public.de.excel

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11-05-2009, 08:35 PM
Peter Michel
 
Beiträge: n/a
Standard Bedingte Kompilierung?

Hallo,

ich habe ein Problem mit einem Makro was versionsabhängige additive
Parameter braucht.
Die Zeile SaveAS Filename:=x, FileFormat:=xlCSV
ist unter Versionen vor XP/2002 ok und benutzt das Semikolon als
Separator.
Ab 2002 muss dazu der Paramater Local:=True angegeben werden.
Ich kann zwar zur Laufzeit mit .Version steuern, aber das "Local:=..."
wird mir schon vorher angemeckert :-((
Was tun???

Cheers
Peter
Für direkte email rot13 cebBETN-Yrvzra*jro.qr
oder entferne ".without-this" aus der Email-To. Danke!
Mit Zitat antworten
  #2  
Alt 11-05-2009, 09:15 PM
Martin Worm
 
Beiträge: n/a
Standard Re: Bedingte Kompilierung?

Am Thu, 05 Nov 2009 21:35:32 +0100,schrieb Peter Michel:

hallo,

>ich habe ein Problem mit einem Makro was versionsabhängige additive
>Parameter braucht.
>Die Zeile SaveAS Filename:=x, FileFormat:=xlCSV
>ist unter Versionen vor XP/2002 ok und benutzt das Semikolon als
>Separator.
>Ab 2002 muss dazu der Paramater Local:=True angegeben werden.
>Ich kann zwar zur Laufzeit mit .Version steuern, aber das "Local:=..."
>wird mir schon vorher angemeckert :-((
>Was tun???


Hilfe zu den Stichwörtern #Const und #If lesen ;-)

Sub VersionsabhängigeSpeicherung()
'Hier Version eingeben ab der der Parameter Locale existiert
#Const XL_VersionMitLocale = 11 'Wert geraten
Dim AppVersion As Double
AppVersion = Val(Application.Version)
#If AppVersion < XL_VersionMitLocale Then
ThisWorkbook.SaveAs Filename:="Test", FileFormat:=xlCSV

#Else
ThisWorkbook.SaveAs Filename:="testx", _
FileFormat:=xlCSV, Local:=True

#End If
End Sub

Frage an die Mitleser: Warum ergibt

#If Val(Application.Version) < XL_VersionMitLocale Then

den Fehler "unzulässige Verwendung eines Objekts"

mit freundlichen Grüßen

Martin Worm
--
benutze XL 2000 und Win XP SpX
Mit Zitat antworten
  #3  
Alt 11-06-2009, 08:16 AM
Andreas Killer
 
Beiträge: n/a
Standard Re: Bedingte Kompilierung?

On 5 Nov., 22:15, Martin Worm <Martin.W...*gmx.eu> wrote:

> Frage an die Mitleser: Warum ergibt
>
> *#If Val(Application.Version) < XL_VersionMitLocale Then
>
> den Fehler "unzulässige Verwendung eines Objekts"

Weil die bedingte Compilierung statisch ist und nicht zur Laufzeit
gesteuert werden kann, d.h. man kann Sie nur zur Entwicklungszeit
setzen.

Die Lösung für Peter's Problem sind 2 Sub's in der der eigentliche
Aufruf zum Speichern drin ist und alle nötigen Parameter übergibt man.

Ein "grobes" Beispiel sähe so aus:

Andreas.

Sub Test()
Select Case Val(Application.Version)
Case 9
Save2000
Case Else
Save2002
End Select
End Sub

Sub Save2000(FName As String, WB As Workbook)
WB.SaveAs Filename:=FName, FileFormat:=xlCSV
End Sub

Sub Save2002(FName As String, WB As Workbook)
WB.SaveAs Filename:=FName, FileFormat:=xlCSV, Local:=True
End Sub
Mit Zitat antworten
  #4  
Alt 11-06-2009, 11:06 AM
Martin Worm
 
Beiträge: n/a
Standard Re: Bedingte Kompilierung?

Am Fri, 6 Nov 2009 00:16:25 -0800 (PST),schrieb Andreas Killer:

hallo,

>Sub Save2002(FName As String, WB As Workbook)
> WB.SaveAs Filename:=FName, FileFormat:=xlCSV, Local:=True
>End Sub


das führt bei meinem XL2000 zu dem Fehler
benanntes Argument nicht gefunden

ich dachte, die bedingte Kompilierung ist dafür gedacht,
sowas zu verhindern.

mit freundlichen Grüßen

Martin Worm
--
benutze XL 2000 und Win XP SpX
Mit Zitat antworten
  #5  
Alt 11-06-2009, 11:13 AM
Alexander Wolff
 
Beiträge: n/a
Standard Re: Bedingte Kompilierung?

Als <news:7m08f5lb8vvulded5mvf1j5305na0v4pb9*4ax.com > ließ
Martin Worm verlautbaren, evtl. nachfolgend zitiert:

>> Sub Save2002(FName As String, WB As Workbook)
>> WB.SaveAs Filename:=FName, FileFormat:=xlCSV, Local:=True
>> End Sub

>
> das führt bei meinem XL2000 zu dem Fehler
> benanntes Argument nicht gefunden
>
> ich dachte, die bedingte Kompilierung ist dafür gedacht,
> sowas zu verhindern.


Andreas hat beim Aufruf die Argumentübergabe vergessen.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2

Mit Zitat antworten
  #6  
Alt 11-06-2009, 11:25 AM
Andreas Killer
 
Beiträge: n/a
Standard Re: Bedingte Kompilierung?

On 6 Nov., 12:13, "Alexander Wolff" <oo...*gmx.de> wrote:

> Als <news:7m08f5lb8vvulded5mvf1j5305na0v4pb9*4ax.com > ließ
> Martin Worm verlautbaren, evtl. nachfolgend zitiert:
> >> Sub Save2002(FName As String, WB As Workbook)
> >> *WB.SaveAs Filename:=FName, FileFormat:=xlCSV, Local:=True
> >> End Sub

> > das führt bei meinem XL2000 zu dem Fehler
> > benanntes Argument nicht gefunden

*Martin: Das ist normal, denn diese sub ist nicht für XL2000 gedacht,
passiert bei mir auch.

Solange man aber das Projekt nicht kompiliert und diese Sub nicht
ausführt läuft der Rest des Codes.

> Andreas hat beim Aufruf die Argumentübergabe vergessen.

Stimmt, Entschuldigung, waren die Finger wieder mal schneller als der
Kopf. :-))

Andreas.

Sub Test()
Dim FName As String
FName = "test.csv"
Select Case Val(Application.Version)
Case 9
Save2000 FName, ThisWorkbook
Case Else
Save2002 FName, ThisWorkbook
End Select
End Sub

Sub Save2000(FName As String, WB As Workbook)
WB.SaveAs Filename:=FName, FileFormat:=xlCSV
End Sub

Sub Save2002(FName As String, WB As Workbook)
WB.SaveAs Filename:=FName, FileFormat:=xlCSV, Local:=True
End Sub
Mit Zitat antworten
  #7  
Alt 11-06-2009, 01:08 PM
Martin Worm
 
Beiträge: n/a
Standard Re: Bedingte Kompilierung?

Am Fri, 6 Nov 2009 12:13:50 +0100,schrieb Alexander Wolff:

hallo,

>Andreas hat beim Aufruf die Argumentübergabe vergessen.


ich dachte nicht, daß man das mißverstehen könnte.
Unter XL2000 gibt es keinen benannten Parameter Local und das wird
angemeckert.

Fehlende Parameter werden mit Argument ist nicht optional angemeckert

mit freundlichen Grüßen

Martin Worm
--
benutze XL 2000 und Win XP SpX
Mit Zitat antworten
  #8  
Alt 11-09-2009, 03:36 PM
Peter Michel
 
Beiträge: n/a
Standard Re: Bedingte Kompilierung?

On Thu, 05 Nov 2009 21:35:32 +0100, Peter Michel
<proORGA-Leimen.without-this*web.de> wrote:

>Hallo,
>
>ich habe ein Problem mit einem Makro was versionsabhängige additive
>Parameter braucht.
>...

Hallo Freaks!
Super was ihr so baut :-)

Also die Version:
Private Sub Workbook_Open()
Dim I As Long, J As Long
With ThisWorkbook.VBProject.VBComponents("Modul1") _
.CodeModule
On Error Resume Next
I = .ProcBodyLine("SaveAsCSV", 0)
If I > 0 Then
J = .ProcCountLines("SaveAsCSV", 0)
If J > 2 Then .DeleteLines I + 1, J - 2
Select Case Val(Application.Version)
Case 9
.InsertLines I + 1, " WB.SaveAs Filename:=FName, "
& _
"FileFormat:=xlCSV"
Case Else
.InsertLines I + 1, " WB.SaveAs Filename:=FName, "
& _
"FileFormat:=xlCSV, Local:= True"
End Select
End If
End With
End Sub

gefällt mir als "alter Assembler-Programmierer" bitmaessig sau gut!

Als nun mehr aktiver "C/C++-Programmer" habe ich mich dennoch für
diesen entschieden:
#If AppVersion > 9 Then
ThisWorkbook.SaveAs Filename:="Test", FileFormat:=xlCSV
#Else
ThisWorkbook.SaveAs Filename:="testx", _
FileFormat:=xlCSV, Local:=True
#End If

Danke! Super Sache mit Euch 8-))
Cheers
Peter

Für direkte email rot13 cebBETN-Yrvzra*jro.qr
oder entferne ".without-this" aus der Email-To. Danke!
Mit Zitat antworten
  #9  
Alt 11-09-2009, 09:12 PM
Martin Worm
 
Beiträge: n/a
Standard Re: Bedingte Kompilierung?

Am Mon, 09 Nov 2009 16:36:47 +0100,schrieb Peter Michel:

hallo,

freut mich, wenn wir ;-) dir helfen konnten.
Mein Gefühl sagt mir, daß die Zeile

> #If AppVersion > 9 Then


besser

#If AppVersion <= 9 Then

lauten würde.

Version 9 ist XL2000 und da gibt es Local nicht.


> ThisWorkbook.SaveAs Filename:="Test", FileFormat:=xlCSV
> #Else
> ThisWorkbook.SaveAs Filename:="testx", _
> FileFormat:=xlCSV, Local:=True
> #End If


mit freundlichen Grüßen

Martin Worm
--
benutze XL 2000 und Win XP SpX
Mit Zitat antworten
  #10  
Alt 11-10-2009, 02:49 PM
Peter Michel
 
Beiträge: n/a
Standard Re: Bedingte Kompilierung?

>Mein Gefühl sagt mir, daß die Zeile
>
>> #If AppVersion > 9 Then

>
>besser
>
> #If AppVersion <= 9 Then
>
>lauten würde.
>
>Version 9 ist XL2000 und da gibt es Local nicht.


Ja da hast Du recht!
Aber ich hatte mich zu früh gefreut - geht leider nur mit Konstanten!
Hatte halt auf so was wie eine Excel-Version Konstante gehofft.
Daher habe ich jetzt die Lösung mit den beiden Makros realisiert.
Cheers
Peter
Für direkte email rot13 cebBETN-Yrvzra*jro.qr
oder entferne ".without-this" aus der Email-To. Danke!
Mit Zitat antworten
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen
Es ist dir nicht erlaubt, auf Beiträge zu antworten
Es ist dir nicht erlaubt, Anhänge anzufügen
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten

vB Code ist An
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
Kompilierung sehr langsamt / CF 3.5 Jens Tönsing Newsgroup microsoft.public.de.german.entwickler.dotnet.vb 2 05-29-2009 02:44 PM
Kompilierung 32Bit / 64Bit Stefan Theobald Newsgroup microsoft.public.de.german.entwickler.dotnet.vb 2 04-27-2009 08:58 PM
Just-in-time Kompilierung Rolf1964 Newsgroup microsoft.public.de.german.entwickler.dotnet.vb 0 08-15-2008 01:59 PM
bedingte kompilierung .Net-Version Gabor Steingart Newsgroup de.comp.lang.delphi.misc 0 10-16-2007 12:06 AM
Kompilierung schlägt fehl Erik Newsgroup de.comp.text.tex 5 09-15-2007 02:33 PM


Alle Zeitangaben in WEZ. Es ist jetzt 07:18 AM Uhr.





Powered by: vBulletin Version 3.6.7 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Forum SEO by Zoints