ゲイリーは、社外の誰かによって生成されたXLSファイルを定期的に受け取ります。次に、いくつかのマクロをワークブックにインポートして(または、わざわざTXTファイルからコピーして)、ワークブックをXLSM形式で保存する必要があります。ゲイリーは、これを自動化して、通常は手動で追加するマクロをインポートするマクロを実行して、ブックを適切な形式で保存できるようにする方法があるかどうか疑問に思います。

VBProjectオブジェクトを使用して自動化する方法があります。外部テキストファイルに基本的にVisualBasicモジュールが含まれている場合は、Importメソッドを使用してそれらのモジュールを実際にインポートできます。 Visual BasicEditorのインポート機能を使用する場合とまったく同じように動作します。使用できるコードの例を次に示します。

Sub AutomateImport()

Const ModulePath As String = "C:\temp\code.txt"



Dim thisTarget As Workbook     Dim thisName As String

Set thisTarget = ActiveWorkbook     thisName = thisTarget.Name

' Save as XLSM file (neceassry before importing module)

ActiveWorkbook.SaveAs thisName & ".xlsm", _       FileFormat:=xlOpenXMLWorkbookMacroEnabled

' Import the VBA code required     thisTarget.VBProject.VBComponents.Import ModulePath

' Save the workbook     ActiveWorkbook.Save End Sub

コードは、実際にインポートを実行する前に、アクティブなブックをXLSMファイルとして保存することに注意してください。これが必要なのは、マクロをサポートしていないブックにVBAモジュールをインポートしようとすると、インポート機能が機能しなくなる可能性があるためです。さらに、マクロの実行中にエラーが発生した場合は、VBA拡張性オブジェクトライブラリへの参照を確立したことをVisual BasicEditorで確認することをお勧めします。

マクロを使用するには、目的のテキストファイルを正しく指すようにModulePath定数を更新してください。マクロは、Excelを使用しているときにいつでも使用できるように、個人用ブックにも保存する必要があります。

また、Ron DeBruinのサイトで、マクロ内でVBAコードをインポートおよびエクスポートする方法を示すコードを調べることで利益を得ることができます。

https://www.rondebruin.nl/win/s9/win002.htm

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11855)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。