2009-02-26 51 views
1

Word 2003ではVBAを使用して既存のスニペットやローカルデータベースからドキュメント(〜150レポート、文字)を作成する必要があります。これらのスニペットの特定の部分を変更する必要があります日付、フレーズ、ユーザ情報、&などのような、明らかに、私のプログラムで生成するビットもあります。VBAを使用してWord文書またはXML文書を作成する

現在、この同じタスクは、ちょっとしたレガシーVBAによって(並べ替えられて)行われています。 (ネストされたIFとFORと200以上のテキストボックスはすべてTextBox#と呼ばれ​​ます)Wordアプリケーションに指示を送信することで、何らかの処理が完了します(Selection.MoveDown Unit:wdLine, Count:=1など)。したがって、 Officeをロックします。

範囲とブックマークとロジックの改善で同じことをすることはできますが、これはXMLでこれを行うのは簡単であり、そうすることで将来的には利点が得られるはずです多くの異なるユーザーやアプリケーションによってレポートや文字がアクセスされ、プログラムによって読み込まれる可能性があります。

私はXMLとWordMLスキーマについて読んできましたが、何か不足しているように感じます。私は提出に行うためのコードはこれです欲しい

:(など、ヘッダー、フッター、)

  1. グラブ事前に定義されたXMLスニペット
  2. 新しい文字列を生成し、
  3. 事前に定義されたXML列を連結保存など私はこれを行うことができますXMLファイル(日時、ユーザ名、など)

で既存のタグのXML

  • 変更値。私が持っている

    問題は、次のとおりです。

    • 私はトラブルのスキーマと名前空間のまわりで私の頭を取得したされて。データは既にVBAコードによって検証されているので、スキーマは何が必要ですか?

    • ドキュメント全体のXMLを含む1つの長い連結文字列を作成し、既存のスニペットからXMLの多くを覚えているか、XML DOMを使用して作成することが望ましいですか?プログラムで:

    20 Set oElementName = oDOM.createElement("Name")

    30 oElement.appendChild oElementName

    40 oElementName.Text = "This is the text of name"

    • 文書のスタイルはどうすればよいですか? (これは概念的に私にとって最も問題を引き起こしています。)特にWordを保存するときにWordMLから生成するWordMLからリバースエンジニアリングする必要はありません。私は最初にHTMLに変換する必要がありますか? Wordでスタイルシートを作成して自動的にフォーマットできますか?

    これは意味がありますか?代わりに範囲とブックマークを使うべきですか?

    XMLは私にとっては強力ですが、ハンマーと爪の問題のねじれのあるケース、つまり「私はハンマーを学びたいので、すべての問題は爪のように見え、ハンマーを学ぶ正当な理由を与えてくれます。」

    (私は自分のやり方でやることを学ぶべきではないと知っています!しかし、私は私たちのドキュメント生成システムの質について十分に不平を言うまじめなドローンです。それで、あなたはVBAを知らないのですか?まあ、あなたはコースや何かにあなたを送り込む余裕がありませんので、あなたが行くように学びます。 "私の仕事の生活の2ヶ月は最高と最悪でした)

    私が読んでいただきありがとうございました、あなたがしていれば、助けてくれるでしょうか?

  • 答えて

    0

    さて、私は自分の問題のスタイリングの部分に答えました。 (私はいつも質問を提出した直後にこれらの事を見つけます!)

    そしてこれを読んで私にはもっと意味があります!

    から:http://www.tkachenko.com/blog/archives/000024.html

    <?xml-stylesheet type="text/xsl" href="style.xsl"?> 
    <chapter title="XSLT Programming"> 
        <para>It's <i>very</i> simple. Just ask <link 
    url="http://google.com">Google</link>.</para> 
    </chapter> 
    

    そして、XSLTスタイルシート(による冗長要素ベースのWordMLの構文に非常に大きなもの):

    <xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:o="urn:schemas-microsoft-com:office:office" 
    xmlns:w="http://schemas.microsoft.com/office/word/2003/2/wordml"> 
        <xsl:template match="/"> 
         <xsl:processing-instruction 
    name="mso-application">progid="Word.Document"</xsl:processing-instruction> 
         <w:wordDocument> 
          <xsl:apply-templates/> 
         </w:wordDocument> 
        </xsl:template> 
        <xsl:template match="chapter"> 
         <o:DocumentProperties> 
          <o:Title> 
           <xsl:value-of select="@title"/> 
          </o:Title> 
         </o:DocumentProperties> 
         <w:styles> 
          <w:style w:type="paragraph" w:styleId="Heading3"> 
           <w:name w:val="heading 3"/> 
           <w:pPr> 
            <w:pStyle w:val="Heading3"/> 
            <w:keepNext/> 
            <w:spacing w:before="240" w:after="60"/> 
            <w:outlineLvl w:val="2"/> 
           </w:pPr> 
           <w:rPr> 
            <w:rFonts w:ascii="Arial" w:h-ansi="Arial"/> 
            <w:b/> 
            <w:sz w:val="26"/> 
           </w:rPr> 
          </w:style> 
          <w:style w:type="character" w:styleId="Hyperlink"> 
           <w:rPr> 
            <w:color w:val="0000FF"/> 
            <w:u w:val="single"/> 
           </w:rPr> 
          </w:style> 
         </w:styles> 
         <w:body> 
          <w:p> 
           <w:pPr> 
            <w:pStyle w:val="Heading3"/> 
           </w:pPr> 
           <w:r> 
            <w:t> 
             <xsl:value-of select="@title"/> 
            </w:t> 
           </w:r> 
          </w:p> 
          <xsl:apply-templates/> 
         </w:body> 
        </xsl:template> 
        <xsl:template match="para"> 
         <w:p> 
          <xsl:apply-templates/> 
         </w:p> 
        </xsl:template> 
        <xsl:template match="i"> 
         <w:r> 
          <w:rPr> 
           <w:i/> 
          </w:rPr> 
          <xsl:apply-templates/> 
         </w:r> 
        </xsl:template> 
        <xsl:template match="text()"> 
         <w:r> 
          <w:t xml:space="preserve"><xsl:value-of 
    select="."/></w:t> 
         </w:r> 
        </xsl:template> 
        <xsl:template match="link"> 
         <w:hlink w:dest="{@url}"> 
          <w:r> 
           <w:rPr> 
            <w:rStyle w:val="Hyperlink"/> 
            <w:i/> 
           </w:rPr> 
           <xsl:apply-templates/> 
          </w:r> 
         </w:hlink> 
        </xsl:template> 
    </xsl:stylesheet> 
    
    1

    私はあなたの割り当ての状況を知っていて、そこにはありませんテクノロジスタックを進める良い理由かもしれませんが、Office 2003へのこのような大きな投資(150レポートが大きい)が再考されるはずです。 MicrosoftはVBAが消えないと言っているが、Open XML SDKは明るい未来を持っていると思う。

    ここには、excellent introductionのXMLマークアップがあります。

    +0

    あなたの答えをありがとう。私はOpen XMLを読んでいて、それはいいと思うし、今年後半にOffice 2007がOffice 2007に公開されるという話がありましたが、最近、少なくとも2010年半ばまではこれが起こらないことが確認されました。だから、残念ながら、私はここにいます。 – user51498

    関連する問題