VBScript ファイルから Excel マクロ (VBA) を実行する

VBScript ファイルから Excel マクロ (VBA) を実行する

データベースから情報を引き出し、そのデータを Excel ファイル (C:\file.csv) にエクスポートする vbs ファイルがあります。これが完了したら、一連のマクロ (vba) を実行してこのデータをフォーマットします。これらのマクロは常に同じで、通常はテキスト ファイルからスプレッドシートにコピー/貼り付けして、手動で実行します。

データがスプレッドシートにエクスポートされた後にマクロが実行されるように、マクロ vba を vbs ファイルに含める方法はありますか?類似のソリューション方法を示す電話Excel ファイル内の定義済みマクロで、マクロの内容を VBS ファイルに保存したり、VBS ファイルから実行したりしたいと考えています。VBS ではまったく新しいファイルが作成され、その後書式設定マクロが実行されることになるので、これは役に立ちます。

私の考えでは、Set objWorkbook = objExcel.Workbooks.Open("C:\file.csv")

答え1

正しい方向に進んでいます。まず必要なのは、遅延バインディングを使用して Excel.Application の新しい変数を設定することです。これは、通常の Excel VBA の機能がすべて隠れているオブジェクトの下にあります。以下は、新しいワークブックを開き、新しいシートを追加して「TEST」という名前を付け、その新しいA1シートのセルにコンテンツを追加するサンプルの VBS スクリプトです。完了すると、VBS は「Finished」をエコーし​​ます。

Sub createWB()

  'Set the excel application variable
  set xlApp = CreateObject("Excel.Application")

  'Make it visible, or hide it in the background
  xlApp.Application.Visible = true

  'Open a new workbook, for instance
  set xlWB = xlApp.Workbooks.Add()
  xlWB.Activate

  'Add a sheet, name it test, bring it front and center
  set xlSheet = xlWB.Worksheets.Add()
  xlSheet.Name = "TEST"
  xlSheet.Activate

  'Put something in cell A1
  xlSheet.Cells(1,1).value = "TEST CELL CONTENT"

End Sub

'Call the subroutine above
call createWB

WScript.Echo "Finished."
WScript.Quit

VBS を満足させるために既存の VBA コードを少しいじる必要があるかもしれませんが、マクロを VBS で記述することは、VBA で記述するのと同じくらい機能的であることがわかります。

答え2

少し前にこれを試してみましたその他 SUの回答私が見つけた唯一の方法は、VBScriptの代わりにPowerShellを使うことです。PowerShellはすべてのVBAコマンドを実行できます。構文だけができる異なる。

PowerShell スクリプトとしての VBA の例

$excel = New-Object -ComObject excel.application 
$workbook = $excel.Workbooks.Open("C:\file.csv")
$excel.visible = $true

答え3

私はマクロを Excel テンプレートに配置します。次に、テンプレートに autonew マクロを作成し、csv ファイルをインポートして書式設定マクロを実行します。

次に、vbs を使用して csv ファイルを作成して保存し、テンプレートに基づいて Excel ファイルを開きます。

関連情報