====== [VBA] heredoc() ====== In VBA ist es leider fast nicht möglich, einen längeren fixen Text in eine Variable zu drücken ohne ihn unlesbar zu machen. heredoc() ist mein Versuch das zu vereinfachen. Dabei wird ein Text in der heredoc-Formatierung als Kommentar erfasst. heredoc() liest diesen dann aus und gibt ihn als String zurück. Die ausgelesenen Strings werden in einem Dictionary gecached. Wenn derselbe String nochmals abgefragt wird, muss so nicht mehr der VB-Code durchsucht werden. > Das ganze ist zu aufwendig. Ich selber verwedne es nur sehr selten. Aber der Ansatz finde ich interessant. {{:vba:functions:udf_heredoc.bas|download udf_heredoc.bas}} ===== Definitionen ===== Public Function heredoc( _ ByVal iModulName As String, _ ByVal iName As String, _ Optional ByVal iClearCache As Boolean = False _ ) As String ***iModulName** Name des Moduls ***iName** Name der Variable ***iClearCache** Angabe, ob der Objektcache geleert werden soll ===== Beispiel ===== > Für die Ausgabe der Resultate verwendete ich die Funktion [[vba:functions:print_r:index]] > Für den Test_3 verwende ich noch [[vba:functions:printf:index]] um die Möglichekit zu zeigen, mit Platzhalter zu arbeiten Option Explicit 'text_1 = << Die Ausgabe ' Ein Text am Anfang' 'und noch einer am Anfang' ' Innerhalb einer Funktion Der Sieger im Jahr %d heisst %s' ' Innerhalb einer Funktion Der Sieger im Jahr 2014 heisst Yaslaw' ' Der Text darf auch am Ende des Moduls stehen' ===== Code ===== '------------------------------------------------------------------------------- 'File : udf_heredoc.bas ' Copyright mpl by ERB software ' All rights reserved ' http://wiki.yaslaw.info/dokuwiki 'Environment : VBA 2007 + 'Version : 1.0.1 'Name : heredoc 'Author : Stefan Erb (ERS) 'History : 14.07.2014 - ERS - Creation ' 14.07.2014 - ERS - Kleine Anpassungen '------------------------------------------------------------------------------- Option Explicit 'text = <<