FJ Software Foren-Übersicht  
 Homepage   •  Suchen   •  FAQ   •  Mitgliederliste   •  Registrieren   •  Login
 SMS per VBA (Access) verschicken Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Neues Thema eröffnenNeue Antwort erstellen
Autor Nachricht
Leosn



Anmeldedatum: 07.12.2018
Beiträge: 6

BeitragVerfasst am: Fr Dez 07, 2018 11:47 Antworten mit ZitatNach oben

Hallo an alle,

ich habe ein Problem mit dem Text beim Verschicken von SMS durch VBA Shell in Access.

Ich richtete mich nach diesem Post
https://www.fjsoft.at/forum/viewtopic.php?t=22505&highlight=vba

Soweit so gut alles hat geklappt, ausser dass nur die erste Zeile abgeschickt wird.

Mein Code in VBA ist

Code:
Private Sub SendSMS1_Click()

Dim SMS_Tel_1 As String
Dim SMS_Text_1 As String

SMS_Tel_1 = Me!SMS_Tel_1
SMS_Text_1 = Me!resulttext


Shell "C:\Program Files (x86)\MyPhoneExplorer\MyPhoneExplorer.exe action=sendmessage savetosent=1 number=" & SMS_Tel_1 & " text=" & Chr$(34) & SMS_Text_1 & Chr$(34)
End Sub


also wenn im Textfeld ein mehrzeiliger Text steht, wird nur die erste Zeile abgeschickt.

Beispiel:

Sehr geehrte Frau Muster,

nach dem tel. Gespräch schicke ich ihnen... usw.

mit freundlichen Grüßen


was der Empfänger tatsächlich bekommt ist:

Sehr geehrte Frau Muster,

weiter nichts.

Hat jemand einen Tipp oder kennt jemand die Lösung?

Eine SMS als one-row-text ist nicht gerade schön :-/

Edit: Es sieht so aus als würde MyPhoneExplorer nicht richtig mit dem Zeilenumbruch in einem Textfeld durch VBA Shell zurechtkommen.
Wenn ich nämlich ... & "Text" & Chr$(13) & "Text... einsetze, dann geht es wunderbar.

Das ist aber immer noch nicht die richtige Lösung
Benutzer-Profile anzeigenPrivate Nachricht senden
wtuppa



Anmeldedatum: 19.01.2016
Beiträge: 71
Wohnort: Wien

BeitragVerfasst am: Fr Dez 07, 2018 14:57 Antworten mit ZitatNach oben

es könnte auch gut sein, dass MPE gar nicht die volle SMS bekommt, da VBS die SMS nicht richtig übergibt (wegen Newline), da ist $CHR(13) etwas anderes.

nimm doch mal statt MPE einfach ein Shell Script, dass dir alle Parameter ausgibt (und die Anzahl). Vielleicht siehst du dann genauer was passiert.

_________________
Phone: Xiaomi A1 (Android 9.0)
Phone: Samsung A51 (Android 10.0)
Windows 10/64bit, MPE / Client aktuelle
Benutzer-Profile anzeigenPrivate Nachricht senden
Leosn



Anmeldedatum: 07.12.2018
Beiträge: 6

BeitragVerfasst am: Fr Dez 07, 2018 23:26 Antworten mit ZitatNach oben

Hab etwas versucht aber leider ohne Erfolg. Ich habe dafür leider noch keine Lösung gefunden die Shell mit VBA Parameterweise auszugeben.

Das einzige was mir eingefallen ist, mehrere Textfelder in Access als einzelne Zeilen zu erstellen und diese auch so zu nutzen.

Statt also in einem Textfeld alles zu haben, ist jetzt in mehreren Feldern die Nachricht zerteilt um diese in einer Shell mit richtigem Zeilenumruchsbefehl zusammenzuführen. Irre.
Benutzer-Profile anzeigenPrivate Nachricht senden
icke1954
Moderator


Anmeldedatum: 19.04.2014
Beiträge: 15874

BeitragVerfasst am: So Dez 09, 2018 00:13 Antworten mit ZitatNach oben

So sollte es funktionieren:

Code:
Private Sub SendSMS1_Click()

  Dim SMS_Tel_1 As String, SMS_Text_1 As String
  Dim arr() As String

  SMS_Tel_1 = Me!SMS_Tel_1
  arr = Split(Me!resulttext.Text, vbLf)
 
  For i = 0 To UBound(arr)
    SMS_Text_1 = SMS_Text_1 & arr(i)
  Next
 
  Shell "C:\Program Files (x86)\MyPhoneExplorer\MyPhoneExplorer.exe action=sendmessage savetosent=1 number=" & _
  SMS_Tel_1 & " text=" & Chr$(34) & SMS_Text_1 & Chr$(34)
 
End Sub

_________________
Samsung Galaxy S3 / Android 4.3
Samsung Galaxy S5 / Android 6.01
Samsung Galaxy S8 / Android 9.0
Samsung Galaxy Tab 4 Android 10.0
Samsung Galaxy S20 / Android 13.0
MPE Version 2.1 akt. Nightly / akt. MPE-Client Beta
Benutzer-Profile anzeigenPrivate Nachricht sendenE-Mail senden
Leosn



Anmeldedatum: 07.12.2018
Beiträge: 6

BeitragVerfasst am: So Dez 09, 2018 11:40 Antworten mit ZitatNach oben

Hallo Icke,

danke für dein Tip, so funktioniert es leider nicht aber die Idee war hervorragend.

Mit deinem Code geht es schon aber als one-row-text und statt
arr = Split(Me!resulttext.Text, vbLf)
muss man arr = Split(Me!resulttext, vbLf) schreiben.

Wer es aber mit Zeilenumbruch haben möchte (ja es geht doch Very Happy ) nutzt diesen Code:


Code:
Private Sub SendSMS1_Click()

Dim linktoMPE As String
Dim SMS_Tel_1 As String
Dim SMS_Text_1 As String
Dim arr() As String

linktoMPE = "C:\Program Files (x86)\MyPhoneExplorer\MyPhoneExplorer.exe" 'Link zum MyPhoneExplorer, muss gegebenenfalls geändert werden

SMS_Tel_1 = Me!SMS_Tel_1 'Me!SMS_Tel_1 = Access Feld mit Telefonnummer z.B. +49 123 456 789
arr = Split(Me!resulttext, vbLf)  'Me!resulttext = Access Feld mit kompletten Text

For i = 0 To UBound(arr)
    SMS_Text_1 = SMS_Text_1 & arr(i) & " " & Chr$(10)  'Zeilenumbruch = " " & Chr$(10) ohne die " " Leerstelle geht es eben nicht
Next
 
    Shell linktoMPE & " action=sendmessage savetosent=1 number=" & SMS_Tel_1 & " text=" & Chr$(34) & SMS_Text_1 & Chr$(34)

End Sub


Danke! Cool
Benutzer-Profile anzeigenPrivate Nachricht senden
icke1954
Moderator


Anmeldedatum: 19.04.2014
Beiträge: 15874

BeitragVerfasst am: So Dez 09, 2018 12:53 Antworten mit ZitatNach oben

Leosn hat Folgendes geschrieben:
danke für dein Tip, so funktioniert es leider nicht

Also bei mir funktioniert ...
1. Me!resulttext.Text
2. Me!resulttext
3. resulttext
... problemlos
Ich vermute mal, dass das u.U. an unterschiedlichen Textfeldern in den Userformen liegt ?!

Auch der Zeilenumbruch, allerdings nur beim Empfänger, war OK
In meinem Handy allerdings, wurde der Text der gesendeten SMS, ohne Zeilensprung angezeigt.

Mit Deinem Code werden beim Empfänger dann doppelte Zeilensprünge erzeugt.
Um diese beim Empfänger zu vermeiden, habe ich das jetzt so gelöst:

Code:
Private Sub SendSMS1_Click()

  Dim linktoMPE As String
  Dim SMS_Tel_1 As String
  Dim SMS_Text_1 As String
  Dim arr() As String

  linktoMPE = "C:\Program Files (x86)\MyPhoneExplorer\MyPhoneExplorer.exe" 'Link zum MyPhoneExplorer, muss gegebenenfalls geändert werden

  SMS_Tel_1 = Me!SMS_Tel_1 'Me!SMS_Tel_1 = Access Feld mit Telefonnummer z.B. +49 123 456 789
  arr = Split(Me!resulttext, vbLf)  'Me!resulttext = Access Feld mit kompletten Text
 
  For i = 0 To UBound(arr)
    If Not i = UBound(arr) Then
      SMS_Text_1 = SMS_Text_1 & Replace(arr(i), Chr$(13), "") & " " & Chr$(10)
    Else
      SMS_Text_1 = SMS_Text_1 & Replace(arr(i), Chr$(13), "")
    End If
  Next
 
  Shell linktoMPE & " action=sendmessage savetosent=1 number=" & SMS_Tel_1 & " text=" & Chr$(34) & SMS_Text_1 & Chr$(34)

End Sub

_________________
Samsung Galaxy S3 / Android 4.3
Samsung Galaxy S5 / Android 6.01
Samsung Galaxy S8 / Android 9.0
Samsung Galaxy Tab 4 Android 10.0
Samsung Galaxy S20 / Android 13.0
MPE Version 2.1 akt. Nightly / akt. MPE-Client Beta
Benutzer-Profile anzeigenPrivate Nachricht sendenE-Mail senden
FJ
Site Admin


Anmeldedatum: 15.02.2006
Beiträge: 31478
Wohnort: Tirol

BeitragVerfasst am: Mo Dez 10, 2018 08:25 Antworten mit ZitatNach oben

Es gibt eine FAQ zu den Startparametern von MyPhoneExplorer: https://www.fjsoft.at/forum/viewtopic.php?t=373
Dort steht unter anderem:
Zitat:
action=sendmessage savetosent=1 number=0123456789;453827684;7365465 text="Hallo%nTesttext" - eine Nachricht wird direkt versandt. Es können mehrere Empfänger angegeben werden - durch Seperator getrennt. Der Text MUSS in Anführungszeichen stehen. Zeilenumbruch wird durch %n representiert


Außerdem sollte in VBA immer die Konstante vbNewLine verwendet werden - nicht vbCr oder vbLf oder Chr(10) oder Chr(13) - also:
Code:
text = Replace(text,vbNewLine,"%n")

_________________
Ich bitte um Verständnis daß ich aufgrund des hohen Aufkommens im Forum und meines zeitlichen Rahmens nichtmehr jeden Thread im Forum persönlich lesen bzw. beantworten kann.

Bitte benutzt auch die Forum-Suche bzw. die FAQ
Benutzer-Profile anzeigenPrivate Nachricht sendenE-Mail sendenICQ-Nummer
icke1954
Moderator


Anmeldedatum: 19.04.2014
Beiträge: 15874

BeitragVerfasst am: Mo Dez 10, 2018 09:47 Antworten mit ZitatNach oben

Hallo Franz,
da fällt mir nur folgendes zu ein:
Betrifft (%n) : Wer lesen kann ist eindeutig im Vorteil !
Der Rest: Warum so einfach, wenn es auch kompliziert geht Embarassed
Jedenfalls, vielen Dank für die Hilfe!
Gruß icke

_________________
Samsung Galaxy S3 / Android 4.3
Samsung Galaxy S5 / Android 6.01
Samsung Galaxy S8 / Android 9.0
Samsung Galaxy Tab 4 Android 10.0
Samsung Galaxy S20 / Android 13.0
MPE Version 2.1 akt. Nightly / akt. MPE-Client Beta
Benutzer-Profile anzeigenPrivate Nachricht sendenE-Mail senden
Leosn



Anmeldedatum: 07.12.2018
Beiträge: 6

BeitragVerfasst am: Mo Dez 10, 2018 10:58 Antworten mit ZitatNach oben

Super danke das ist es.
Ja ich hatte die Vermutung dass sowas gibt nur gefunden habe ich es nicht (hab nicht richtig danach gesucht Rolling Eyes )

Also nochmal und richtig:

Code:
Private Sub SendSMS1_Click()

Dim linktoMPE As String
Dim SMS_Tel_1 As String
Dim SMS_Text_1 As String

linktoMPE = "C:\Program Files (x86)\MyPhoneExplorer\MyPhoneExplorer.exe" 'Link zum MyPhoneExplorer, muss gegebenenfalls geändert werden

SMS_Tel_1 = Me!SMS_Tel_1 'Access Feld mit Telefonnummer z.B. +49 123 456 789

SMS_Text_1 = Me!resulttext 'Access Feld mit Text

SMS_Text_1 = Replace(SMS_Text_1, vbNewLine, "%n")

Shell linktoMPE & " action=sendmessage savetosent=1 number=" & SMS_Tel_1 & " text=" & Chr$(34) & SMS_Text_1 & Chr$(34)

End Sub
Benutzer-Profile anzeigenPrivate Nachricht senden
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen


 Gehe zu:   



Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Alle Zeiten sind GMT + 1 Stunde
Deutsche Übersetzung von phpBB.de