• 締切済み

ExcelのVBAでRangeとCellsをWSHから使いたいのですが・・

エクセルに書き込むマクロのコードを書いていたのですが、 Exl.range(Cells(1, 1), Cells(3, 4)).Font.Bold = True のような部分が、VisualBasic や OFFICEのVBA上で 参照設定でExcelを指定していると、動くのですが、 同じコードが、WSHでは参照設定ができないせいなのか、 動きません。WSHの場合、どのようにしたらよいのでしょうか。 よろしくお願いします。

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

>Range や Cells は、もっと階層をたどったようなオブジェクトの >表現方法が必要なのだろうかと思ったのですが・・ VB上の参照設定と同じように、アプリ~ブック~シートですよね。

参考URL:
http://www.hi-ho.ne.jp/tetsuzo/windows/wsh/excel.htm
accessdb_user
質問者

お礼

ありがとうございました。ご指示どおりにやってみると、出来ました。

  • qwedesu
  • ベストアンサー率31% (6/19)
回答No.1

Set Exl = WScript.CreateObject("Excel.Application") 上の1行を追加してからつかえます。 Exl.Range(Cells(1, 1), Cells(3, 4)).Font.Bold = True

accessdb_user
質問者

補足

ありがとうございます。 説明が不足していました。すみませんでした。 CreateObject をやっても うまくいかなかったのです。 Set Exl = WScript.CreateObject("Excel.Application") Exl.Range(Cells(1, 1), Cells(3, 4)).Font.Bold = True で WSHを実行しても、 型が一致しません。: 'Cells' というエラーが出ます。 もしかしたら、 Range や Cells は、もっと階層をたどったようなオブジェクトの 表現方法が必要なのだろうかと思ったのですが・・

関連するQ&A

  • range cells 名称があれば教えてください

    MsgBox range("a1").Value MsgBox Cells(1, 1).Value どちらもセルA1の値を取得できるコードですが それぞれ何方式っていう名称があれば教えてもらえますか? 上はRange方式、で下は、Cells方式でしょうか? (エクセルvbaです)

  • Excel VBA Cells 絶対参照 書き方

    Excel VBAにてお尋ねいたします。 Excel VBAにてCellsを使用してセル範囲を指定させていただく際に、絶対参照($A$1:$E$10など)を使用する場合はどのように記述すればよろしいでしょうか? Cellsを使用するのは、セル範囲が毎回異なるため、範囲指定に変数を使用しているためです。 相対参照でしたら、Range(Cells(1,1),Cells(Rows<行番号の変数>,Cols<列番号の変数>))といった記述かと思いますが、絶対参照の場合はどのように記述すればよろしいでしょうか?

  • エクセル マクロについて Range と Cells について 

    エクセル2003 OSはXP を使っています。 以下のとおり、全く同じコードにも関わらず、前者は動き、後者は動きません。 なお、ClearContents を Clear に変えても Copy に変えても、同様の結果です。 しかし、Cells を使わずに、"A4:C10" 等、番地で直接書くと、後者も動きます。 後者のコードを Cells で動かす方法は無いでしょうか? また、何故こんな現象がおこるのでしょうか? なお、シート名などは、間違いありません。 どなたか教えてください。 Sheets("基本データ作成").Range(Cells(3, 3), Cells(qwe, 4)).ClearContents Sheets("検討データ").Range(Cells(4, 1), Cells(qwe, 3)).ClearContents

  • WSHスクリプトから動かしたEXCEL・VBAマクロでWSHスクリプトを停止する方法

    WSHスクリプトからEXCELファイルのVBAマクロを呼び出し実行させます。 このマクロ内ではif関数で設定している条件の真偽を判定しています。偽の場合、マクロは終了しEXCELファイルは一旦閉じられます。そして一定時間がたったら、WSHスクリプトのループ処理で再び同じマクロが開かれif関数で条件判定を行います。 もし、真の場合、マクロの設定処理の実行・終了とともにWSHのループ処理も終了させたいのですが、VBAマクロからそのマクロを実行させているWSHスクリプトを停止させることは可能でしょうか。

  • Range("A1")⇔cells(1,1)の変換。

    EXCELのマクロについて質問します。 Range("A1")⇒(1,1) cells(1,1)⇒("A1") に一発変換する方法を教えて下さい。 時間があるかた宜しくお願いします。

  • ExcelのマクロをWSHから実行させると「型が一致しません」のエラーがでます。

    WSHからExcel2000のマクロを実行させています。このマクロはセルの計算式の結果(セル(1,2))をif関数で比較するコードが入っています。 If Cells(1, 2).Value = "8月" Then hensu = 1 End If これをWSHから実行させると「型が一致しません」とエラーが出ます。 Debug.Print TypeName(Cells(1,2).Value)で型を表示させてみるとマクロを直接実行させたときはStringですが、WSHから実行させるとErrorとなっています。 なぜWSHから実行すると型がErrorとなるのかということと、解決策を教えていただければ幸いです。 ちなみにWSHでマクロを実行させている部分は以下のとおりです。 Set objExcelApp = CreateObject("Excel.Application") Set objWbk = objExcelApp.Workbooks.Open("ExcelBook.xls",True) objExcelApp.Run("ExcelBook.xls!macro1")

  • Excel VBAのCharacters関数

    Range("b43").Characters(5, 10).Font.bold = True と入れたのですが、指定のセルが全く太字になってくれません。いろいろパラメーターをいじってみたのですが、 Range("b43").Characters(1,10).Font.bold = True Range("b43").Font.bold = True の両方で、全部太字になる現象が起きました。基点が1以外ですとまったく動いてくれず、基点が1だと全部太字になってしまうようです。どのようにすれば狙った場所だけ太字にすることができるのでしょうか? セル自体にはvlookup,char(10),concatenate,if,iserrorの関数が使用されています。

  • ExcelマクロでRange("A1:A5,C1:C5")をCellsで書きたいのですが

    マクロ初心者です。 Excelマクロでグラフを作成するときに、元データを指定する所で、 Source:=Range("A1:A5,C1:C5")とするような場合、 「A1」とかアルファベットでの番地指定ではなく、 Cellsを用いて書きたいのです。 Source:=Range("A1:A5")であれば、 Source:=Range(Cells(1, 1), Cells(5, 1))と書けばいいことは分かるのですが、範囲指定を複数にする場合が分からないのです。 よろしくお願いします。

  • WSHで、EXCELにワークシートをCSVから読み込んで追加したい。

    WSHを使って、EXCELを起動して、既存のCSVファイルからデータを読み込みたいのですが、複数のCSVから読み込むなどして、同じワークブックの新しいシートにCSVから読み込んだデータを追加していきたいのですが、どうやればよいのかわかりません。 下のソースのようにしたのですが、そうすると、別のワークブックとして開いてしまうので、わからなくなってしまいました。お願いします。 set Exl=CreateObject("Excel.Application") Exl.Visible=True Exl.workbooks.add Exl.workbooks.OpenText "c:\data.csv"

  • EXCELのVBAでRange("A1:C4")を変数にする方法を教え

    EXCELのVBAでRange("A1:C4")を変数にする方法を教えて下さい。 Sub Sample1() Range("A1:C4").Borders.LineStyle = True End Sub 上のマクロの"A1:C4"を変数にして成立させるにはどのように設定すればいいのでしょうか? 以下の方法ではエラーになってしまうので、宜しくお願いします。 Sub Sample1() HENSU = Chr(34) & "A1" & ":" & "C4" & Chr(34) Range(HENSU).Borders.LineStyle = True End Sub