先将WORD文件从服务器下载到本地(Inet)
 bData() = PWPInet.OpenURL(strURL, 1)
 Put #intFile, , bData()
 置于本地临时文件夹下
 在打开时set doc = wdApp.documents.open(path,true,false,false)
 对其进行排版其中设置页边距时出现了问题
  With Selection.PageSetup
                .LeftMargin = CentimetersToPoints(argary(0))
                .RightMargin = CentimetersToPoints(argary(1))
                .TopMargin = CentimetersToPoints(argary(2))
                .BottomMargin = CentimetersToPoints(argary(3))
  End With
  第一次运行没问题,能正确设置页边距。但关闭此文档并且不保存,第二次打开此文件(从服务器重新下载并覆盖原来临时目录下文件)时,以上语句并不执行,页边距还是WORD默认值。也曾试着把Selection换成doc或section都不行。请问各位高手,这是怎么回事呀?       
 

解决方案 »

  1.   

    是挺奇怪的。不过,你设置页边距的代码是在程序里还是Word里运行呀?如果是程序里,第一次就不该通过的:
    Selection和CentimetersToPoints前面都要加wdApp.如果这不是问题,你所谓不执行是什么意思?出错了?有没有在出错器(debugger)里调试?
      

  2.   

    With Selection.PageSetup
    改成With wdApp.Selection.PageSetup记住:所有语句都要以定义好的对象开始!
      

  3.   

    还是不行呀,这个控件是嵌到网页中的。用户点击按钮时打开WORD并进行排版,
    第一次是没问题啦,可是奇怪的是如果第一次不保存,再打开WORD就不好用了,而且只是这段代码不好用。如果刷新一下网页就没问题了,可第一次打开时和以后重复操作(前一次不保存)每次文档是重新下载的,程序又是一样的,参数传递没问题,而页边距就是不变了。
    我现在怀疑两点:
    1.第一次打开时是利用Inet控件把WORD文档下载到本地临时文件夹下,而再次打开又重新下载,覆盖以前的文档。是不是覆盖时产生问题。
    2.第一次虽然关闭winword.exe但是否仍然存在于内存(尽管在任务管理器中看不到),当二次打开时第一次wdApp影响了以后的打开。
    可最令我头疼的是其它的代码都好用:
    With doc.Paragraphs(doc.Paragraphs.Count).Range.Font
                        .NameFarEast = argary(0)
                        .NameAscii = "Times New Roman"
                        .NameOther = "Times New Roman"
                        .Name = argary(0)
                        .Size = argary(1)
                        .Color = wdColorBlack
                End With
                Call doc.Range.InsertAfter(argary(2))
                Call doc.Range.InsertParagraphAfter
                doc.Paragraphs(doc.Paragraphs.Count).Range.InlineShapes.AddHorizontalLineStandard
                doc.InlineShapes(doc.InlineShapes.Count).HorizontalLineFormat.NoShade = True
                doc.InlineShapes(doc.InlineShapes.Count).Fill.Solid
                doc.InlineShapes(doc.InlineShapes.Count).Fill.ForeColor.RGB = RGB(0, 0, 0)
                doc.InlineShapes(doc.InlineShapes.Count).Height = 1.5
            End If
            '印发部门信息
            If PrintDep <> "" Then
                Number = Number + 2
                
    '           Call doc.Range.InsertParagraphAfter
                argary = Split(PrintDep, "`")
                With doc.Paragraphs(doc.Paragraphs.Count).Range.Font
                        .NameFarEast = argary(0)
                        .NameAscii = "Times New Roman"
                        .NameOther = "Times New Roman"
                        .Name = argary(0)
                        .Size = argary(1)
                        .Color = wdColorBlack
                End With
                Call doc.Range.InsertAfter(argary(2))
                Call doc.Range.InsertParagraphAfter
                doc.Paragraphs(doc.Paragraphs.Count).Range.InlineShapes.AddHorizontalLineStandard
                doc.InlineShapes(doc.InlineShapes.Count).HorizontalLineFormat.NoShade = True
                doc.InlineShapes(doc.InlineShapes.Count).Fill.Solid
                doc.InlineShapes(doc.InlineShapes.Count).Fill.ForeColor.RGB = RGB(0, 0, 0)
                doc.InlineShapes(doc.InlineShapes.Count).Height = 1.5这些都没问题,重复打开都运行的很好。