1

誰かが外部ファイルにVBAコードを書く方法を知っていますか?それはExcelでこのマクロを実行するたびにExcel 2003 VBAマクロに「インポート」されます-自己更新コードのように?

アイデアは、外部エディター(VIm)でコードを記述し、Excelマクロを起動するたびに、マクロが新しいデータをチェックし、必要に応じてそのコードを内部にインポートして実行します(1つ以上の関数/サブの場合があります)。

手順は次のとおりです。Excelを開き、XLSファイルを開き、ボタンをクリックすると、マクロが開始し、新しい外部データ(外部エディターで書き込んだコード)をチェックし、データが新しい場合は、古いコードを削除し、外部コードをインポートしてから、実際にマクロ自体を実行します。

誰?

4

2 に答える 2

0

このVIM (テキストエディタ)を使用して.basファイルを書き込むと仮定すると、このサイトのモジュールまたはプロシージャを上書きするための多くの関数を使用できます。VBEのプログラミング

したがって、構造は次のようになります。

Sub MyMacro()

Overwrite MyModule in this Workbook with MyModule in .bas file (you could do line count checks or something if you need to, or just overwrite each time to ensure latest code

Call MyModule

End Sub

最新のコードが常にワークブックで機能することを確認するために、組み込みたい明らかなチェックがあります...新しい外部データ(外部エディターで記述したコード)をチェックします。データが新しい場合は、古いコードを削除します。 、外部コードをインポートしてから、実際にマクロ自体を実行します。

于 2012-05-29T14:35:43.500 に答える
0

見つかった解決策(一部はhttp://www.cpearson.com/excel/vbe.aspxから)10xスコット:

Sub AddOutsideCode()
    Dim VBProjekt As VBIDE.VBProject
    Dim VBKomponenta As VBIDE.VBComponent
    Set VBProjekt = ThisWorkbook.VBProject
    Call DeleteAllButThis(ThisWorkbook, "Fixed")
    Set VBKomponenta = VBProjekt.VBComponents.Import(Filename:="C:\bat\bat.bas")
    VBKomponenta.Name = "OutsideCode"
End Sub

'Delete all modules but named
Private Sub DeleteAllButThis(ByVal wb As Workbook, ByVal CompName As String)
    Application.DisplayAlerts = False
    On Error Resume Next
    For Each komponenta In ThisWorkbook.VBProject.VBComponents
        If komponenta.Name <> CompName Then
            If komponenta.Type = vbext_ct_StdModule Then
                ThisWorkbook.VBProject.VBComponents.Remove komponenta
            End If
        End If
    Next komponenta
    On Error GoTo 0
    Application.DisplayAlerts = True
End Sub

しかし、外部コードが変更されたかどうかを確認するにはどうすればよいですか?

于 2012-05-29T16:57:50.610 に答える