Autor |
Nachricht |
Leosn
Anmeldedatum: 07.12.2018
Beiträge: 6
|
Verfasst am:
Fr Dez 07, 2018 11:47 |
  |
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 |
|
|
  |
 |
wtuppa
Anmeldedatum: 19.01.2016
Beiträge: 71
Wohnort: Wien
|
Verfasst am:
Fr Dez 07, 2018 14:57 |
  |
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 |
|
  |
 |
Leosn
Anmeldedatum: 07.12.2018
Beiträge: 6
|
Verfasst am:
Fr Dez 07, 2018 23:26 |
  |
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. |
|
|
  |
 |
icke1954
Moderator
Anmeldedatum: 19.04.2014
Beiträge: 17200
|
Verfasst am:
So Dez 09, 2018 00:13 |
  |
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 S4 Android 10.0
Samsung Galaxy S20 / Android 13.0
Samsung Galaxy Tab S8 + / Android 14.0
MPE Version 2.2 akt. Nightly / akt. MPE-Client Beta |
|
   |
 |
Leosn
Anmeldedatum: 07.12.2018
Beiträge: 6
|
Verfasst am:
So Dez 09, 2018 11:40 |
  |
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 ) 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!  |
|
|
  |
 |
icke1954
Moderator
Anmeldedatum: 19.04.2014
Beiträge: 17200
|
Verfasst am:
So Dez 09, 2018 12:53 |
  |
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 S4 Android 10.0
Samsung Galaxy S20 / Android 13.0
Samsung Galaxy Tab S8 + / Android 14.0
MPE Version 2.2 akt. Nightly / akt. MPE-Client Beta |
|
   |
 |
FJ
Site Admin
Anmeldedatum: 15.02.2006
Beiträge: 31872
Wohnort: Tirol
|
Verfasst am:
Mo Dez 10, 2018 08:25 |
  |
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 |
|
    |
 |
icke1954
Moderator
Anmeldedatum: 19.04.2014
Beiträge: 17200
|
Verfasst am:
Mo Dez 10, 2018 09:47 |
  |
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
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 S4 Android 10.0
Samsung Galaxy S20 / Android 13.0
Samsung Galaxy Tab S8 + / Android 14.0
MPE Version 2.2 akt. Nightly / akt. MPE-Client Beta |
|
   |
 |
Leosn
Anmeldedatum: 07.12.2018
Beiträge: 6
|
Verfasst am:
Mo Dez 10, 2018 10:58 |
  |
Super danke das ist es.
Ja ich hatte die Vermutung dass sowas gibt nur gefunden habe ich es nicht (hab nicht richtig danach gesucht )
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 |
|
|
|
  |
 |
|