2016-09-09 5 views
0

コードに埋め込まれた接続文字列を使用して特定のSQLサーバーを指し示すマクロを持つ多数のブックがあります。私たちは新しいSQLサーバーに移行したので、明示的に言及した各マクロの新しいサーバーを見るためにこれらを調べて接続文字列を変更する必要があります。Excelのモジュールからコードを取得

現在、私はワークブック内のすべてのモジュールをリストすることができますが、各モジュールから名前とタイプ番号だけを取得することはできません。

for vbc in wb.VBProject.VBComponents: 
    print(vbc.Name + ": " + str(vbc.Type) + "\n" + str(vbc.CodeModule)) 

サーバー名を検索して置き換えるために、コードにはどのようなプロパティが格納されていますか?私はVBAとpywin32のドキュメントを見てきましたが、何も見つかりませんでした。

答えて

1

これは、CodeModuleオブジェクトに行のメソッドがあり、開始行と終了行に基づいて選択を行うことができます。これをCountOfLinesプロパティと組み合わせて使用​​すると、すべてを取得できます。

for vbc in wb.VBProject.VBComponents: 
    print(vbc.Name + ":\n" + vbc.CodeModule.Lines(1, vbc.CodeModule.CountOfLines)) 

それはそれは私を捕まえて最初の行が1行目ではなく、ライン0であることにも注目に値します。インデックス0が範囲外であるため、次のエラーはvbc.CodeModule.Lines(0, vbc.CodeModule.CountOfLines - 1)になります。

関連する問題