2009-04-08 12 views
0

最初の部分は現在動作中です[ 私はハングアップしているようです。モジュールを追加/削除する部分がVBAで動作するときに動作する 「このブックには他のデータソースへのリンクが含まれています」というダイアログが表示されていて、それがハングアップすることに注意してください。 したがって、 0の引数と2も試みたが、まだそれは私が今も "を許可している(hereを見つけることができるよう第2引数がUpdateLinksある) ]再び14/04/2009 編集しvbscriptを使用してxls 2003にプログラムでモジュールを追加します

dim objExcel 
dim objWorkbook 
Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open( "H:\M\X\C.xls", 0 , , ,"PASSWORD!") 

Const modpath = "H:\M\V\" 
Const modtest = "TEST.cls" 
Const modname = "TEST" 

On Error Resume Next 

Dim vbcomp 
Set vbcomp = ActiveWorkbook.VBProject.VBComponents(modname) 
objWorkbook.VBProject.VBComponents.Remove vbcomp 
objWorkbook.VBProject.VBComponents.Import modpath & modtest 

objWorkbook.Save 
objWorkbool.Close 
set vbcomp = nothing 
set objworkbook = nothing 
set objExcel = nothing 

をハングツール - マクロ - セキュリティ - vbprojectアクセス '

これでスクリプトは終了しましたが、xlsを開いて変更が行われたかどうかを確認しようとすると、「スクリプトの実行に使用されたアカウント」によってシートがロックされていることを知らせるメッセージが表示されます。オープン/なぜそれが正しく制御を解放していない

に通知する「読み取り専用」**

+0

解決されます。 Open( "H:\ M \ X \ Cn.xls"、0) "は問題のある行ですか?他の.xlsファイルでも動作しますか? –

+0

説明のために、あなたのコードはVBA( "ActiveWorkbook")とVBScript(CreateObject)が混在しているように見えます。それがうまくいくかどうか私には驚かされるだろう。 VBAソリューションまたはVBScriptソリューションをご希望ですか? –

+0

divo、Excelアプリケーションオブジェクト(CreateObjectが必要)があれば、VBAの言葉でそれを話すことができます。したがって、Excel.Applicationを作成する前にActiveWorkbookを使用することはできません。 – Adarsha

答えて

0

編集したスクリプトが動作します。

問題は、VBAプロジェクトレベルではなく、ブックレベルでパスワードを入力していたために発生しました。

ウェブ上のクイック検索は、(のSendKeysなど)とにかく、これを行うことは不可能であることが明らかになったので、手動でプロジェクトにパスワードを削除した後、問題はそう「objWorkbook = objExcel.Workbooksを設定

0

最初に考えた:?ワークブックはすでにアプリケーション用の「MicrosoftのVisual Basicに(VBA内の)参照が含まれています拡張性 "ライブラリ? VBProjectオブジェクトと対話できるようにする必要があります。実際には、コードがVBAで動作する場合は、おそらく参照があります。

2番目の考え:ActiveWorkbookは実際のワークブックの外では定義されていない可能性があります。それをあなたのobjWorkbookオブジェクトに置き換えてみてください。

0

ここに第3の考えがあります。モジュールを含める前に、アプリケーションのDisplayAlertsプロパティをFALSEに設定しようとしましたか?

関連する問題