1

VBAアドインのエクスポートされたコンポーネントの(バージョン管理された)フォルダーがあります(つまり、多くのclsfrmfrxbas、およびtxtファイル)。誰かが私に、このフォルダーの名前を取り、(機能する)XLAを生成するビルドスクリプト(VBスクリプト、またはより複雑なものにすることができます)を教えてもらえますか?

XLAファイルをプログラムで変更できることを知っています(たとえば、この質問)。そのため、空のXLAを作成し、フォルダー内のすべてのファイルをループして追加するスクリプトを作成するのはそれほど難しくありません...?

ありがとう、

ニック

(編集:何か違いがあればExcel 2003)

4

1 に答える 1

0

Excel ワークブック内で非常に単純な VBA マクロを使用して、基本的に同じことを行いますが、フォームがなく、書式設定されたテキスト ファイルにいくつかの単体テスト情報があります。VBA は VBScript と非常によく似ており、以下のコードは VBScript で利用可能なファイル システムと Excel オブジェクト モデルを使用しているため、おそらく役に立つでしょう。

これは .bas モジュールからの抜粋です。それを空白のワークブックにドロップし、テキスト ファイルをそのワークブックがあるディレクトリにドロップして、インポートを実行します。新しく作成された別のワークブックを対象とするアドインであろうと、Excel の外部でビルド全体を実行するスクリプトであろうと、より正式なものに再利用するのは非常に簡単です。

'...

Private fs_ As FileSystemObject

'...

Private Sub import_()
    On Error GoTo EH

    Set fs_ = New FileSystemObject

    Call importTests_(Application.ThisWorkbook, Application.ThisWorkbook.path)
    Call importCode_(Application.ThisWorkbook, Application.ThisWorkbook.path)

    Exit Sub

EH:
    Debug.Print "Error in import_: " & Err.Number
End Sub

'...
'stuff about importing tests ignored...
'...

Private Sub importCode_(wbk As Workbook, folderName As String)
    Dim folderObj As Folder
    Set folderObj = fs_.GetFolder(folderName)

    Dim fileExt As String

    Dim fileObj As File
    For Each fileObj In folderObj.Files
        fileExt = fs_.GetExtensionName(fileObj.name)

        If fileExt = "bas" Or fileExt = "cls" Then
            Call wbk.VBProject.VBComponents.Import(fileObj.path)
        End If
    Next fileObj
End Sub

'...

Excelでフォームを使用したことがないため、フォームのインポートに関する問題が何であるかわかりません。

于 2010-10-19T17:49:35.250 に答える