1

我试图在 excel 中创建一个 vba 脚本,以便将文件夹中所有 xlsx 文件的内容复制到 cvs 文件中。

我用作帮助:http ://www.ozgrid.com/VBA/2007-filesearch-alternative.htm

并创建了以下脚本:

Sub CopySameSheetFrmWbs()
Dim wbOpen As Workbook
Dim wbNew As Workbook

Const strPath As String = "C:\test\"
Dim strExtension As String

'Comment out the 3 lines below to debug
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error Resume Next

ChDir strPath
strExtension = Dir("*.xlsx")

        Do While strExtension <> ""
            Set wbOpen = Workbooks.Open(strPath & strExtension)
            Set wbNew = Workbooks.Add
            wbNew.SaveAs Filename:="C:\test\copiedFile", FileFormat:=xlCSV

            wbOpen.Sheets(Sheets.Count).Copy
            wbNew.Sheets(Sheets.Count).PasteSpecial

            strExtension = Dir
        Loop

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
On Error GoTo 0
End Sub

我想我只是不明白,这就是它不起作用的原因。此代码创建一个空的 csv 文件,并在每次运行脚本时创建一些奇怪的工作簿。

你能帮我么?

4

2 回答 2

1

好的,我为我找到了一个可行的解决方案:

Sub CopySameSheetFrmWbs()
Dim wbOpen As Workbook
Dim wbNew As Workbook

Const strPath As String = "C:\vba_test\"
Dim strExtension As String

'Comment out the 3 lines below to debug
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error Resume Next

ChDir strPath
strExtension = Dir("*.xlsx")

        Do While strExtension <> ""
            Set wbOpen = Workbooks.Open(strPath & strExtension)

            With wbOpen
              .SaveAs (Left(wbOpen.Name, InStr(wbOpen.Name, ".") - 1)), FileFormat:=xlCSV
              strExtension = Dir
            End With
        Loop

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
On Error GoTo 0
End Sub
于 2013-07-05T14:01:30.237 回答
0

目前,您的代码会保存到一个空文件,而无需先复制表格。

将您的代码更改为:

 Do While strExtension <> ""
            Set wbOpen = Workbooks.Open(strPath & strExtension)
            Set wbNew = Workbooks.Add
            wbOpen.Sheets(Sheets.Count).Copy
            wbNew.Sheets(Sheets.Count).PasteSpecial

            strExtension = Dir


            wbNew.SaveAs Filename:="C:\test\copiedFile", FileFormat:=xlCSV

Loop
于 2013-07-05T11:39:44.943 回答