質問

背景: HTMLからレポートを生成するアプリケーションがあります(インラインスクリプトがある場合とない場合があります)。 HTMLソースは通常、データベースにblobとして保存されます。

特定のレポートをアプリケーションにハードコーディングする必要があります(つまり、データベースに依存しないように)。私は最初にそれをブルートフォースの方法で試しました(レポート全体をconst文字列に切り取って貼り付け、& vbNewLine& _ を大量に追加しました;使用できる& _ の数を制限します。すべてを(ほぼ)1行に圧縮することを考えましたが、読みやすさを損なうだけでなく、インラインスクリプトで動作します。

これを書いている間に何かが発生しました。プログラムでファイル(ハードコーディングしたいHTMLを含む)を開き、ファイルの内容を文字列に書き込むことができました。今すぐやってみます...

これを行うためのより良い/よりエレガントな方法を提案できる人はいますか?

役に立ちましたか?

解決 3

HTMLファイルをリソース(res)ファイルに埋め込み、LoadResDataを使用してそこからロードすることになりました。 resファイルからのHTMLファイルの読み込みに関連する別の質問を尋ねました(かなり良い答えを得ました)。別のオプションとして、HTML(またはその他のテキストファイル)をカスタムリソースとして埋め込むこともできます。この方法では、数字ではなくLoadResDataを使用するときに、名前(つまり、カスタムリソースの名前)でリソースを参照できます(コードを理解しようとする人にとってはあまり意味がないかもしれません)。また、HTMLを文字列に読み込む場合(私が行うように)、LoadResDataによって返された結果でStrConvを呼び出す必要があることに注意してください(LoadResDataはバイトの配列を返します)。

他のヒント

ファイルの各行を読み取って、追加しながら追加できます。または、StringBuilderクラスを使用することもできます。このクラスを記述するか、どこか likeからコピーする必要があります。これ。このように物事を行うと、パフォーマンスも向上する可能性があります。

Dim oSB as CStringBuilder
Dim sHtml as String

Set oSB = new CStringBuilder
With oSB
  Call .Append("Some HTML here")
  Call .Append("Some more HTML here")
  ' etc...
  sHtml = .ToString()
End With

Set oSB = Nothing

それがあなたがしなければならない方法なら、最終出力を生成しようとするのではなく、実際の動的な値で置き換えることができる文字列の@@ var1 @@のようなプレースホルダーを持つテンプレートとしてhtml文字列を使用することを考えてくださいインラインで、問題のデバッグがはるかに簡単になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top