在windows xp上的microsoft excel 2007中编写一个简单的例程

时间:2015-03-16 17:45:25

标签: excel excel-vba vba

我对软件平台内的编码功能(即SPSS语法,MATLAB脚本,Psychopy编码器)的经验很少。因此,我发现自己希望能为更一般的程序编写简单的例程循环。我希望有一种方法可以为excel做到这一点。具体来说,有没有一种方法可以编写excel:打开一个文件,串行删除两列,并将该文件保存到一个新文件名的新位置,并对包含文件夹中的所有文件重复此操作?我相信这个问题的答案对于编码经验最少的人来说非常有用,这些人可以从自动运行简单函数的代码中受益,而无需在GUI中点击和点击。

2 个答案:

答案 0 :(得分:0)

  1. 打开Excel
  2. 打开宏录制器
  3. 打开您的第一个文件
  4. 删除两列
  5. 将文件另存为
  6. 停止宏录制器
  7. 这将为您提供所需的VBA代码,然后您可以在其周围包含一个简单的循环,以重复目录中的所有文件。

    试一试,然后回过头来看看你遇到的代码,如果你遇到问题就会问一个具体的问题。

答案 1 :(得分:0)

如果您只想循环浏览文件夹中的文件并编辑文本文件删除行,或重命名文件等等,请查看FileScriptingObject

快速向下和脏的vba子例程,我们遍历文件夹中的每个文件,打开它进行读取,打开第二个文件进行写入,然后写出每一行,换行,跳过第5和第6行:

Sub FindOpenFiles()

    Const fsoForWriting = 2
    Const fsoForAppend = 8
    Const fsoForReading = 1

    directory = "C:\"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set folder = FSO.GetFolder(directory)

    'Loop through files in folder
    For Each file In folder.Files

        'get the file path, open the file and create a new file with "_out" appended to the name
        strFileInName = file.Path
        strFileOutName = file.Path & "_out"
        Set objFileIn = objFSO.OpenTextFile(strFileInName, fsoForReading)
        Set objFileOut = objFSO.OpenTextFile(strFileOutName, fsoForWriting, True)

        'Loop through each line in the incoming file
        lineCount = 1
        Do Until objFileIn.AtEndOfStream
            'Write every line out to the output file, except for line 5 and 6
            If lineCount <> 5 Or lineCount <> 6 Then
                objFileOut.WriteLine objFileIn.ReadLine
                lineCount = lineCount + 1
            Next
        Loop
    Next file


End Sub

总而言之,这个子程序与Excel无关,因此您可以将其粘贴在Microsoft Word,Powerpoint,Outlook中,并且只需最少的编辑,它就是独立的vbscript。