• ベストアンサー

VBScriptからEXCELのVBAコマンドを実行するには?

VBScriptからEXCELのVBAコマンドを実行するにはどうしたら良いでしょう? 例) Set P_OBJEXCEL = CreateObject("Excel.Application") ※ここで EXCEL VBA の Chdir "N:\"を行いたい W_INFILE = P_OBJEXCEL.Application.GetOpenFilename("EXCEL(*csv),*.csv",,"入力ファイル") P_OBJEXCEL.Application.Quit 環境→EXCEL2000+Windows2000+IE6 目的→入力ファイルを取得ため、N:\配下をGetOpenFileNameにて開きたい ※EXCELのデフォルトパスを変更したくないため 何かヒントを御願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> 目的→入力ファイルを取得ため、N:\配下をGetOpenFileNameにて開きたい ファイル名の取得だけなら、こういうのじゃダメですか? Excel で開くなら、この後で Workbooks.Open で開けば良いですし。。 なお、字下げは全角SPでしてますので、実際にテストするときは、 タブに置換して下さい。 With CreateObject("MSComDlg.CommonDialog")   '.CancelError = True   .MaxFileSize = 256   .InitDir = "N:\"   .DialogTitle = "ファイルを開く"   .Filter = "TEXT (*.csv)|*.csv|すべてのファイル (*.*)|*.*"   .ShowOpen   MsgBox .FileName End With あと、 > ※EXCELのデフォルトパスを変更したくないため この意味が良くわからないです。

teto_pun2
質問者

お礼

回答ありがとうございます 試してみたら、「クラスを使用する使用許可がありません」80040112が発生しました 従って、こちらの環境では、動作できませんので、あきらめました

その他の回答 (1)

noname#219128
noname#219128
回答No.1

普通に P_OBJEXCEL.Run "hoge" ※hogeは関数です。 では駄目なのでしょうか?

teto_pun2
質問者

お礼

回答ありがとうございました P_OBJEXCEL.Run "Chdir """N:\""" にて実行しましたが、未知の実行時エラー(800A03EC)となり あきらめました

関連するQ&A

  • エクセルVBAとVBScript

    WinXP/Pro  エクセル2002使用です。 VBScriptで下記のメール送信のプログラムを作り、 それをエクセルVBA→BATファイル→VBScript(→エクセルVBAに戻る)という流れで自動化させましたが、下記のコードでは、現在進行中のエクセルVBAとは別のブックを作るのでうまくいきません。 (エクセルブックを2重起動してしまいます) Set objExcel =GetObject( "d:\auto\aaa.xls") Dim stradrs Dim strkk Dim strjikan with objExcel stradrs = .Worksheets("Sheet1").Cells(5,1).Value strkk= .Worksheets("Sheet1").Cells(4,1).Value strjikan = .Worksheets("Sheet1").Cells(4,2).Value end with Set objEmail = CreateObject("CDO.Message") objEmail.From = "***@***.com" objEmail.To = stradrs objEmail.Subject = "表題" objEmail.Textbody = "内容" objEmail.AddAttachment("d:\auto\" & strkk & strjikan & ".doc") objEmail.Send Set objEmail = nothing Set objExcel = nothing 目的は、最初に立ち上げている(VBScriptを呼び出したVBAを実行中の)エクセルから値を取得したいのです。 下記いずれかの方法によると思っています。 (1)エクセルVBAから直接VBScriptに引数で値を渡すことは可能でしょうか? (2)VBScriptからエクセルブックを起動させずに値を取得することは可能でしょうか? 値はテキスト文字です。 何卒よろしくお願いします。

  • VBScript実行時エラーについて

    filemakerでデータをコピーし下記のようなVBScriptを使いエクセルファイル(グラフを下準備してある)を開きそのデータを貼り付けグラフを完成させ、そのグラフをgifファイルにエクスポートで保存し、次にfilemaker側でそのgifファイルを読み込む作業するスクリプトを組んでいます。ここで,PCを起動したときとか、作業中でも度々VBScript実行時エラー(パスまたはファイル名が無効です)が発生します。エクスポート先のgifファイル名を替えると1時的に問題は解決しますが・・・あくまで一時的なものなのでなんとか根本的解決策をご教示願います。 Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("C:\Users\hhh gggg\Documents\FM_Trial\グラフ6.xlsx") objExcel.Visible = True objExcel.Sheets("sheet1").Select Createobject("WScript.Shell").AppActivate("グラフ6.xlsx") ' --A1のセルに値を設定 objExcel.Sheets("sheet1").Range("A1").Select objExcel.Sheets("sheet1").Paste objExcel.Sheets("sheet1").ChartObjects("グラフ 1").Chart. Export ("C:\Users\hhh gggg\Documents\FM_Trial\test61.gif") ' --0.5秒待つ WScript.Sleep(1500) ' --Excel終了 objWorkbook.Close False objExcel.Quit ' --Excelオブジェクトクリア Set objExcel = Nothing

  • accessでexcelのVBAを実行

    excelのファイルにはVBAは一切入れないで、accessにexcelで使いたいVBA入力しておき実行したいのです。 理由はCSVファイルをVBAにて加工したいからです。 よろしくお願い致します。

  • VBScriptでエクセルを開き、

    VBScriptでエクセルを開き、 そのエクセルにテキストを書き込んでセーブしてから閉じる。 という処理を行っているのですが、 テキストを書き込んでいる間に、エクスプローラー上で別のエクセルファイルを開こうとすると、VBScriptで開いている同じエクセルアプリケーションで開いてしまい、 VBScriptのセーブしてから閉じるという処理が走ると、同様に閉じてしまいます。 希望としては、 テキストを書き込んでいる間に、エクスプローラー上で別のエクセルファイルを開こうとすると、別エクセルアプリケーションが開き、VBScriptとは、別として動作してほしいと考えていますが、 私の至らぬ知識ですとどうしても解決できません、ご協力をお願い致します。

  • Excel VBA:ダイアログを使ってファイル名を取得したい

    ファイルを開く際に、GetOpenFilenameを使用し、以下のように記述しています。 Dim sFName As String Dim sPath As String sPath = ThisWorkbook.Path & "\データフォルダ" ChDir sPath sFName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", MultiSelect:=False) このとき、win98ですと、指定したフォルダが表示されますが、 win2000やXPですと、Excelのカレントフォルダが表示されます。 ダイアログ表示したときに、任意のフォルダを表示させるには、どのようにしたらよいですか? ご回答よろしくお願いします。

  • ExcelVBA…Excelを閉じたいのです。

    ExcelVBA…Excelを閉じたいのです。 CSVファイルをExcelに取り込み、並び替えて再びCSVファイルに書き出す処理を書いています。 その処理が終わった後に、Excel自体を保存せずに閉じたいと思い、 Application.Quit Application.DisplayAlerts = False と記述しました。 すると、Excelが閉じられたあと、5秒くらい固まってしまいます。 何か負荷がかかっているのかと思いますが、記述に問題があるのでしょうか?

  • Excel VBScript VBA セルコピー

    当方、Windows7 Pro 64bit 、Excel2010の環境です。 出来れば、VBScript希望ですが、VBAでも結構ですので 教えてください。 あるエクセルのファイルの特定のセルを 別のエクセルのファイルにコピーするとき、 x.Cells(1, 1).Value = y.Cells(1, 1).Value などとするのは分かっているのですが、 コピーされる元のセルの中身だけでなく、 フォントやフォントの色、 罫線の状況など、 設定されているそのままをコピーしたいのです。 上記のような情報を「設定する」方法は 調べると分かるのですが、 そのまま持ってくる方法は 私が調べた中では、出てきませんでした。 もちろん、 x.Cells(1, 1) = y.Cells(1, 1) とやってみましたが、ダメでした。 何か、方法はあるでしょうか? 教えてください。

  • Word2000のVBAでエラーが出ます

    VBA初心者です。Word2000上でExcel2000並べ替え用VBAを作成しまが、「名前付き引数が見つかりません」のエラーが出ます。 Sub Sort() Dim objExcel As Excel.Application Dim tmpBook As Excel.Workbook Set objExcel = CreateObject("Excel.Application") Set tmpBook = Workbooks.Open("C:\Dic1.xls") Range("A1:B100").Select Selection.Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Header:=xlGuess, _ OrderCustom:=1, _ MatchCase:=False, _ Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin tmpBook.Close True objExcel.Quit End Sub Excel2000上で同様のマクロを作成すると、正常に動作します。初歩的な質問で申し訳ありませんが、どなたか御教授をお願い致します。

  • HTML内に組み込んだVBScriptでExcelの値を取得したい

    ローカルドライブに C:\Book1.xls があります。 VBScriptで下記の記述をして、拡張子.vbsで保存し、そのファイルをダブルクリックすると、メッセージボックスにC:\Book1.xls のシート「管理」のセルA1の値を表示することができます。 Set objExcel = WScript.GetObject("C:\Book1.xls") WScript.Echo objExcel.Sheets("管理").Cells(1,1) これと同じようなことをHTML内に埋め込んだVBScriptでやりたいと考えています。 C:\Book1.xls のシート「管理」のセルA1に入力されている値を取得して、document.write を使って書き出したいと考えています。 出来れば、ネットワーク上のパスに置かれたExcelファイルに対しても同様のことをしたいと考えています。 サンプルコードなどをご教授願えないでしょうか?

  • エクセルでCSVファイルをユーザーに選択させたい

    エクセルVBAで、特定のフォルダ(C:\Data)に入っているCSVファイルをユーザーに選択させたいのです。 ただ、その際、選択肢に表示させるファイルに、例えば”企画“という文字列があることを条件にしたいのです。 組み込みダイアログであれば OpenFileName = Application.Dialogs(xlDialogOpen).Show("C:\Data\*企画*.csv") で大丈夫だと思います。 しかし、組み込みダイアログでは実際にそのファイルがエクセルで開かれてしまい、先頭の数字の0が消える等の不都合が起きてしまいます。 そのため、ファイルは指定させますが実際には開かずファイル名だけを取得する Application.GetOpenFilenameを使おうと思いました。 これでファイル名さえ所得できればあとは外部データの取り込みでCSVデータを取得できます。 ところが、 OpenFileName = Application.GetOpenFilename("C:\Data\*企画*.csv") はエラーになってしまいます。ネットで検索すると、Application.GetOpenFilenameではファイル名にワイルドカードは使えないようです。 このような場合、どのような方法をとればよいでしょうか?

専門家に質問してみよう