0

ディレクトリ内のすべての .xls ドキュメントをループして、各ファイル コンポーネント「ThisWorkbook」の 1 行を変更しています。

すべて正常に動作し、コードによってファイルが開かれ、実行時に "test" という行が ThisWorkbook に挿入されていることがわかります。しかし、保存は機能しません。保存機能はシートのみですか?コンポーネントの変更を保存するにはどうすればよいですか?

  excelfile = Dir(path & "*.xls")
  Do While excelfile <> ""
    If excelfile <> "merni.xlsm" Then
        Set wbResults = Workbooks.Open(Filename:=path & excelfile)
        wbResults.Unprotect Password:=""
        DoEvents
        Set codeModule = wbResults.VBProject.VBComponents("ThisWorkbook").codeModule
        With codeModule.InsertLines(3, "test")
        End With
        wbResults.Save
        wbResults.Close
    End If
    excelfile = Dir
  Loop
4

1 に答える 1

2

このコードは私のために働いた

Sub AddTest()

    Dim wb As Workbook
    Dim cm As CodeModule

    Set wb = Workbooks.Open("C:\Users\dick\Book3.xls")
    Set cm = wb.VBProject.VBComponents.Item("ThisWorkbook").CodeModule
    cm.InsertLines 3, "test"
    wb.Save
    wb.Close

End Sub

しかし、この行で

    With cm.InsertLines(3, "test"): End With

イベントコンパイルは行われません。InsertLinesはメソッドであり、オブジェクトを返さないため、Withブロックでは使用できないと確信しています。

于 2012-07-02T21:33:19.843 に答える