ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2245|回复: 6

[求助] VBA生成Word第二次运行就会报错:运行时错误'462’:远程服务器不存在或不可用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-12-10 10:27 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
写了一个将excel中数据导出到word的程序,第一运行正常。但是第二次运行就会报错。请大神们帮忙看看代码需要怎么处理下?


  1. Sub EXCEL转Word()

  2. Application.ScreenUpdating = False     '关闭屏幕刷新
  3. Application.DisplayAlerts = False     '关闭提示
  4.      ' On Error Resume Next  '忽略错误

  5. Dim wApp As Word.Application
  6. Dim wDoc As Word.Document

  7. Set wApp = CreateObject("Word.Application")

  8. Dim rownum, colnum, i, j, k, l, tabnum, icon As Integer
  9. Dim val1, val2, oldval, doctitile As String

  10. doctitile = Sheet9.Range("B2").Value & "工艺单元设计方案"

  11. wApp.Visible = True

  12. Set wDoc = wApp.Documents.Add(Template:=ThisWorkbook.Path & "" & "工艺单体设计模板.dotx", NewTemplate:=False, DocumentType:=0)


  13. Excel.Application.Sheets("设备选型表").Activate  '切换当前电子表格的表bell为当前激活表


  14. row1 = Range("B65535").End(xlUp).Row


  15. For i = 3 To row1
  16.     val1 = Excel.Application.Sheets("设备选型表").Range("a" & i)
  17.   
  18.      
  19.      
  20.      '读取工艺功能描述
  21.      
  22.      Dim find1 As String
  23.      Dim rownum2, lnum1 As Integer
  24.      
  25.      rownum2 = Sheet15.[A65536].End(xlUp).Row
  26.      
  27.      For lnum1 = 3 To rownum2
  28.         
  29.         If Excel.Application.Sheets("工艺单元功能描述").Range("A" & lnum1).Value = val1 Then
  30.         
  31.         find1 = Excel.Application.Sheets("工艺单元功能描述").Range("B" & lnum1).Value
  32.         
  33.         Exit For
  34.         
  35.         End If
  36.      
  37.      Next
  38.      
  39.      
  40.      '读取构建筑物部分
  41.      
  42.      Dim find2 As String
  43.      
  44.      Dim totalrow2, lnum2, findnum As Integer
  45.      
  46.      totalrow2 = Sheet4.[B65536].End(xlUp).Row
  47.         
  48.       For lnum2 = 3 To totalrow2
  49.         
  50.             If Excel.Application.Sheets("6-1 土建投资").Range("B" & lnum2).Value = val1 Then
  51.                
  52.                findnum = lnum2
  53.             Exit For
  54.             
  55.             End If
  56.         Next
  57.      
  58.      '读取工艺设计参数部分
  59.      
  60.      Dim find3 As String
  61.      
  62.      Dim totalrow3, lnum3, findnum2, totalcol As Integer
  63.      
  64.      totalcol = Sheets("工艺单元参数设计").Range("ZZ" & i).End(xlToLeft).Column
  65.      
  66.      totalrow3 = Sheet16.[A65536].End(xlUp).Row
  67.          
  68.          
  69.       For lnum3 = 3 To totalrow3
  70.         
  71.             If Excel.Application.Sheets("工艺单元参数设计").Range("A" & lnum3).Value = val1 Then
  72.                
  73.                findnum2 = lnum3
  74.             Exit For
  75.             
  76.             End If
  77.         Next
  78.      
  79.      
  80.      '读取设备名称部分
  81.      
  82.      If val1 <> oldval Then
  83.      
  84.          
  85.         With wApp.Application
  86.         
  87.         
  88.         .Activate                                      '激活WORD软件
  89.         .Selection.EndKey Unit:=wdStory
  90.          
  91.         
  92.          .Selection.Style = .ActiveDocument.Styles("标题 2")
  93.          
  94.          .Selection.TypeText Text:=val1
  95.          
  96.          .Selection.TypeParagraph
  97.          
  98.          
  99.          .Selection.Style = .ActiveDocument.Styles("标题 3")
  100.          .Selection.TypeText Text:="功能描述"
  101.          .Selection.TypeParagraph
  102.          .Selection.TypeText Text:=find1
  103.          .Selection.TypeParagraph
  104.          
  105.          
  106.          
  107.          .Selection.Style = .ActiveDocument.Styles("标题 3")
  108.          .Selection.TypeText Text:="构建筑物参数"
  109.          .Selection.TypeParagraph
  110.          
  111.           Sheets("6-1 土建投资").Range("C" & findnum & ":D" & findnum).Copy
  112.           .Activate
  113.           .Selection.PasteExcelTable False, False, False
  114.          
  115.           Sheets("6-1 土建投资").Range("J" & findnum & ":K" & findnum).Copy
  116.           .Activate
  117.           .Selection.PasteExcelTable False, False, False
  118.           .Selection.MoveLeft Unit:=wdCharacter, Count:=2
  119.           .Selection.TypeText Text:=Sheets("6-1 土建投资").Range("L" & findnum).Value
  120.           .Selection.MoveDown Unit:=wdLine, Count:=1
  121.          
  122.           Sheets("6-1 土建投资").Range("O" & findnum & ":P" & findnum).Copy
  123.           .Activate
  124.           .Selection.PasteExcelTable False, False, False
  125.               
  126.          
  127.          
  128.          
  129.          .Selection.Style = .ActiveDocument.Styles("标题 3")
  130.          .Selection.TypeText Text:="工艺技术参数"
  131.          .Selection.TypeParagraph
  132.       
  133.          For k = 2 To totalcol Step 2
  134.            
  135.            Excel.Application.Sheets("工艺单元参数设计").Activate
  136.            
  137.            Sheets("工艺单元参数设计").Range(Cells(i, k), Cells(i, k + 1)).Copy
  138.           .Activate
  139.           .Selection.PasteExcelTable False, False, False
  140.             
  141.          Next
  142.       
  143.               
  144.          
  145.          
  146.          
  147.          .Selection.Style = .ActiveDocument.Styles("标题 3")
  148.          .Selection.TypeText Text:="主要设备参数"
  149.          .Selection.TypeParagraph
  150.       
  151.       
  152.       
  153.       
  154.        val2 = Excel.Application.Sheets("设备选型表").Range("c" & i)
  155.       
  156.         j = 1
  157.       
  158.        colnum = Sheets("设备选型表").Range("ZZ" & i).End(xlToLeft).Column - 6
  159.                     
  160.               
  161.        .Selection.TypeText Text:="(" & j & ")" & val2 & "               数量:" & Sheets("设备选型表").Range("E" & i).Value & Sheets("设备选型表").Range("F" & i).Value  '插入设备名称
  162.       
  163.        .Selection.TypeParagraph
  164.       
  165.       
  166.         
  167.                
  168.           For m = 7 To colnum + 6 Step 2
  169.            
  170.            Excel.Application.Sheets("设备选型表").Activate
  171.                      
  172.            Sheets("设备选型表").Range(Cells(i, m), Cells(i, m + 1)).Copy
  173.            
  174.          
  175.           .Activate
  176.           .Selection.PasteExcelTable False, False, False
  177.                
  178.         
  179.         Next
  180.       
  181.         End With
  182.       
  183.       
  184.       
  185.        Else
  186.       
  187.       
  188.        With wApp.Application
  189.       
  190.        .Activate                                    '激活WORD软件
  191.      
  192.        .Selection.EndKey Unit:=wdStory                '定位至末尾行
  193.      
  194.        val2 = Excel.Application.Sheets("设备选型表").Range("c" & i)
  195.       
  196.        wApp.ActiveWindow.Selection.TypeText Text:="(" & j & ")" & val2 & "               数量:" & Range("E" & i).Value & Range("F" & i).Value    '插入设备名称
  197.        .Selection.TypeParagraph
  198.       
  199.        End With
  200.       
  201.       ' Excel.Application.Sheets("设备选型表").Activate
  202.       
  203.        colnum = Range("ZZ" & i).End(xlToLeft).Column - 6
  204.       
  205.        For k = 7 To colnum + 6 Step 2
  206.                   
  207.                      
  208.            Sheets("设备选型表").Range(Cells(i, k), Cells(i, k + 1)).Copy
  209.            
  210.            wApp.Application.Selection.PasteExcelTable False, False, False
  211.       
  212.        Next
  213.      End If
  214.       
  215.       oldval = val1
  216.       
  217.       j = j + 1
  218.    
  219.      Next
  220.      
  221.    
  222.     '—————— 调整表格格式————————

  223.   
  224.      Dim mytable As Table
  225.      

  226.      For Each mytable In wDoc.Tables

  227.      With mytable

  228.          .Style = "Sheet Style"

复制代码


报错信息.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-12-10 10:29 | 显示全部楼层
代码太长了,最后没粘出来,这是后面的代码部分,也是出错的地方



'—————— 调整表格格式————————

  
     Dim mytable As Table
     

     For Each mytable In wDoc.Tables

     With mytable

         .Style = "Sheet Style"
         .Rows.LeftIndent = CentimetersToPoints(1)

         .Rows.Height = CentimetersToPoints(0.75)

         .PreferredWidth = CentimetersToPoints(13.5)

         .Columns(1).PreferredWidthType = wdPreferredWidthPercent
         .Columns(1).PreferredWidth = 20

     With .Range

        With .Font '字体格式
                    .Name = "宋体"
                    .Name = "Times New Roman"
                    .Color = wdColorAutomatic '自动字体颜色
                    .Size = 12
                    .Kerning = 0
                    .DisableCharacterSpaceGrid = True
                End With


        With .ParagraphFormat '段落格式
                    .CharacterUnitFirstLineIndent = 0 '取消首行缩进
                    .FirstLineIndent = CentimetersToPoints(0) '取消首行缩进
                    .LineSpacingRule = wdLineSpaceSingle '单倍行距  wdLineSpaceExactly '行距固定值
                    '.LineSpacing = 20 '设置行间距为20磅,配合行距固定值
                    .Alignment = wdAlignParagraphCenter '单元格水平居中
                    .AutoAdjustRightIndent = False
                    .DisableLineHeightGrid = True
        End With

        .Cells.VerticalAlignment = wdCellAlignVerticalCenter  '单元格垂直居中

        End With

     End With

     Next

     
     
     Excel.Application.Sheets("设备选型表").Range("a3").Select
     Application.CutCopyMode = False    '清空剪贴板
     Application.ScreenUpdating = True

     wApp.DisplayAlerts = True
     
            
      '—————— 保存文档————————
            
            
      wDoc.SaveAs2 ThisWorkbook.Path & "\" & doctitile & Format(Date, "yyyyMMDD") & ".docx"

   
     wApp.Quit
    ' Set wDoc = Nothing
   


End Sub

TA的精华主题

TA的得分主题

发表于 2022-11-19 23:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
哥们,这个问题解决了吗。我看外网一些兄弟说时with部分的问题

TA的精华主题

TA的得分主题

发表于 2023-12-2 20:13 | 显示全部楼层
我也遇到类似问题,问题出在了系统第二次搞不清是要word干活,还是excel干活,所以需要在Excel VBA里用word.Documents.Application+ActiveDocument.Tables(1).Range.。。。
不晓得是否能帮到你

TA的精华主题

TA的得分主题

发表于 2024-9-25 09:50 | 显示全部楼层
我也出现一样的问题,怎么解决

TA的精华主题

TA的得分主题

发表于 2024-9-25 21:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主  上附件


Excel.Application.Sheets("6-1 土建投资")  这个模式错了 还欠工作薄名称   检查一下



您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 03:30 , Processed in 0.041034 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表