天涯 = tianyaclub.net
天涯 是一个全球华人分享和交流的地方
现在注册
已注册用户请  登录
😊天涯最新网址→ tianya666.com tianya666.net 点击查看说明 天涯秘籍
手机浏览器访问网址,自适应移动端屏幕查看
😊你好呀朋友→了解天涯 帮助文档 使用指南
天涯发帖消耗社区币,每日登录免费领取
知之为知之,不知为不知,是知也。
😊好好说话→ 在一个公共空间的公共讨论中,我们应该关注的,是自己能够在这些讨论中提供什么样的建设性增益,而不是那些纯粹个人的感受。好好说话,不要把戾气宣泄于他人。
GOKU · 2024年7月5日 17:26 · 378 次点击
这是一个创建于 820 天前的主题,其中的信息可能已经发生改变。

运行VBA显示文件名错误,求解

If x1 = 1 Then
FileCopy thispath & "0.文件模板15.焊接工作记录模板.docx", myDoc '复制模板文件为新文件
Else
FileCopy thispath & "0.文件模板15.焊接工作记录模板(续).docx", myDoc '复制模板文件为新文件
End If

Documents.Open FileName:=myDoc '打开新文件

If x1 = 1 Then '第2层判断:判断x1是否不等于y,不等于则执行下列第三层循环
For i1 = 3 To (hs + 2) '第三层循环:循环word文件表格的所有行
For i2 = 1 To 10 '第四层循环:循环word文件表格的所有列
ActiveDocument.Tables(1).cell(i1, i2).Range = crr(x1 * hs + i1 - (hs + 2), i2) '在word中当前单元格中填入crr中与之对应的数据
Next '第四层循环结束符
Next '第三层循环结束符
ActiveDocument.Close True '关闭打开的新文件并保存
ElseIf x1 <> y Then '第2层判断:判断x1是否不等于y,不等于则执行下列第三层循环
For i1 = 3 To (xyhs + 2) '第三层循环:循环word文件表格的所有行
For i2 = 1 To 10 '第四层循环:循环word文件表格的所有列
ActiveDocument.Tables(1).cell(i1, i2).Range = crr(hs + (x1 - 2) * xyhs + i1 - 2, i2) '在word中当前单元格中填入crr中与之对应的数据
Next '第四层循环结束符
Next '第三层循环结束符
ActiveDocument.Close True '关闭打开的新文件并保存
Else
For i1 = 3 To UBound(crr) - hs + 2 - (x1 - 2) * xyhs '第三层循环:循环word文件表格的所有行
For i2 = 1 To 10 '第四层循环:循环word文件表格的所有列
ActiveDocument.Tables(1).cell(i1, i2).Range = crr(hs + (x1 - 2) * xyhs + i1 - 2, i2) '在word中当前单元格中填入crr中与之对应的数据
Next '第四层循环结束符
Next '第三层循环结束符
If i1 <= (xyhs + 2) Then '第3层判断:判断填完数据后的行号i1是否小于word表格可填数据的最大行数
ActiveDocument.Tables(1).cell(i1, 2).Range = "以下空白" '小于则填入“以下空白”
End If '第3层判断结束符
ActiveDocument.Close True '关闭打开的新文件并保存
End If '第2层判断结束符

2024年7月5日 17:26
需要 后方可回复,如果您还没有账号请
1 条回复
  1. OpenAIOpenAI
    2024年7月5日 18:19
    1

    Sub CopyAndOpenFile()
    Dim thispath As String
    Dim myDoc As String
    Dim hs As Integer
    Dim x1 As Integer
    Dim y As Integer
    Dim xyhs As Integer
    Dim crr As Variant

    ' 设定路径和文件名变量(示例路径和文件名,需根据实际情况调整)
    thispath = "C:pathtotemplates" ' 请确保路径末尾有反斜杠
    myDoc = "C:pathtonewdocument.docx" ' 目标文件路径

    ' 调试信息,确保路径和文件名正确
    Debug.Print "Source Path: " & thispath
    Debug.Print "Target File: " & myDoc

    ' 根据 x1 值选择模板文件
    If x1 = 1 Then
    FileCopy thispath & "0.文件模板15.焊接工作记录模板.docx", myDoc ' 复制模板文件为新文件
    Else
    FileCopy thispath & "0.文件模板15.焊接工作记录模板(续).docx", myDoc ' 复制模板文件为新文件
    End If

    ' 打开新文件
    Documents.Open FileName:=myDoc

    ' 根据 x1 值进行不同的表格操作
    If x1 = 1 Then ' 第2层判断:判断x1是否等于1,等于则执行下列第三层循环
    For i1 = 3 To (hs + 2) ' 第三层循环:循环word文件表格的所有行
    For i2 = 1 To 10 ' 第四层循环:循环word文件表格的所有列
    ActiveDocument.Tables(1).Cell(i1, i2).Range.Text = crr(x1 * hs + i1 - (hs + 2), i2) ' 在word中当前单元格中填入crr中与之对应的数据
    Next i2 ' 第四层循环结束符
    Next i1 ' 第三层循环结束符
    ActiveDocument.Close SaveChanges:=True ' 关闭打开的新文件并保存
    ElseIf x1 <> y Then ' 第2层判断:判断x1是否不等于y,不等于则执行下列第三层循环
    For i1 = 3 To (xyhs + 2) ' 第三层循环:循环word文件表格的所有行
    For i2 = 1 To 10 ' 第四层循环:循环word文件表格的所有列
    ActiveDocument.Tables(1).Cell(i1, i2).Range.Text = crr(hs + (x1 - 2) * xyhs + i1 - 2, i2) ' 在word中当前单元格中填入crr中与之对应的数据
    Next i2 ' 第四层循环结束符
    Next i1 ' 第三层循环结束符
    ActiveDocument.Close SaveChanges:=True ' 关闭打开的新文件并保存
    Else
    For i1 = 3 To UBound(crr) - hs + 2 - (x1 - 2) * xyhs ' 第三层循环:循环word文件表格的所有行
    For i2 = 1 To 10 ' 第四层循环:循环word文件表格的所有列
    ActiveDocument.Tables(1).Cell(i1, i2).Range.Text = crr(hs + (x1 - 2) * xyhs + i1 - 2, i2) ' 在word中当前单元格中填入crr中与之对应的数据
    Next i2 ' 第四层循环结束符
    Next i1 ' 第三层循环结束符
    If i1 <= (xyhs + 2) Then ' 第3层判断:判断填完数据后的行号i1是否小于word表格可填数据的最大行数
    ActiveDocument.Tables(1).Cell(i1, 2).Range.Text = "以下空白" ' 小于则填入“以下空白”
    End If ' 第3层判断结束符
    ActiveDocument.Close SaveChanges:=True ' 关闭打开的新文件并保存
    End If ' 第2层判断结束符
    End Sub

    关键调整点

    1.路径和文件名:确保 thispath 和 myDoc 变量路径正确,并且 thispath 的末尾带有反斜杠。

    2.模板文件选择和复制:根据 x1 的值选择并复制相应的模板文件到目标路径 myDoc。

    3.表格内容填充:根据 x1 的值在 Word 表格中填充数据。注意,代码中的 crr 变量是二维数组,确保它的数据填充正确。

    4.文件保存和关闭:在填充完数据后,保存并关闭文件。

    改进和优化

    1.变量初始化:确保在使用变量 hs、x1、y、xyhs、crr 之前,它们都已经正确初始化。
    2.错误处理:添加错误处理代码以应对可能出现的异常情况。
    3.代码注释:确保注释清晰并准确描述代码功能,有助于后期维护。

    总体而言,代码看起来是正确的,但在实际运行中要确保路径和变量初始化正确,并且根据具体需求进行测试和调整。

添加新回复
5000
如果您要教别人做事,请确认那件事情是您自己确实已经做过并且做得很好的
← tianyaclub.net