根据BOM和已存在的文件生成文件列表

在BOM中记录中有物料编码,物料名称,物料规格等,而且依据BOM已经生成了相应的文件,如采购规格书,检验规格书等,这个时候需要获得这些文件的标题,并且生成一个列表,可以使用下面的VBA代码,具体代码如下:

Function IsFileExists(ByVal strFileName As String) As Boolean
    If Dir(strFileName, 16) <> Empty Then
        IsFileExists = True
    Else
        IsFileExists = False
    End If
End Function

Sub setname()
    Dim I As Integer
    Dim J As Integer
    Dim pspname As String
    Dim pspnumber As String
    Dim tstname As String
    Dim tstnumber As String
    Dim path As String
    Dim srcPath As String
    Dim srcPath2 As String
    Dim headName As String
    Dim headName2 As String
    Dim txthead As String

    Dim wordApp As Object
    Dim wordDoc As Object
    Dim wordArange As Object
    Dim wordSelection As Object
    Dim ReplaceSign As Boolean

    Dim Search1 As String
    Dim Search2 As String
    Dim docPrefix As String
    Dim docSuffix As String
    Dim rangSize As Integer

    ‘docPrefix = "-PSP"
    ‘docSuffix = "采购规格书.doc"
    ‘Search1 = "电线"
    ‘Search2 = "6000397-PSP"
    ‘rangSize = 200

    docPrefix = "-"
    docSuffix = "入场检验报告.doc"
    Search1 = "高压电源"
    Search2 = "6000000-TST"
    ‘Search1 = "AC-DC开关电源"
    ‘Search2 = "6000412-TST"
    rangSize = 60

    J = 1
    Dim myItem
    ‘myItem = Array(14, 16, 17, 18, 22, 23, 24, 26, 27, 31, 32, 33, 34, 35, 36, 48, 50, 55, 56, 62, 63, 64, 65, 66, 67, 68, 69, 71, 73, 77, 79, 102, 114, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 172, 173, 174, 175, 176, 177, 179, 180, 181)
    For I = 1 To 187
        srcPath = "C:\cygwin\tmp\BOM\tst16.doc"
        If ActiveSheet.Cells(I, 5) = "" Then
            headName2 = ActiveSheet.Cells(I, 3) & "-" & ActiveSheet.Cells(I, 4) & "-" & ActiveSheet.Cells(I, 5)
            headName = headName2 & docSuffix
            headName3 = ActiveSheet.Cells(I, 4)
        Else
            headName2 = ActiveSheet.Cells(I, 3) & "-" & ActiveSheet.Cells(I, 4) & "-" & ActiveSheet.Cells(I, 6)
            headName = headName2 & docSuffix
            headName3 = ActiveSheet.Cells(I, 4) & "(" & ActiveSheet.Cells(I, 5) & ")"
        End If
        headName = Replace(headName, "/", "-")
        path = "D:\bom\"
        srcPath2 = path & "\aa.doc"
        ‘pspname = path & "\" & ActiveSheet.Cells(I, 3) & docPrefix & ActiveSheet.Cells(I, 4) & docSuffix
        pspname = "D:\bom\" & ActiveSheet.Cells(I, 3) & "-TST-V1.0.doc"
        tstname = "D:\bom\" & ActiveSheet.Cells(I, 3) & "-TST-V1.0.doc"
        tstnumber = ActiveSheet.Cells(I, 3) & "-TST"

        If IsFileExists(pspname) = True Then
            ‘FileCopy srcPath, srcPath2
            ‘Name srcPath2 As tstname

            Set wordApp = CreateObject("Word.Application")                  ‘建立WORD实例
            wordApp.Visible = False                                         ‘屏蔽WORD实例窗体
            Set wordDoc = wordApp.Documents.Open(tstname)                   ‘打开文件并赋予文件实例
            Set wordSelection = wordApp.Selection                           ‘定位文件实例
            Set wordArange = wordApp.ActiveDocument.Range(0, rangSize)      ‘指定文件编辑位置
            wordArange.Select                                               ‘激活编辑位置

            txthead = wordArange
            txthead = Application.WorksheetFunction.Clean(txthead)
            txthead = Trim(txthead)

            ‘Do
            ‘    ReplaceSign = wordArange.Find.Execute("XXX", True, , , , , wdReplaceAll, wdFindContinue, , headName3, True)
            ‘Loop Until ReplaceSign = False

            ‘For Each rngStory In wordDoc.StoryRanges
            ‘  Do
            ‘    ReplaceSign = rngStory.Find.Execute(Search2, True, , , , , wdReplaceAll, wdFindContinue, , tstnumber, True)
            ‘    Set rngStory = rngStory.NextStoryRange
            ‘  Loop Until rngStory Is Nothing
            ‘Next

            wordDoc.Save
            wordDoc.Close True
            wordApp.Quit
            ActiveSheet.Cells(I, 12) = tstnumber
            ActiveSheet.Cells(I, 13) = txthead

            ActiveSheet.Cells(J, 15) = tstnumber
            ActiveSheet.Cells(J, 16) = txthead
            J = J + 1
        End If
    Next I

End Sub
时间: 2024-10-04 23:40:10

根据BOM和已存在的文件生成文件列表的相关文章

java 上传文件-生成文件首页缩略图 生成pdf 抓取图片

方法:1.文件转换成pdf(采用openoffice或者jacob)   2.抓取pdf首页图 第一步:采用jacob: a.下载jacob  注意区分32位,64位,否则不能用 将dll文件放在java bin目录下即可 jar包引入项目 b.转换pdf package cn.bnsr.edu_yun.util; import java.io.File; import java.io.IOException; import com.jacob.activeX.ActiveXComponent;

python 读取文件生成嵌套列表

def read_data(file_name): if not re.findall(".txt", file_name): file_name += ".txt" L = [[] for h in [[] for k in range(5)]] with open(file_name) as r: for d in r: j = d.split("|") for i in range(len(L)): L[i].append(j[i].str

[工具类]文件或文件夹xx已存在,则重命名为xx(n)(2)

写在前面 最近一直在弄文件传输组件,其中一个功能就是,在接收端接收文件时,如果文件已经存在了,则对其进行文件名+索引的方式进行自动重命名,之前也写个类似的工具类,总感觉代码太冗余,每回头想想,总觉得心里有疙瘩,下班的时候在地铁上,又想了想,感觉是我把问题想复杂了,遂将今天的思路整理一下,写了一个辅助类,记录在此. 上篇文章 [工具类]文件或文件夹xx已存在,则重命名为xx(n) ReNameHelper代码 1 using System; 2 using System.Collections.G

第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表

第三百七十六节,Django+Xadmin打造上线标准的在线教育平台-创建用户操作app,在models.py文件生成5张表,用户咨询表.课程评论表.用户收藏表.用户消息表.用户学习表 创建名称为app_operation的用户操作APP,写数据库操作文件models.py models.py文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from __future__ import unicode_literals from datetime i

linnux下setgid与setfacl的结合,解决apache自动生成文件权限问题

setgid与setfacl的结合,能够解决apache/nginx自动生成的文件导致ftp用户删除时权限不足的问题. 需求这样的: 1:ThinkPHP框架运行时生成Runtime(755)文件,文件权限所有者为apache:apache用户.组. 2:而ftp用户已属apache组用户,因为Runtime文件夹的所有组(不可写),所以此文件夹下面的文件无法被ftp用户删除,而开发的时候又需要实时的删除缓存文件来使更改生效. 关于两个命令的讲解建议观看另两篇文章: setgid setfacl

R8&mdash;批量生成文件夹,批量读取文件夹名称+R文件管理系统操作函数

一. 批量生成文件夹,批量读取文件夹名称 今日,工作中遇到这样一个问题:boss给我们提供了200多家公司的ID代码(如6007.7920等),需要根据这些ID号去搜索下载新闻,从而将下载到的新闻存到以公司ID生成的指定文件夹下!所以第一个问题就是200多个公司,不可能每一次下载,都要去点击:新建文件夹,然后对文件夹命名,too boring and monotonous.嘿嘿,幸好有R的陪伴! let's do it,来看看R如何完成这些工作! 主要用到两个函数 一. dir.create-生

[Erl_Question06]在Erlang shell怎么在目录A下编译目录B下的文件,并把生成文件统一放置目录C?

问题描述: 我们想快速测试一个小功能,第一个反应就是打开Erl shell 直接输入,但是当想测试一个复杂的函数时,一般会写成一个*.erl文件,然后在shell下: cd(FileDir). c(FileName). 每次都为一个小功能设置FileDir,好烦! 解决方法: 方法1 .  在erlang工作目录[在erl shell中运行pwd()显示的目录]建立一个.erlang文件,输入: io:format("changing work path~n"). cd("你

csv文件生成小工具

运维经常遇到客户要求下载某些数据列表的需求.一般我们是提供一个csv格式的文件. 如果用shell来做这件事的,通常是两种方法: 1.捕获终端输出,后续对输出做一定处理.但是终端输出实际上已经丢失了很多格式信息,很难做到完善处理. 2.用mysql内置的FILE命令一次性生成文件.mysql内置的函数功能有限,没法做到比较好的输出格式化. 所以选择了python来做. 主要注意几点: 1.我们的数据库是使用utf8编码.所以生成的csv文件默认话就是utf8编码.实际上也不应该转码,因为utf8

log4j 打印sql,按日期生成文件,生成文件位置

1. log4j 打印sql 要把日志等级调成debug才会显示sql log4j.rootLogger=info,Console Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5