エクセルに書き込むマクロのコードを書いていたのですが、

Exl.range(Cells(1, 1), Cells(3, 4)).Font.Bold = True

のような部分が、VisualBasic や OFFICEのVBA上で
参照設定でExcelを指定していると、動くのですが、
同じコードが、WSHでは参照設定ができないせいなのか、
動きません。WSHの場合、どのようにしたらよいのでしょうか。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>Range や Cells は、もっと階層をたどったようなオブジェクトの


>表現方法が必要なのだろうかと思ったのですが・・

VB上の参照設定と同じように、アプリ~ブック~シートですよね。

参考URL:http://www.hi-ho.ne.jp/tetsuzo/windows/wsh/excel …
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/04/01 12:22

Set Exl = WScript.CreateObject("Excel.Application")



上の1行を追加してからつかえます。

Exl.Range(Cells(1, 1), Cells(3, 4)).Font.Bold = True

この回答への補足

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

補足日時:2002/03/31 22:10
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「試験範囲」は英語でなんといいますか?

「試験範囲」は英語でなんといいますか?

どの辞書を調べてもthis test covers pages 30-42 のようにしかのっていません。

学校で試験範囲が書かれたプリントのタイトル部分は、一体どのような表現となるのが、英語圏で一般的なのでしょうか。お教えください。

Aベストアンサー

「範囲」とはちょっとニュアンスが違うのだけれど、試験に出る項目のリストには、"exam objectives" とか"Study guide"等と書かれています。
 
学期を通しての試験範囲や試験の日程が書かれたものは"exam schedule" とか "test schedule" と書かれています。
 
黒板の板書や口頭でテスト範囲を発表する場合は、"Test #3 will cover from chapter 5 to chapter 10."等です。 

QExcel VBA で Cells Range 等で参照しているセルが値か式かを取得するには

お世話になります。

Excel の VBA でシート内のデータを処理しようとしています。
セルの内容を文字変数に代入して処理し、それを元のセルに戻すのですが、セルが値であれば問題ないのですが、式だった場合、計算結果を文字にして戻してしまいます。つまり式が消えてしまい、値複写と同じ結果になってしまいます。
そこで、セルが式ならばそのまま処理しないでおきたいのですが、セルが値なのか式なのかを取得する方法が分かりません。
ご教授下さいますようお願いいたします。

Aベストアンサー

MsgBox Range("A1").HasFormula

True なら式です。

Q一般に「英語」というときの言葉の概念の範囲について

一般に「英語」というときの言葉の概念の範囲について

日常生活において、「英語」というとき
いわゆる「英語」の他に
慣用的にフランス語やドイツ語などの外国語(特にヨーロッパ圏の言語)のことも含めて
「英語」と呼び慣わす場合があるような気がするのですが。。。

自分の思い過ごしでしょうか?

Aベストアンサー

・・・というよりは、白人が外国語を話していたら、「英語」ときめつけてしまう
風潮がある、ということでしょう。本当はフランス語やドイツ語かもしらないのに。
あるいは、白人が道にまよっていて親切心がある人がつい「英語」で話しかけて
しまうかもしれません。本当は英語は片言で、スペイン語やイタリア語が
自分のことばかもしれないのに。

Q「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」

「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」
というコードを作ってみましたが、メチャクチャな動きになってしまいます(動きが読めません)。
どこが間違っているのか教えてください。
また、もし、よりわかりやすいコードがありましたら教えていただけると嬉しいです。
よろしくお願いいたします。

Sub Cell( n , "A" )に1を記入する()

Dim n As Long
Dim m As Long
Dim s As Long

'現在のセル( n , "A" )より14行上に数値がないことを確認するために
'14行上のセルを全て足し算しています。
For m = n - 14 To n - 1
s = s + Worksheets("Sheet1").Cells(m, "A").Value
Next

'足し算結果がゼロならば何も記入していないと判断し、
'数字の「1」を記入します。
If s >= 1 Then
Worksheets("Sheet1").Cells(n - 1, "A").Value = 0
ElseIf s = 0 Then
Worksheets("Sheet1").Cells(n - 1, "A").Value = 1
End If
End Sub

「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」
というコードを作ってみましたが、メチャクチャな動きになってしまいます(動きが読めません)。
どこが間違っているのか教えてください。
また、もし、よりわかりやすいコードがありましたら教えていただけると嬉しいです。
よろしくお願いいたします。

Sub Cell( n , "A" )に1を記入する()

Dim n As Long
Dim m As Long
Dim s As Long

'現...続きを読む

Aベストアンサー

はいはい了解。

今着目しているセルが (n,1)であるとする。

条件: 今いるところから上に14行サーチして、一度でも1か2の値が見つかったら
     回答を0とする。14行すべてに1・2の値がひとつも含まれていなければ1とする。



Ans = 1

for i = 1 to 14

x = cells ( n - i , 1 ).value

if x = 1 or x = 2
then
Ans = 0
endif
next i


cells ( n , 1 ) = Ans


デフォルトの回答値=1としておき、一回でも条件にヒットしたら回答値=0にする。
ヒットしたらfor~nextを強制的に閉じてもいいけど、面倒なのでそのまま14回検索する。

Q「実行時エラー 9 インデックスが有効範囲にありません」を英語で連絡したい

VBで作ったソフトで良く出る、
実行時エラー 9 インデックスが有効範囲にありません
というエラーを、開発元に伝えたいのですが、

くだんのソフトがアメリカ製英語ソフトになっています。

アメリカの開発元へ、エラーを伝えてあげたいのですが、
MS日本で翻訳した「実行時エラー 9 インデックスが有効範囲にありません」
というエラーメッセージの、本国英語版メッセージが、どういう文面なのか
わからず困っています。

一応、Microsoft Technetも探してみたのですが、私の力量ではお手上げです。

どなたか英語版の原文エラーメッセージをご存知の方、
または、日本語エラーメッセージの原文対訳サイトをご存知の方、
などいらしてましたら、どうか助けてください。

Aベストアンサー

No.4です。
目的がVisual Basicで
>「実行時エラー 9 インデックスが有効範囲にありません」を英語で連絡したい
なら、どのバージョンでも
Run-time error 9 Subscript out of range
だと思います。

ランタイムがインストールされていなければ、Visual Basicは実行できないと思います。
そのプログラムのインストール時かそれ以前にインストールされていると思います。

Q.copy に、Rangeではなく Cells を使えませんか?

ブック間で、変数によるコピー貼付けをしたいのです

Workbooks(MyFName).Worksheets("部品表").Cells(j * 17 - 11, 2).Copy_
Workbooks(MyFName2).Worksheets("PartsList").Cells(k * 39 - 37, 2)
と書いて見ましたが、デバックしてしまいました。

.Activate の場合も
cellsは使えませんか?

どうぞ教えてください

Aベストアンサー

ただ、RANGEで括るだけでは動きませんので

Dim ws As Worksheet
Dim ws2 As Worksheet

Set ws = Workbooks(MyFName).Worksheets("部品表")
Set ws2 = Workbooks(MyFName2).Worksheets("PartsList")

ws.Range(ws.Cells(j * 17 - 11, 2), ws.Cells(j * 17 - 11, 2)).Copy _
ws2.Range(ws2.Cells(k * 39 - 37, 2), ws2.Cells(k * 39 - 37, 2))

Set ws = Nothing
Set ws2 = Nothing

又は、
Workbooks(MyFName).Worksheets("部品表").Range("B" & j * 17 - 11).Copy _
Workbooks(MyFName2).Worksheets("PartsList").Range("B" & k * 39 - 37)
でも動きます。
こちらの方が余り変更がなくて済みます。

ただ、RANGEで括るだけでは動きませんので

Dim ws As Worksheet
Dim ws2 As Worksheet

Set ws = Workbooks(MyFName).Worksheets("部品表")
Set ws2 = Workbooks(MyFName2).Worksheets("PartsList")

ws.Range(ws.Cells(j * 17 - 11, 2), ws.Cells(j * 17 - 11, 2)).Copy _
ws2.Range(ws2.Cells(k * 39 - 37, 2), ws2.Cells(k * 39 - 37, 2))

Set ws = Nothing
Set ws2 = Nothing

又は、
Workbooks(MyFName).Worksheets("部品表").Range("B" & j * 17 - 11).Copy _
Workbooks(MyFName2...続きを読む

Q英語とスペイン語は現在完了形の守備範囲が違いますか?

たった今話し相手が言ったことを聞き取れなかったとき、What did you say? と[過去形で]聞き返すのが、英語。
Que has dicho? と[現在完了形]で聞き返すのが、スペイン語。このように観察しました。もっとアカデミックな?言い方で説明すると、どんな風に言えますか?英語とスペイン語では現在完了形の守備範囲が違うのでしょうか?

Aベストアンサー

守備範囲は基本的には同じで、どちらも完了、結果、経験、継続を表すのに現在完了形を使います。
スペイン語の方が、過去形、現在完了形の区別を話し手の感情に依存しており、英語よりも用法がフレキシブルです。

例えばスペイン語では極端な話、5年前に起こった出来事を描写する文に現在完了を用いても間違いにはなりません。
分かり易い例を挙げると
Mi abuelo ha muerto hace cinco anos.
など。話し手が今でもおじいさんが亡くなった事を引きずっているんですね。
単純に事実を描写する場合は Mi abuelo murio hace cinco anos. です。

余談ですが、スペインのガリシア地方ではガリシア語に現在完了形が存在しないため
他の地域で完了形を用いる文にも過去形を用いる傾向が強いです。

それに比べると英語の完了形は時を表す副詞(句)によって過去形、現在完了形が明確に分かれています。
現在完了形は明確に過去を表す語句、Yesterdayとか、five years ago等と一緒には使えません。
現在を含む副詞(句)、today、this morning 等は現在完了形を使います。
但し、最近の過去の一時点を表す場合には過去形を用います。

ご質問の What did you say? が What have you said? とならないのは上記の「最近の過去の一時点を表す」場合にあたるのではないでしょうか。

守備範囲は基本的には同じで、どちらも完了、結果、経験、継続を表すのに現在完了形を使います。
スペイン語の方が、過去形、現在完了形の区別を話し手の感情に依存しており、英語よりも用法がフレキシブルです。

例えばスペイン語では極端な話、5年前に起こった出来事を描写する文に現在完了を用いても間違いにはなりません。
分かり易い例を挙げると
Mi abuelo ha muerto hace cinco anos.
など。話し手が今でもおじいさんが亡くなった事を引きずっているんですね。
単純に事実を描写する場合は Mi a...続きを読む

QRangeプロパティとCellsプロパティ

お世話になります。

現在、VB.NET2003からExcel2003を操作するプログラムを作成しているのですが、基本的な点が一つ、わかりませんので、教えていただけないでしょうか?

Range("C5")は、Cells(5,3)
Range("B1:D5")は、Range(Cells(1,2), Cells(5,4))、
と表すことが出来ますが、
Range("A1:E1,A4:E7")はCellsプロパティではどのように指定すればよろしいのでしょうか?

以上、宜しくお願いいたします。

Aベストアンサー

2つのRangeを別に作成して、「Union メソッド」で結合するとか・・・

Q「できる範囲でお手伝いします」を英語で

こんにちは。

「私のできる範囲で助けます」
「私の知ってる範囲で助けます」
みたいな言い方は、英語ではどういいますか?
I do help you as I can. とかでいいんでしょうか?
よろしくお願いします。

Aベストアンサー

I'll help you as much as I can.

<参考>
http://tatoeba.org/eng/sentences/show/464753

QRangeとcellsの範囲選択について

Range("D7:E27,G7:H27").Select
のような感じを
Range(cells(a,b),cells(c,d)・・・)
みたいな感じで変数が使える形で設定したのですが、
どうすればよろしいのでしょうか?

Aベストアンサー

Cellsを使う場合複数のRangeオブジェクトに分けてこれをUnionで合成します

Range( "D7:E27,G7:H27" )なら D7:E27とG7:H27の2つに分けます

Union( Range( Cells( 7, 4 ), Cells( 27, 5 ) ), _
    Range( Cells( 7, 7 ), Cells( 27, 8 ) ) ).Select
といった具合です


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング