none
能否透過VBA來修改FrontPage2003檔(.htm)裡的程式碼? RRS feed

  • 問題


  • 在FrontPage2003裡有一項取代(replacement)功能,可以將網頁程式碼予以變更,例如:將”d:/xxx/”取代為”d:/yyy/”,此項功能在word裡也有,若是(.doc)就可以利用VBA來達成,但若針對(.htm),在VBA裡有類似的功能,可以將網頁程式碼予以變更嗎?謝謝!

    2007年9月21日 上午 08:01

解答

  • ...

    Word 並非是網頁設計工具,只是能解讀 html 檔,不要把他的功能跟 FrontPage 混在一起,若是有 FrontPage 的功能,那 FrontPage 也不用賣了。

     

    html 是純文字格式,請直接使用 VBA 內的

    Open

    指令開啟檔案,並載入文字內容。

    並直接使用

    Replace 函數替換目標字串。

     

    由於 VBA 本身為直譯式,效能不高,大量轉換一般直接用 VB6 或 VBNET 來開發,不太會透過 VBA 來處理。

     

    2007年9月21日 下午 04:44
    版主

所有回覆

  • 看不懂你要問啥。

     

    你要問 VBA 裡面的 Replace 函數嗎?把檔案載入後用 Replace 函數替換目標即可,但要注意不同的編碼字串轉回 Unicode ,替換完轉回原來的編碼。

    2007年9月21日 下午 02:39
    版主
  • 謝謝您的回應!我試著再說一次:
    當開啟FrontPage2003後,若要編輯一張網頁(.htm),FrontPage提供四種模式:設計、分割、程式碼、預覽。一般人都用[設計]模式來輸入文字或插入圖片後,用[預覽]模式就可觀看此張網頁的外觀,但也可轉至[程式碼]模式,在此模式下就可看到其程式碼,例如下列程式碼片段:
    ‘---------------------------------------------------------------------
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=big5">
    <title>新增網頁1</title>
    </head>
    <body>
    <p>已知二次函數,則下列哪一個選項可能是此二次函數的圖形?</p>
    <span lang=EN-US>(A)<img width=139 height=137
    src="B019100031.files/image001.jpg"></span>
    </body>
    </html>
    ‘---------------------------------------------------------------------
    我的問題是當我載入(open)此張網頁後,我要變更其中某些程式碼,例如:將”d:/.files/image/”取代為”d:/ image/”,可是我發現利用下列VBA,我面對的是[設計]模式而非[程式碼]模式,也就是說,我只能在[設計]模式下進行取代的動作,例如:將”二次函數”取代為”一次函數” 。在[設計]模式,若有圖片就會顯示圖片的外觀。
    ‘---------------------------------------------------------------------
        With WordObj
            .Visible = False
            .Documents.open FileName:=HtmFile, ConfirmConversions:=False, _
                            ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
                            PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
                            WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:=""
              .Selection.Find.ClearFormatting
              .Selection.Find.Replacement.ClearFormatting
              With .Selection.Find
                 .Text = ".files/image"
                 .Replacement.Text = "/image"
                 .Forward = True
                 .Wrap = wdFindContinue
                 .Format = False
                 .MatchCase = False
                 .MatchWholeWord = False
                 .MatchByte = True
                 .MatchWildcards = False
                 .MatchSoundsLike = False
                 .MatchAllWordForms = False
              End With
             .Selection.Find.Execute Replace:=wdReplaceAll
           
             .ActiveDocument.Save
     
        End With
    ‘---------------------------------------------------------------------
    因為我有數千張網頁,必須利用程式來變更網頁裡的圖片的路徑(PATH) 。
    換言之,能否當OPEN一張網頁時,WordObj就能面對網頁的[程式碼]模式,以便進行圖片路徑的變更。

    2007年9月21日 下午 04:07
  • 利用一些文件編輯器,例如 UltraEdit 的 Replace in Files 功能可能比較快一點吧??

    不僅可以指定要進行取代動作的檔案副檔名,如 *.htm 才進行取代

    可進行 Regular Expression 進行取代

    可遞迴搜尋子目錄下的檔案進行取代

     

    如果你會寫 perl 的話...那也可以利用 perl 來進行就是了

     

    2007年9月21日 下午 04:41
  • ...

    Word 並非是網頁設計工具,只是能解讀 html 檔,不要把他的功能跟 FrontPage 混在一起,若是有 FrontPage 的功能,那 FrontPage 也不用賣了。

     

    html 是純文字格式,請直接使用 VBA 內的

    Open

    指令開啟檔案,並載入文字內容。

    並直接使用

    Replace 函數替換目標字串。

     

    由於 VBA 本身為直譯式,效能不高,大量轉換一般直接用 VB6 或 VBNET 來開發,不太會透過 VBA 來處理。

     

    2007年9月21日 下午 04:44
    版主