von mumpel » Di, 06.01.2009 13:49
Danke, aber das nützt mir in diesem Fall nichts. Es soll nicht der Wert in der Zelle gesäubert werden, sondern nur der übergeben Wert. Um zu verdeutlichen, was ich meine, hänge ich mal den ganzen Code (hier aus Excel) an. Ohne die Replacefunktion funktioniert es auch in OOo problemlos. Die Replacefunktion habe ich aber erst vor ein paar Tagen in Excel eingebaut. Ich bin mir ziemlich sicher, dass es diese Replacefunktion auch in OOo-Starbasic gibt, nur muss man es anders programmieren.
Code: Alles auswählen
Option Private Module
Option Explicit
Declare Function tapiRequestMakeCall Lib "Tapi32.dll" (ByVal DestAddress As String, _
ByVal AppName As String, ByVal CalledParty As String, ByVal Comment As String) As Long
Public A$
Sub Telefonieren(TelefonNr$, derName$)
Application.EnableCancelKey = False
Dim retval As Long
retval = tapiRequestMakeCall(TelefonNr, "", derName, "")
If retval <> 0 Then
MsgBox "Beim Verbindungsaufbau ist ein Fehler aufgetreten!"
End If
End Sub
Sub WählHilfeAufrufen(control As IRibbonControl)
NummerAnWählhilfeÜbergeben ActiveCell.Value, " "
End Sub
Sub NummerSenden()
NummerAnWählhilfeÜbergeben ActiveCell.Value, " "
End Sub
Sub BoxWahlRaus(control As IRibbonControl, ByRef Rufnummer)
Dim Eingabe As String
Eingabe = Rufnummer
NummerAnWählhilfeÜbergeben Eingabe, " "
End Sub
Public Sub NummerAnWählhilfeÜbergeben(strT As String, Name As String)
Application.EnableCancelKey = False
Dim cancel As Boolean
Dim i As Integer
Dim s As String
Dim ST As String
If strT = "" Then GoTo Prüfpunkt
Rem Ersetzen von Sonderzeichen in zu wählenden Rufnummern
Rem "ST" = Auslesen der Länderkennung (in Registry gespeichert)
ST = GetSetting("RMH_Installationen", "w2007", "STKenn")
strT = Replace(strT, "_", " ")
strT = Replace(strT, "<", " ")
strT = Replace(strT, ">", " ")
strT = Replace(strT, "[", " ")
strT = Replace(strT, "]", " ")
strT = Replace(strT, "~", " ")
strT = Replace(strT, "*", " ")
strT = Replace(strT, "#", " ")
strT = Replace(strT, "\", " ")
strT = Replace(strT, "/", " ")
strT = Replace(strT, "-", " ")
strT = Replace(strT, "(", " ")
strT = Replace(strT, ")", " ")
If ST = "DE" And Left(strT, 3) = "+49" Then
strT = Replace(strT, "+49", "0")
ElseIf ST = "AT" And Left(strT, 3) = "+43" Then
strT = Replace(strT, "+43", "0")
ElseIf ST = "CH" And Left(strT, 3) = "+42" Then
strT = Replace(strT, "+42", "0")
End If
Rem "s" = Auslesen der Einstellung für Gültigkeitsprüfung (in Registry gespeichert)
s = GetSetting("RMH_Installationen", "Pruefung", "2")
If s = "0" Then GoTo VorwahlPrüfung
If Left(strT, 1) = "+" Then
strT = Replace(strT, "+", "00 ")
GoTo VorwahlPrüfung
End If
strT = Replace(strT, " ", "")
Rem Ende Ersetzen
Rem Beginn Gültigkeitsprüfung
For i = Len(strT) To 1 Step -1
If IsNumeric(strT) And Len(strT) > 5 And Left(strT, 1) = "0" And Not IsDate(strT) Then GoTo VorwahlPrüfung
Next i
Prüfpunkt:
MsgBox "Der Text entspricht keiner gültigen Telefonnummer. " & Chr(13) & _
"Der Vorgang wurde abgebrochen!!! " & Chr(13) & _
"Die Telefonnummer muss mindestens sechsstellig sein. " & Chr(13) & Chr(13) & _
"Bitte immer die Ortsvorwahl mit angeben ! " & Chr(13) & _
"Bitte nur gültige Telefonnummern angeben! " & Chr(13) & _
"z.B. 0891234 oder +43(1)1234567. " & Chr(13) & _
" " & Chr(13) & Chr(13), vbOKOnly, "Anwenderfehler !!!"
Exit Sub
Rem Ende Güligkeitsprüfung
Rem Beginn Vorwahlprüfung
VorwahlPrüfung:
strT = Replace(strT, "R", "")
If Left(strT, 4) = "0800" Then GoTo NummerServicedienste
If Left(strT, 4) = "0190" Or Left(strT, 4) = "0180" _
Or Left(strT, 4) = "0137" Or Left(strT, 4) = "0900" _
Or Left(strT, 4) = "0136" Then GoTo ServiceWarnung
If Left(strT, 3) = "010" Or Left(strT, 3) = "011" _
Or Left(strT, 3) = "012" Or Left(strT, 3) = "013" _
Or Left(strT, 3) = "014" Or Left(strT, 3) = "015" Then GoTo AnbieterVorwahl
If Left(strT, 2) = "00" Then GoTo NummerAusland
If Left(strT, 4) = "0151" Or Left(strT, 4) = "0152" _
Or Left(strT, 4) = "0159" Or Left(strT, 4) = "0160" _
Or Left(strT, 4) = "0162" Or Left(strT, 4) = "0163" _
Or Left(strT, 4) = "0170" Or Left(strT, 4) = "0171" _
Or Left(strT, 4) = "0172" Or Left(strT, 4) = "0173" _
Or Left(strT, 4) = "0174" Or Left(strT, 4) = "0175" _
Or Left(strT, 4) = "0176" Or Left(strT, 4) = "0177" _
Or Left(strT, 4) = "0178" Or Left(strT, 4) = "0179" Then GoTo NummerMobilfunkInland
Rem Ende Vorwahlprüfung
Rem Beginn Wahlvorgang einleiten
Rem Wählen Festnetznummern Inland
Rem Definierte Anbietervorwahl für Festnetz wird
Rem automatisch vorangestellt
NummerFestnetzInland:
A$ = GetSetting("RMH_Installationen", "w2007", "CBCF") & strT
Telefonieren A, Name
cancel = True
Exit Sub
Rem Wählen Telefonnummern Ausland
Rem Definierte Anbietervorwahl für Auslandsgespräche wird
Rem automatisch vorangestellt
NummerAusland:
If GetSetting("RMH_Installationen", "w2007", "CBCA") = "" Then
A$ = strT
Else
A$ = GetSetting("RMH_Installationen", "w2007", "CBCA") & " " & strT
End If
Telefonieren A, Name
cancel = True
Exit Sub
Rem Wählen Mobilfunknummern Inland
Rem Definierte Anbietervorwahl für Mobilfunk wird
Rem automatisch vorangestellt
NummerMobilfunkInland:
A$ = GetSetting("RMH_Installationen", "w2007", "CBCM") & strT
Telefonieren A, Name
cancel = True
Exit Sub
Rem Wählen von Sonderrufnummern (Call By Call wird nicht berücksichtigt)
NummerServicedienste:
A$ = strT
Telefonieren A, Name
cancel = True
Exit Sub
Rem Ende Wahlvorgang einleiten
Rem Beginn Meldung 0190-Warner
ServiceWarnung:
Rem Auslesen der Einstellung für 0190-Warner (in Registry gespeichert)
If GetSetting("RMH_Installationen", "Warner", "2") = "0" Then GoTo NummerServicedienste
If MsgBox _
("Sie versuchen, eine Servicenummer zu wählen. " & Chr(13) & Chr(13) & _
"Es könnte sich um eine teure Servicenummer handeln. " & Chr(13) & Chr(13) & _
"****** Möchten Sie dies wirklich? ****** " & Chr(13) & Chr(13) & _
"Klicken Sie auf ja, wenn Sie die Nummer wählen möchten! " & Chr(13) & Chr(13) & _
"Klicken Sie auf nein, um den Vorgang abzubrechen! ", 308, " *** Sicherheitsfrage *** ") = 6 Then _
GoTo NummerServicedienste
Exit Sub
Rem Ende Meldung 0190-Warner
Rem Beginn Meldung Anbietervorwahl
AnbieterVorwahl:
MsgBox "Sie haben versucht, eine Anbietervorwahl zu benutzen." & Chr(13) & _
"Aus Sicherheitsgründen ist dies nicht erlaubt. Dadurch " & Chr(13) & _
"wären die Sicherheitseinstellungen umgehbar." & Chr(13) & Chr(13) & _
"***** Der Vorgang wurde abgebrochen *****", vbOKOnly + vbExclamation, "Sicherheitshinweis"
Exit Sub
Rem Ende Meldung Anbietervorwahl
Ende:
End Sub
Ich hänge auch mal das Projekt für OOo an, um welches es geht. Mit diesem ist es möglich, Telefonnummern in einer Zelle (Excel, OOo-Calc) oder eine markierte Nummer in Dokumenten (Word/OOo-Writer) zu wählen. In dem aktuellen Projekt gibt es die Replacefunktion noch nicht. Diese ist aber erforderlich, um auch das internationale Format ( +43(1)123456 ) nutzen zu können. Dieses muss aber bereinigt werden, damit daraus
00 43 1 123456 wird. Nur so wird die Telefonnummer von der Wählhilfe korrekt umgesetzt und die Anbietervorwahl nutzbar.
- Dateianhänge
-
- Telefonfunktion_OOo_WinXP.zip
- (41.99 KiB) 83-mal heruntergeladen
Danke, aber das nützt mir in diesem Fall nichts. Es soll nicht der Wert in der Zelle gesäubert werden, sondern nur der übergeben Wert. Um zu verdeutlichen, was ich meine, hänge ich mal den ganzen Code (hier aus Excel) an. Ohne die Replacefunktion funktioniert es auch in OOo problemlos. Die Replacefunktion habe ich aber erst vor ein paar Tagen in Excel eingebaut. Ich bin mir ziemlich sicher, dass es diese Replacefunktion auch in OOo-Starbasic gibt, nur muss man es anders programmieren.
[code]
Option Private Module
Option Explicit
Declare Function tapiRequestMakeCall Lib "Tapi32.dll" (ByVal DestAddress As String, _
ByVal AppName As String, ByVal CalledParty As String, ByVal Comment As String) As Long
Public A$
Sub Telefonieren(TelefonNr$, derName$)
Application.EnableCancelKey = False
Dim retval As Long
retval = tapiRequestMakeCall(TelefonNr, "", derName, "")
If retval <> 0 Then
MsgBox "Beim Verbindungsaufbau ist ein Fehler aufgetreten!"
End If
End Sub
Sub WählHilfeAufrufen(control As IRibbonControl)
NummerAnWählhilfeÜbergeben ActiveCell.Value, " "
End Sub
Sub NummerSenden()
NummerAnWählhilfeÜbergeben ActiveCell.Value, " "
End Sub
Sub BoxWahlRaus(control As IRibbonControl, ByRef Rufnummer)
Dim Eingabe As String
Eingabe = Rufnummer
NummerAnWählhilfeÜbergeben Eingabe, " "
End Sub
Public Sub NummerAnWählhilfeÜbergeben(strT As String, Name As String)
Application.EnableCancelKey = False
Dim cancel As Boolean
Dim i As Integer
Dim s As String
Dim ST As String
If strT = "" Then GoTo Prüfpunkt
Rem Ersetzen von Sonderzeichen in zu wählenden Rufnummern
Rem "ST" = Auslesen der Länderkennung (in Registry gespeichert)
ST = GetSetting("RMH_Installationen", "w2007", "STKenn")
strT = Replace(strT, "_", " ")
strT = Replace(strT, "<", " ")
strT = Replace(strT, ">", " ")
strT = Replace(strT, "[", " ")
strT = Replace(strT, "]", " ")
strT = Replace(strT, "~", " ")
strT = Replace(strT, "*", " ")
strT = Replace(strT, "#", " ")
strT = Replace(strT, "\", " ")
strT = Replace(strT, "/", " ")
strT = Replace(strT, "-", " ")
strT = Replace(strT, "(", " ")
strT = Replace(strT, ")", " ")
If ST = "DE" And Left(strT, 3) = "+49" Then
strT = Replace(strT, "+49", "0")
ElseIf ST = "AT" And Left(strT, 3) = "+43" Then
strT = Replace(strT, "+43", "0")
ElseIf ST = "CH" And Left(strT, 3) = "+42" Then
strT = Replace(strT, "+42", "0")
End If
Rem "s" = Auslesen der Einstellung für Gültigkeitsprüfung (in Registry gespeichert)
s = GetSetting("RMH_Installationen", "Pruefung", "2")
If s = "0" Then GoTo VorwahlPrüfung
If Left(strT, 1) = "+" Then
strT = Replace(strT, "+", "00 ")
GoTo VorwahlPrüfung
End If
strT = Replace(strT, " ", "")
Rem Ende Ersetzen
Rem Beginn Gültigkeitsprüfung
For i = Len(strT) To 1 Step -1
If IsNumeric(strT) And Len(strT) > 5 And Left(strT, 1) = "0" And Not IsDate(strT) Then GoTo VorwahlPrüfung
Next i
Prüfpunkt:
MsgBox "Der Text entspricht keiner gültigen Telefonnummer. " & Chr(13) & _
"Der Vorgang wurde abgebrochen!!! " & Chr(13) & _
"Die Telefonnummer muss mindestens sechsstellig sein. " & Chr(13) & Chr(13) & _
"Bitte immer die Ortsvorwahl mit angeben ! " & Chr(13) & _
"Bitte nur gültige Telefonnummern angeben! " & Chr(13) & _
"z.B. 0891234 oder +43(1)1234567. " & Chr(13) & _
" " & Chr(13) & Chr(13), vbOKOnly, "Anwenderfehler !!!"
Exit Sub
Rem Ende Güligkeitsprüfung
Rem Beginn Vorwahlprüfung
VorwahlPrüfung:
strT = Replace(strT, "R", "")
If Left(strT, 4) = "0800" Then GoTo NummerServicedienste
If Left(strT, 4) = "0190" Or Left(strT, 4) = "0180" _
Or Left(strT, 4) = "0137" Or Left(strT, 4) = "0900" _
Or Left(strT, 4) = "0136" Then GoTo ServiceWarnung
If Left(strT, 3) = "010" Or Left(strT, 3) = "011" _
Or Left(strT, 3) = "012" Or Left(strT, 3) = "013" _
Or Left(strT, 3) = "014" Or Left(strT, 3) = "015" Then GoTo AnbieterVorwahl
If Left(strT, 2) = "00" Then GoTo NummerAusland
If Left(strT, 4) = "0151" Or Left(strT, 4) = "0152" _
Or Left(strT, 4) = "0159" Or Left(strT, 4) = "0160" _
Or Left(strT, 4) = "0162" Or Left(strT, 4) = "0163" _
Or Left(strT, 4) = "0170" Or Left(strT, 4) = "0171" _
Or Left(strT, 4) = "0172" Or Left(strT, 4) = "0173" _
Or Left(strT, 4) = "0174" Or Left(strT, 4) = "0175" _
Or Left(strT, 4) = "0176" Or Left(strT, 4) = "0177" _
Or Left(strT, 4) = "0178" Or Left(strT, 4) = "0179" Then GoTo NummerMobilfunkInland
Rem Ende Vorwahlprüfung
Rem Beginn Wahlvorgang einleiten
Rem Wählen Festnetznummern Inland
Rem Definierte Anbietervorwahl für Festnetz wird
Rem automatisch vorangestellt
NummerFestnetzInland:
A$ = GetSetting("RMH_Installationen", "w2007", "CBCF") & strT
Telefonieren A, Name
cancel = True
Exit Sub
Rem Wählen Telefonnummern Ausland
Rem Definierte Anbietervorwahl für Auslandsgespräche wird
Rem automatisch vorangestellt
NummerAusland:
If GetSetting("RMH_Installationen", "w2007", "CBCA") = "" Then
A$ = strT
Else
A$ = GetSetting("RMH_Installationen", "w2007", "CBCA") & " " & strT
End If
Telefonieren A, Name
cancel = True
Exit Sub
Rem Wählen Mobilfunknummern Inland
Rem Definierte Anbietervorwahl für Mobilfunk wird
Rem automatisch vorangestellt
NummerMobilfunkInland:
A$ = GetSetting("RMH_Installationen", "w2007", "CBCM") & strT
Telefonieren A, Name
cancel = True
Exit Sub
Rem Wählen von Sonderrufnummern (Call By Call wird nicht berücksichtigt)
NummerServicedienste:
A$ = strT
Telefonieren A, Name
cancel = True
Exit Sub
Rem Ende Wahlvorgang einleiten
Rem Beginn Meldung 0190-Warner
ServiceWarnung:
Rem Auslesen der Einstellung für 0190-Warner (in Registry gespeichert)
If GetSetting("RMH_Installationen", "Warner", "2") = "0" Then GoTo NummerServicedienste
If MsgBox _
("Sie versuchen, eine Servicenummer zu wählen. " & Chr(13) & Chr(13) & _
"Es könnte sich um eine teure Servicenummer handeln. " & Chr(13) & Chr(13) & _
"****** Möchten Sie dies wirklich? ****** " & Chr(13) & Chr(13) & _
"Klicken Sie auf ja, wenn Sie die Nummer wählen möchten! " & Chr(13) & Chr(13) & _
"Klicken Sie auf nein, um den Vorgang abzubrechen! ", 308, " *** Sicherheitsfrage *** ") = 6 Then _
GoTo NummerServicedienste
Exit Sub
Rem Ende Meldung 0190-Warner
Rem Beginn Meldung Anbietervorwahl
AnbieterVorwahl:
MsgBox "Sie haben versucht, eine Anbietervorwahl zu benutzen." & Chr(13) & _
"Aus Sicherheitsgründen ist dies nicht erlaubt. Dadurch " & Chr(13) & _
"wären die Sicherheitseinstellungen umgehbar." & Chr(13) & Chr(13) & _
"***** Der Vorgang wurde abgebrochen *****", vbOKOnly + vbExclamation, "Sicherheitshinweis"
Exit Sub
Rem Ende Meldung Anbietervorwahl
Ende:
End Sub
[/code]
Ich hänge auch mal das Projekt für OOo an, um welches es geht. Mit diesem ist es möglich, Telefonnummern in einer Zelle (Excel, OOo-Calc) oder eine markierte Nummer in Dokumenten (Word/OOo-Writer) zu wählen. In dem aktuellen Projekt gibt es die Replacefunktion noch nicht. Diese ist aber erforderlich, um auch das internationale Format ( +43(1)123456 ) nutzen zu können. Dieses muss aber bereinigt werden, damit daraus [color=red]00 43 1 123456[/color] wird. Nur so wird die Telefonnummer von der Wählhilfe korrekt umgesetzt und die Anbietervorwahl nutzbar.