Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Variablen füllen mit Schleife
#11
In meinen Code lässt sich Deine Schleife nicht einbauen.

Public Function ErstelleMenueInhalt(strConfigPath As String, strMenuPoint As String, strFrom As Long, strTo As Long) As String
 
 Dim lngMenuPos         As Long
 Dim strReturn          As String
 Dim strButtonString    As String
 Dim strIsSeparator     As String
 Dim strSepName         As String
 Dim strCaption         As String
 Dim strMacro           As String
 Dim strButtonID        As String
 Dim strImageMSO        As String
 Dim strScreentip       As String
 Dim strSupertip        As String
 Dim strKeytip          As String
 Dim strTag             As String
 
 
     strReturn = Space$(MAX_COUNT)
     
     For lngMenuPos = strFrom To strTo
     
         strCaption = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "Caption", strConfigPath)
         strMacro = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "MacroName", strConfigPath)
         strButtonID = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "ButtonID", strConfigPath)
         strImageMSO = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "imageMSO", strConfigPath)
         strIsSeparator = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "isSeparator", strConfigPath)
         strSepName = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "separatorID", strConfigPath)
         strScreentip = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "screentip", strConfigPath)
         strSupertip = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "supertip", strConfigPath)
         strKeytip = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "key", strConfigPath)
         strTag = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "tag", strConfigPath)
         
         
         If strIsSeparator = "1" Then
            strButtonString = strButtonString & _
                              "<menuSeparator id=""" & strSepName & lngMenuPos & """/>"
         End If
                
         strButtonString = strButtonString & _
                           "<button id=""" & strButtonID & lngMenuPos & """" & _
                           " label=""" & strCaption & """"
                           

         If strImageMSO <> "" Then
            strButtonString = strButtonString & " imageMso=""" & strImageMSO & """"
         End If
         
         If strScreentip <> "" Then
            strButtonString = strButtonString & " screentip=""" & strScreentip & """"
         End If
     
         If strSupertip <> "" Then
            strButtonString = strButtonString & " supertip=""" & strSupertip & """"
         End If
         
         If strKeytip <> "" Then
            strButtonString = strButtonString & " keytip=""" & strKeytip & """"
         End If
         
         If strTag <> "" Then
            strButtonString = strButtonString & " tag=""" & strTag & """"
         End If
     
         strButtonString = strButtonString & " on‌Action=""" & strMacro & """/>"
     
     Next lngMenuPos
     
     ErstelleMenueInhalt = strButtonString
         
End Function


VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2002-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


(05.12.2016, 21:02)snb schrieb: (...) In Word braucht man kein API für privateprofilestring (...)
Mein Code soll aber auch in Excel und Powerpoint laufen. Daher achte ich in meinem RibbonX-Workshop auch auf Kompatibilität zu allen drei Officeprogrammen.
Antworten Top
#12
Das versteh ich gar nicht:

Läuft makellos ohne und mit Deklaration.
Schau mal Typename an. Und es gibt auch noch Fenster 'Lokal' im VBEditor.


Code:
Option Explicit
Dim sn, sp, strConfigPath, strMenuPoint, j

Sub M_snb()
    strConfigPath = Split(ThisDocument.FullName, ".")(0) & ".ini"
    strMenuPoint = "snb"

   sp = Split("Caption MacroName ButtonId imageMSO isSeparator separatorID screentip supertip key tag")
   MsgBox TypeName(sp)
   
   sn = sp
   For j = 0 To UBound(sp)
      sn(j) = MenueinhaltEinlesen(strMenuPoint & j, sp(j), strConfigPath)
      MsgBox sn(j)
   Next
End Sub

Function MenueinhaltEinlesen(c01, c02, c03)
     MsgBox c01 & vbTab & c02 & vbTab & c03
    MenueinhaltEinlesen = c01 & vbTab & c02 & vbTab & c03
End Function
Antworten Top
#13
Ich meine die Deklarationen in der Klammer.

Funktioniert: Function MenueinhaltEinlesen(c01, c02, c03)
Funktioniert nicht: Function MenueinhaltEinlesen(c01 As String, c02 As Long, c03 As Long)
Antworten Top
#14
Für das Register verwendet man einfach ohne API:


Code:
Sub M_snb()
      with CreateObject("wscript.shell")
          msgbox .regread("HKEY_CURRENT_USER\Control Panel\International\sList")    '   reading
         .regwrite "HKEY_CURRENT_USER\Control Panel\International\sList", ";"             'writing
     end wth
end sub
Antworten Top
#15
Ich möchte aber nicht die Registrierungsdatenbank auslesen sondern eine Konfigurationsdatei (INI-File). "RegRead" & Co. kenne ich natürlich.
Antworten Top
#16
Du verwendest:

strCaption = MenueinhaltEinlesen(strMenuPoint + CStr(lngMenuPos), "Caption", strConfigPath)

und
Function MenueinhaltEinlesen(c01 As String, c02 As Long, c03 As Long)

Das kann doch nie klappen ???

strMenuPoint + CStr(lngMenuPos)= string
"Caption"=string
strConfigPath=string

Ergo
Function MenueinhaltEinlesen(c01 As String, c02 As String, c03 As String)

oder

Function MenueinhaltEinlesen(c01 , c02 , c03)

immer gut.
Antworten Top
#17
(05.12.2016, 21:43)snb schrieb: (...) Function MenueinhaltEinlesen(c01 As String, c02 As Long, c03 As Long) (...)
Das war doch nur ein Beispielcode (der von Dir) bzw. eine Beispielzeile. In meinem Code muss das natürlich anders lauten. Auf meinen Code bezogen muss das wie folgt lauten.

Funktioniert nicht: MenueinhaltEinlesen(strMenueName As String, strMenueAttribut As String, strINIPfad As String) As String (dabei ist es egal wie bzw. als was die Variablen deklariert sind)
Funktioniert: MenueinhaltEinlesen(strMenueName, strMenueAttribut, strINIPfad) As String
Antworten Top
#18
Un dann reicht diese Code im ganzen:


Code:
Sub M_snb()
    c01 = Split(ThisDocument.FullName, ".")(0) & ".ini"
    c02 = "snb_001"
    c03 = 12
    c04 = 20
End Sub

Public Function ErstelleMenueInhalt(strConfigPath As String, strMenuPoint As String, strFrom As Long, strTo As Long) As String
  sp = Split("Caption MacroName ButtonId imageMSO isSeparator separatorID screentip supertip key tag")
     
  For j = strFrom To strTo
    sn = sp
    For jj = 0 To UBound(sp)
      sn(jj) = sn(jj) & "=" & MenueinhaltEinlesen(strMenuPoint & jj, sp(jj), strConfigPath)
    Next
   
    ErstelleMenueInhalt = ErstelleMenueInhalt & Replace(Replace(Replace(Join(Filter(sn, "="), """"), "Caption=", "label="""), "ButtonId=", "<button id="""), "IsSeparator=", "<menuSeparator id=""")
  Next
End Sub
Antworten Top
#19
Der Code macht aber nicht das was er soll, da kommt etwas raus was nicht rauskommen soll.

Ich bleibe doch bei meinem Code. Der ist zwar optisch etwas unfein, aber funktioniert.
Antworten Top
#20
Ich hab nur eine Methode gezeigt, keine Komplettlösung geliefert. Die kannst du selbst anhand meiner Vorschlag erstellen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste