1 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 12:25:04 ] 過去スレ 01 pc11.2ch.net/test/read.cgi/tech/1054356121/ 02 pc11.2ch.net/test/read.cgi/tech/1168308855/ 03 pc11.2ch.net/test/read.cgi/tech/1180192018/ 04 pc11.2ch.net/test/read.cgi/tech/1189814602/ 05 pc11.2ch.net/test/read.cgi/tech/1197448064/ 06 pc11.2ch.net/test/read.cgi/tech/1205231499/ 07 pc11.2ch.net/test/read.cgi/tech/1212587819/ 08 pc11.2ch.net/test/read.cgi/tech/1219673793/ 09 pc11.2ch.net/test/read.cgi/tech/1228372971/ 10 pc12.2ch.net/test/read.cgi/tech/1235332603/ 11 pc12.2ch.net/test/read.cgi/tech/1241885130/ 12 pc12.2ch.net/test/read.cgi/tech/1247566074/
208 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 04:17:30 ] モジュールが無事終了するとは限らないだろ
209 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 05:39:19 ] >>204 いらないよ。 >>207 何の礼儀だよ? >>208 だから?
210 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 06:03:58 ] ↑こいつ最高にアホw
211 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 07:23:40 ] ↓こいつ最高に天才www
212 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 10:05:40 ] ∩――、 /(゚)丶_ 丶 / (● (゚)|つ | (入_ノ ミ | (_/ ノ \___ノ゙ー-、 /\ _ \ (⌒O /\ (_ノ \ノ / 、 )0
213 名前:188 mailto:sage [2009/10/10(土) 10:16:15 ] >>196 テストしてみたところ問題なく動きました。 本当にありがとうございます。
214 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 10:51:27 ] >>210 羮に懲りて膾を吹く。 アプリ終了前にfreeしまくるがごとし。
215 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 12:23:40 ] >>197 >>196 を擁護すればSetした方が速いんだよ。 まぁCellsは遅いから、速くしたければ配列だろうけどね。 それからわざわざシート参照の変数をSet 変数 = Nothingとする必要はねーよ。 そんなこと気にするやつは、他にもっと気にすべきことが抜けてる場合がほとんどだ。
216 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 12:55:55 ] >>196 の >S2.Cells(R_dest, 1) = .Cells(r, c) >S2.Cells(R_dest, 2) = .Cells(r, c + 1) >S2.Cells(R_dest, 3) = .Cells(r, c + 2) この部分は S2.Cells(R_dest, 1).Resize(,3).Value= .Cells(r, c).Resize(,3).Value と1行で書けそうだな。
217 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 13:10:30 ] オブジェクトがデカいと メモリが少ないようなマシンで set=nothingしないとその後辛くないかな 何もないなら必要ないだろうけど。 試して言っている訳ではないです。
218 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 16:16:35 ] プログラマはsetした後nothingしないなんていわない
219 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 19:06:03 ] >>217 Worksheet型のオブジェクト変数はシートを作ってるわけじゃない。 ワークシートへの参照への参照だ。 メモリは32ビットCPUで4バイトだ。 マクロが終了すりゃちゃんと参照カウンタは0になる。 Set ** = Nothingを書くのを否定はしないが、書くのがあたりまえって意見は否定する。
220 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 20:02:13 ] 書くことを習慣づけろ
221 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:15:43 ] いらないものを書くやつは馬鹿じゃね?
222 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:18:02 ] これを習慣づけろっ!て言うことが 礼儀と呼ばれるんだろね 質問なんですが 他に礼儀ってどんなものが有りますか?
223 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:19:16 ] >>221 如何に記述量を増やすかがプロなんだよ。 最小限で簡潔になんてアマチュアのやること。
224 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:22:39 ] プロってすごいんだね。
225 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:26:09 ] うるさい、黙ってNothing書け!
226 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:27:51 ] なにこの流れww
227 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:36:46 ] つまり、理由も根拠もないんだが、自分のやりたいことを他人に強制したいときの エクスキューズが「礼儀」ってことだ。
228 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:45:54 ] >>215 普通はSetした方が速いが>>196 は未宣言のVariant型だから速くはならんね。 Nothing云々より変数宣言が大事だな。
229 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:57:25 ] つまりプログラムにおいて礼儀とはK&Rであると
230 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:57:50 ] で、それ百万回実行して何ms違うの?
231 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:59:54 ] >>217 関数抜けたら解放されるんじゃ?
232 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:02:12 ] >230 普通なら宣言しないほうが早い でも場合によってはエラーが引き起こされたりメモリが足りなくなったりする エラー処理するかどうかなんて人それぞれだし、押し付けるようなもんじゃないんじゃないん
233 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:16:56 ] Excel2007 シート上にボタンを2つ貼りつけています。 動作はブックのコピー先をどこにするかだけの違いだけです。 そこでボタンは2つで同じマクロを呼び出し、どのボタンから呼ばれたか によって動作を変えたいのですが、そういう事出来ますか? フォーム上のボタンであれば、 Private Sub btn_A_Click() CopyExec A End Sub Private Sub btn_B_Click() CopyExec B End Sub みたいにそれぞれパラメータを与えて切り替えというのが出来ると思うのですが
234 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:33:54 ] これから速度厨と礼儀厨の熾烈な戦いが始まります。
235 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:39:35 ] >>233 貼りつけているのは、CommandButtonなの? Private Sub CommandButton1_Click() End Sub Private Sub CommandButton2_Click() End Sub てのが出来るどこれとは違うのかな?
236 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:49:17 ] 10usくらいの差なんてどうでもいいよ
237 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:50:35 ] おまえらもういいよムリしなくて 速度とかIndexとかVlookupとかピボットとかNothingとか全部ネタのクセに わかってるからさ!
238 名前:235 mailto:sage [2009/10/10(土) 22:53:23 ] 同じマクロを呼び出したいのね ただ >フォーム上のボタンであれば、 以下の文面では フォーム上でも同じマクロを呼び出してないけど それはいいの?
239 名前:233 mailto:sage [2009/10/10(土) 22:55:20 ] >>235 そうです。CommandButtonです。 それはフォームについてVBEで書く時ではないですか? シート上に貼りつけて、対象マクロを選択する時ってマクロの登録(N)から マクロを選択するけど同じのを選択した時に、どのように区別がつけられるのか? と思いまして質問しています。どうなんでしょうか。
240 名前:デフォルトの名無しさん [2009/10/10(土) 22:56:50 ] >>238 あれは CopyExec というマクロに対して、パラメータとして AまたはBを与えるという意味で 書きました。判りにくくてすいません。
241 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:01:50 ] >>239 Excel2007じゃないんでなんとも言えないけれど 対象ボタンを右くりっくして "コードの表示"をすると シートオブジェクトのコード画面に Private Sub CommandButton1_Click() End Sub とかできない?
242 名前:239 mailto:sage [2009/10/10(土) 23:08:48 ] >>241 ボタンを右クリックして出てくるメニューの一覧が 切り取り コピー 貼りつけ ------ テキストの編集 ------ グループ化 順序 ------ マクロの登録 コントロールの書式設定 でコードの標示というのはここからは出来ないみたいですが
243 名前:241 mailto:sage [2009/10/10(土) 23:12:16 ] >>242 自分のExcel古いせいかメニューが違うようで お力になれませんでした! すみません
244 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:41:15 ] >>242 VBE開いてボタン貼り付けたシートのコードの表示すればいい
245 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:49:31 ] デザインモードになってないだけじゃないの。 デザインモードにしてボタンをダブルクリックでVBEの画面になる。
246 名前:デフォルトの名無しさん [2009/10/11(日) 00:36:01 ] エクセル2007で質問です。 アドインタブのユーザー 設定のツールバーのところにボタン1、ボタン2を作って、 ボタン1を押したら、ボタン1のEnabledをFalse、2をTrue ボタン2を押したら1はTrue、2はFalseに設定したはずですが、 ボタン1を押したあと、ボタン2が押せる状態になっていません。タブを切り替えるとなぜかうまくいくんですが。 2007はこういう仕様なんでしょうか
247 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:43:51 ] またーり行こうぜ
248 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:54:36 ] タブってリボンのことか?
249 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:59:03 ] >>239 同じマクロを呼び出した場合、呼び出し元の区別はつかんだろうな パラメータが指定できるなら そこで区別つけるしかない あと フォーム上でもシート上でも クリックイベントのプロシージャは利用できる
250 名前:239 mailto:sage [2009/10/11(日) 06:55:15 ] >>249 >呼び出し元の区別はつかんだろうな 今回は同じマクロを使う事は諦めます。ありがとうございました。
251 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 07:38:14 ] それActiveXコントロールのボタンじゃなくて、フォームのボタンだよね。 application.callerでボタンのテキストが取得できるから、それで判断。
252 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 08:04:41 ] >>251 MsgBox "呼出し元 " & Application.Caller でシート上のボタンでも呼出し元を判別する事が出来ました。ありがとう!
253 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 10:45:19 ] あー、まだ見てたんだ。よかったよかった。 フォームのボタンに限らず、イベントの発火元は大抵わかるようになってるんだよ。 まぁ、中にはわからにものや、任意のマクロ(イベントハンドラ)を登録できないのもあるけどね。
254 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 11:46:13 ] Private Sub CommandButton1_Click() MacroA pram:=1 End Sub Private Sub CommandButton2_Click() MacroA pram:=2 End Sub こういうのは駄目?
255 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 12:08:38 ] いや、それでいいし、実を言えばフォームのボタンの処理もそうしたほうがいいんだ。 プログラマ的な説明だと、イベントハンドラ内に直接処理を実装すると、凝集度が低くなるから。
256 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 17:21:22 ] >>凝集 臨床検査学以外で初めて聞いたよ。 まさか一般社会で聞く単語とは思ってもいなかった。
257 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 18:01:09 ] ちょっと教えてもらっていいですか? Cellsの使い方について このスレでも時々みかけるんですが a = Sheets("Sheet1").Cells(1,1).Value と a = Sheets("Sheet1").Cells(1,1) は結果的に両方共 A1セルの内容を変数aに代入している事になっているのだけど 前者と後者の違いってあるのですか? 本来は、前者であるべきとは思いますが 後者を使った時の弊害ってなにかあります?
258 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 18:22:07 ] >>257 人によってはデフォルトプロパティを中途半端に省略したソースを汚いと感じることもある。 自分一人で使うだけなら好きにすればいい。 あとは、タイピング量が数回増えるのも人によっては弊害と考えるかもしれない。
259 名前:257 mailto:sage [2009/10/11(日) 18:37:12 ] >>258 結局の所どちらでも結果は一緒なんだから どちらを使ってもいいんですね ソースが綺麗か汚いかはその人の主観なんだから あまり気にしません とは言え 自分自身のソースみて汚いと感じる事があるんで 精進しなくては ありがとうございます
260 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 20:48:33 ] 凝集度と結合度
261 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 23:13:40 ] >>259 また荒れる原因になるかもしれないんだけど、 やっぱりデフォルトプロパティは省略すべきじゃないと思うよ。 range型に代入する時なんか、可読性云々じゃなくて、 後から見て訳が分からなくなる・・・時がある。
262 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 23:36:28 ] 個人的には最初は省略しないで書いた方がいいと思う。 で、覚えたら好きに書けばいいと思う。 覚えていれば省略しても、普通にも書けるが、覚えてないと普通には書けないと思うよ。
263 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 23:59:39 ] 者によっては、特にオブジェクトに大量にアクセスする場合など処理が冗長になることがある 原則的に省略しないほうがいいと俺も思うけど、場面場面で使い分けるべきではある
264 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:00:30 ] C#に移行したいとかVBAが.NETベースになった時の事も考えて、 デフォルトプロパティは省略しない方がいいんじゃないだろうかと言ってみる それならとばかりにWithステートメントを多用すると、 C#で「面倒臭ぇと」ボヤく事になる罠
265 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:09:21 ] それもこれも言語の貧弱さが原因なんだよな
266 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:13:01 ] 単純ミス防止でoption explicit とか書くだろ それと同じで曖昧な表現は極力明確にするほうが良いと思う どこまでが曖昧な表現かは人によるw
267 名前:257 mailto:sage [2009/10/12(月) 01:14:57 ] >>261-266 みなさんありがとうこざいます やはり省略しない方がよさそうですね 確かに単純なプログラムでは問題なくても 複雑なプログラムになるほど後で見て訳分からなくなりそうですもんね でも Itemプロパティぐらいは省略してもいいかなと思ってます(^^
268 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 06:01:17 ] セルの値が数値ならValueじゃなくValue2が普通だから、必然的にプロパティは書くことが多いな。 Itemまで書くとくどいよな。 Worksheets.Item("Sheet1")とかCells.Item(1,1)とかする奴はあまりいないな。
269 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 22:20:08 ] /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
270 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 16:41:04 ] A1A2・・・に単語が並んでいて B1B2・・・にグーグルかヤフーのその単語の検索件数を書き入れていくというような Webクエリは作れないものでしょうか?
271 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 18:09:44 ] >>270 そのままでは件数がクエリで取り出せないので、VBAと組み合わせる必要がある
272 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 18:18:16 ] VBA使ってどうすればよいのでしょうか? ぜひ御教授お願いします。数万の単語の検索に途方にくれています>__<
273 名前:デフォルトの名無しさん [2009/10/13(火) 19:14:30 ] kwsk
274 名前:デフォルトの名無しさん [2009/10/13(火) 19:26:29 ] ヒントだけでも教えてください。 1つのセルに1つの文字列が入っています。 各行はその文字列の集合とします。 その文字が何文字あるのかと、 各行の文字の全組み合わせ(各行の全部分集合)が全体の中で何個あるのか、 その結果を出力したいのですがどうしたらいいでしょうか? 例えば、 A,B,C,D A,B A,B,C A このように各セルに文字が入っていたとすると、 全体の中でAは4個、Bは3個、Cは2個、Dは1個あります。 また、組み合わせの個数は全体の中でそれぞれ、 (A,B)は3個、(A,C)は2個、(A,D)は1個 (B,C)は2個、(B,D)は1個 (C,D)は1個 (A,B,C)は2個、(A,B,D)は1個、(A,C,D)は1個 (B,C,D)は1個 (A,B,C,D)は1個となります。 これは具体的な例ですが、実際は何行何列でも何文字でも対応できるように一般化したいです。 意外と難しくてどうしたらいいかわかりませんでした。 こうすればできるだろうという方針だけでもどなたかご教授お願いします。
275 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 21:11:13 ] A,B,C,D なのに A,C がマッチするのかよ。 Instrで文字列内を検索すりゃ良いんでない? てか、どんだけの文字数があるのかさっぱりわからん。 無数にある文字種類から検索するとなったら酷い事になりそうだ。 使われてる文字の一覧を作って、それを検索して行くのが良いかもな。 文字種類は無限です。って言うなら、俺は降りる。
276 名前:デフォルトの名無しさん [2009/10/13(火) 21:53:11 ] >>275 わかりにくい説明で本当すいません。 「A,B,C,D」は1つの文字列ではありません。1つのセルに1つの文字が入っています。 コンマの区切りでセルを表したつもりでした。 「A,B,C,D」の、AはRange("A1")、BはRange("B1")、CはRange("C1")、DはRange("D1") とに入っています。 実際はAとかBでなく、りんごとかバナナみたいな1つの単語が1つのセルに入ることになりますが。 (A,C)は(りんご、バナナ)という組み合わせだと考えていただけたらわかりやすいかと思います。 使われる単語は無限ではありません。 それでも仰るとおり数が増えれば酷いことにはなりますが、 そこはまた別問題で解決する算段はあります。 (りんご、バナナ)という組み合わせが全体に何個あるか?という話なんです。 わかりにくい説明ですいませんが。 VBAで、ある集合の部分集合を全て列挙するやり方だけでもどなたか ご教示してくださいませんか? 一応自分でも調べてみましたがわかりませんでした。
277 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:05:47 ] >>274 ヒント モリケン
278 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:12:31 ] >276 275氏も書いてるがInStrでOK。 にしても説明ヘタだな、君は。
279 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:29:15 ] 人に判り易く自分のやりたい事を説明するっつーのも訓練が必要っすよ。 w 他人には(特に掲示板なんかでは)質問者のレベル・環境、そして何をどうしたいのかなんて判らないのだから。 (ここはExcel VBAスレだから或る程度は限定されてるけど)
280 名前:デフォルトの名無しさん [2009/10/13(火) 22:33:33 ] >>275-279 すいませんがんばってみます。 サンプルでもうpすればわかりやすかったかも・
281 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 23:35:10 ] 1列に必ず同じ文字が入るなら簡単だろ。 この場合は4文字だから、組み合わせは 4C4=1 4C3=4 4C2=6 の11種類しかない。 組み合わせの形がわかるから、その組み合わせを順に行毎にループすりゃいい。
282 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 10:28:23 ] 270です。 VBAはかなりいろいろできるようになったのですが、ネットにつなぐスクリプトは 挑んだことがありません。またどうやってヤフーやゴーグルのデータを取り込んで 加工するかがわかりません。 一単語ごとに検索して検索数をコピペする作業は300ぐらいこなすとぐったりです。 どうすれば自動化したいのです・・・
283 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:04:49 ] まずは日本語でどうぞ。 >1 ★5
284 名前:283 mailto:sage [2009/10/14(水) 11:06:50 ] >2 ★5 だった;;
285 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:09:03 ] データ→Webクエリ(で対象のアドレスを入れて)でシートに取り込むのをマクロで記録すればOK ただし、こっからが問題ありでヤフーやらぐーぐる(だろ?w)が仕様変更でレイアウトなどを変更したら、それに合わせて 修正必須になる
286 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:13:47 ] >>282 とりあえずヒントだけ。(環境依存な部分があるので、このままじゃ動かない) Sub 件数取得() kw = "ぬるぽ ガッ" Set ObjHttp = CreateObject("Microsoft.XMLHTTP") ObjHttp.Open "GET", "www.google.co.jp/search?hl=ja&q= " & kw, False ObjHttp.Send src = StrConv(ObjHttp.responseBody, vbUnicode) Set ObjHttp = Nothing src = Mid(src, InStr(InStr(src, "id=resultStats") + 24, src, "<b>") + 3) src = Left(src, InStr(src, "</b>") - 1) Debug.Print "「"; kw; "」のヒット件数="; src End Sub
287 名前:デフォルトの名無しさん [2009/10/14(水) 12:34:58 ] 質問させてください。(Ecel2003) 複数のセルをcsv形式で文字列変数に格納したいのですが、 Webで探したら1セル+","を繰り返す方法しか見つかりません でした。 実際試して見ましたが対象セルが数万あるので処理に非常 に時間が掛かっております。 Joinなどを利用して一括で行うなど、高速化の手段は無い のでしょうか? (対象セルは矩形で表現できます) ちなみに最終目的は複数のBookのある範囲のセル値を1つ のcsvファイルにまとめることです。 よろしくお願いします。
288 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 12:41:09 ] >>287 あくまでも想像だけど、時間がかかっているのは、たぶんセルの内容を1つずつ読み出してるから。 配列に一気に読み込んでから処理すれば、もっと速くなるはず。
289 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 13:01:44 ] >>287 Join関数は一次元配列しか指定できないから、二次元から一次元への変換部分だけは 自分で工夫して作るしかない。
290 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 13:11:04 ] >>288 違うと思うよ。 単純に連結すりゃだんだんサイズが大きくなってメモリに入りきれなくなり別のメモリ領域をしょっちゅう探して確保しなきゃならないから時間がかかるんだ。 昔は必要なサイズの文字列を用意しておいてMidステートメント(関数じゃない)ではめ込んでいくのが常道だったが、今はJoin関数があるから楽だな。
291 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:21:33 ] >>286 神様ありがとうございます。 どういうふうな勉強をされたのでしょうか。ネットワーク関係のお仕事など されているのでしょうか。参考になる本などを教えていただけるとうれしいです☆ ありがとうございます。
292 名前:287 mailto:sage [2009/10/14(水) 14:26:52 ] 回答ありがとうございました。 一次元に変換してJoinでやってみます。
293 名前:287 mailto:sage [2009/10/14(水) 15:53:51 ] 度々すみません。 追加で質問させてください。 先の件は一次元にしたら体感で数十倍以上早くなりました。 ありがとうございました。 文字列変数に格納したデータをcsv形式で保存すると、期待した 結果が""で囲われたcsvファイルが出来上がりました。 (以下サンプル) "1,2,3,4,5, 1,2,3,4,5, " この先頭/末尾の「"」を入れたくないのですがどうすれば良い のでしょうか?
294 名前:287 mailto:sage [2009/10/14(水) 16:26:40 ] 自己解決。 出力をWriteで行っておりましたがPrintに変えたら希望通りとなりました。 違いがよっく分かりませんが解決しましたのでご報告します。 ありがとうございました。
295 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 16:27:54 ] >>293 csv形式で保存するんじゃなくて、テキストファイルに出力する
296 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:05:17 ] 動的配列について質問なのですが googleで検索などしたところ Dim aaa() as string など()のみで宣言したアトに ReDim aaa(0 to 10) のように範囲を指定して使う。みたいな例しか検索できませんでした しかし、範囲を指定して使うならそれはすでに動的ではなく静的じゃないか とずっと頭を抱えているのですが 要素数不明の配列を扱うことは無理なのでしょうか? 配列にデータを入れる際に、データ数カウントしながら入れて その後ReDimすりゃいいってことですかね??
297 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:10:03 ] と思ったら、データを入れる段階で「インデックスが範囲外」的なエラーでましたorz 入れる前に範囲決めろとか無茶なんですが・・・そういうのはvbaじゃ無理ですかね?
298 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:17:59 ] >>296 あとから何度でもサイズを変更できるというのも一種の動的。 >>297 インデックス値を変数に入れておき、データを入れる前に、そのインデックス値を使って 配列をどんどん拡張していけばいい。 ただしReDimを使うと配列の中身がクリアされてしまうので データを保持したままサイズを変更するにはReDim Preserveを使う必要がある。 VBAでは一般的なテクニック。
299 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:20:39 ] >>286 繰り返し処理をしていたら400ほどでデータがなくなりました。 ブラウザでグーグルを見ると、あなたは拒絶しますのような画面が出てグーグル 使えなくなりました・・・ どうすれば・・・・・
300 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:23:17 ] We're sorry...
301 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:25:33 ] >>299 しばらく待つ
302 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:29:09 ] >>299 そのサンプルはOpenでコネクションが開きっぱなしだから、まずは1回ごとにCloseしてみ あとは、まあ連続アクセスは避けるとか。たとえば10秒間隔でアクセスするよう修正してみる
303 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:46:57 ] Google にクエリを送信すること をしてはいけないということです・・・ 世界のグーグルを怒らせてしまって・・・
304 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 18:10:25 ] We're sorry... ... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now. See Google Help for more information.
305 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 18:48:06 ] >>298 アドバイスありがとうございます 要素数をuboundで数えて、残り少なくなったら配列を拡張するという方法をとってみました とりあえずはこれでなんとかなりそうです
306 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:45:51 ] >>305 そんなファジーな使い方をw かっちりと要素数取得すれば良いんじゃないか?
307 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:12:46 ] >>299 別に質問でも回答でもないんだけど・・・ グーグルをそういう使い方したらいけないというのがわかって為になったわ
308 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 03:17:58 ] ボクも、>>286 のプログラムを使ってみた。 kabutomo.net/img.php?filename=dc_740000_1_1255544121.png
309 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 08:30:17 ] 299です。 復旧しました。復旧にはゆがんだ画像の絵のなかの文字を入力 させる画面が二回出てきて、復旧。その後、何回かグーグルを 普通に利用したところ、またゆがんだ絵の文字を入れろと・・・ すっかりブラックリストに載ってしまったみたいです・・・・・ 英語グーグルにアクセスしても同じことで、違うのは、 送信ボタンが、I'm human と書いてあるところでした・・・ かなりこわい経験でした。400か500連続で、ストップというところ でしょうか。気をつけてください。 それにしてもあなたはグーグルとのこの契約を知っているでしょう とは・・・・
310 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 08:59:36 ] やはりあなたは検索しすぎです ばいばいおさるさんw
311 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 11:06:57 ] >>309 ここから先はネットサービス板あたりの領域かな。 Googleの検索は1時間あたり何回までが限界とかそういうのをきちんと調査した上で、 それを越えないようなプログラムを工夫して作ることになる。
312 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 11:30:00 ] ありがとうございます。頼っていたサービスなので非常に怖い思いをしました。 なんか世界から拒絶されたような・・・ 手で作業するよりも早ければそれでいいです。一分に5つぐらいのペースのを つくってみます。一月ほど休むことにします。 プログラマー向けのページには一日5000までとは書いてあったのですが・・・ ヤフーは5万までみたいです。
313 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:03:54 ] 外部にproxy用意して色んなIPから接続してやるのが定番
314 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:11:35 ] 外部にボットを用意して色んなPCから接続してやるのはどうでしょうか。
315 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:41:52 ] ボットってか もう googleを攻撃しないであげて
316 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 13:47:02 ] なるほど良く考えたらスクリプトアタックか
317 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 14:58:17 ] OS:XP EXCEL2003、2007にて Ctrl+6 や Ctrl+7といった数字のショートカットキー を禁止にする方法はありませんでしょうか? 検索しても回答がなく、OnKeyでも拾えないので 困っています。
318 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 18:03:21 ] VBAとどのような関係が?
319 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:53:16 ] >>318 VBAでそのキーを押した際の処理を無効化したいんでしょ。
320 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 21:27:48 ] フックは簡単にできるでしょ。 と思いやってみたが本当に拾えないな。 APIにあったと思うけど、スレ的にどうなんだろ。
321 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:20:20 ] カーネルに入ってなかったっけか。
322 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:23:40 ] 結構前まではAPIの話題が出ただけで拒否反応する人はいたな ライブラリ参照したりAPI使うのはエクセルVBAの構築手段として十分範囲内だと思うけど API自体の話でもなければ
323 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:30:41 ] グーグルって自分ではロボットつかいまくってるのに自分には使わないでというのは やっぱりおかしいわ
324 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 15:39:10 ] >>323
325 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 16:25:15 ] XP SP3 EXCEL2002 現在、クライアントPCのファイルをデスクトップ上にあるイントラネットショートカットアイコンに ドラッグアンドドロップでファイルをアップロードしているのですが、 クライアントPCのファイルをイントラネットにアップロードする事はVBAで処理可能でしょうか?
326 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 17:57:05 ] VBAでTCP/IPって話は難しいとおもうが VBAでイントラネットショートカットアイコンにドラッグアンドドロップ相当の 作業を行うのは幾分は簡単かと思う
327 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 20:17:36 ] >325 ショートカットアイコンは 何処へのどんなショートカットなの? サーバとかの共有フォルダへのショートカットなら VBA使わなくてもって気もするが あえてVBAなら FileCopy すればいいだけのような気がするのだけど そのへんどうなの?
328 名前:デフォルトの名無しさん [2009/10/16(金) 20:48:18 ] 質問させてください。 Excel2003ですが、任意の文字列を配列の中から検索して インデックス番号を返すような処理はどのように行うのでしょう か? 任意の文字列は必ず配列の中に完全一致で存在します。 また配列内に重複する文字列はありません。 myArray(0)="あああ" myArray(1)="いいい" myArray(2)="ううう" myArray(3)="えええ" myArray(4)="おおお" の場合、"ううう"をキーにすれば2を求めたいのですが、配列 を回して比較する程度しか思いつきません。 Findメソッドなどで実現できないでしょうか? よろしくお願いします。
329 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 21:38:56 ] >>328 残念ながらVBAだけで一発で検索する方法はない。 検索を第一に考えるなら、2次元配列にデータを入れておき、 必要に応じてワークシートに転送してからワークシート関数で検索するという方法がある。 文字列の長さがすべて一定ならJoinで1つの文字列にまとめてから位置を調べるという手もある。
330 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 21:41:08 ] >>328 目的によってはDictionaryオブジェクトが使える場合もある
331 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 21:49:56 ] System.Collections.ArrayList
332 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 22:03:32 ] 配列がとても大きくて順次比較していては時間がかかるって言う事なら 配列のキーの部分が 昇順または降順でソートされているという条件で 古典的なバイナリサーチ手法を使えぱ時間は短縮できる
333 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 22:08:25 ] ハイルデータが固定で数が多くないとか、なら連想配列だろうなあ データ入力時に連想セットできたりするかね
334 名前:328 mailto:sage [2009/10/16(金) 22:37:34 ] 回答ありがとうございます。 フォルダ内にYYMMDD.xlsというファイルが複数あり、それをソートして 格納してある配列があります。 コンボボックスから2つのファイルを選択したらその期間内のファイルに 対して処理を行うことが目的です。 インデックス番号を取得してFor〜Nextの初期値と最終値にしたか ったので質問させていただきました。 対象ファイル数は100以下です。 後のメンテを考え、素直に全数比較して新たな配列に格納する 方法で対応してみます。 ありがとうございました。
335 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 08:07:18 ] >>334 要素数が65536以下ならWorksheetFunction.Matchが使える。 この関数でバイナリサーチも出来るが、要素数が65536も超える場合も考慮するなら自前の関数書いた方がいいな。 要素数がたった100以下ならバイナリサーチじゃなくても無問題だけどな。
336 名前:325 mailto:sage [2009/10/17(土) 10:22:18 ] >>326 D&D相当の作業、是非教えて頂きたいです。 >>327 ショートカットアイコンは通常のフォルダアイコンに地球の絵が描かれています。 FileCopyで試すと「パス名が無効です」 FS.CopyFileで試すと「ネットワークパス見つかりません」とエラーが出ます。 パス名は"\\サーバ名\フォルダ"」と間違いないと思うのですが・・・・
337 名前:327 mailto:sage [2009/10/17(土) 11:16:11 ] >>336 「パス名が無効です」 だと共有フォルダ名が間違っている可能性があるけど 確認した? エクスプローラでそのサーバーが見えるなら パス名確認した方が良いかも FileCopyは FileCopy "c:\temp\test.txt", "\\サーバ名\共有フォルダ名\test.txt FileCopy "c:\temp\test.txt", "\\サーバ名\共有フォルダ名\フォルダ名\test.txt とかでいいはすなんだけど サーバー系は、ここ数年やってないんで最新バージョンなんかで仕様が変わっていたら お手上げですが....
338 名前:337 mailto:sage [2009/10/17(土) 11:19:58 ] あっチョット訂正 FileCopyの構文で 最後の " が抜けてた FileCopy "c:\temp\test.txt", "\\サーバ名\共有フォルダ名\test.txt" FileCopy "c:\temp\test.txt", "\\サーバ名\共有フォルダ名\フォルダ名\test.txt" です 失礼しました (^^汗
339 名前:325 mailto:sage [2009/10/17(土) 14:59:31 ] >>337-338 パス名は何回も確認しました。プロパティーからコピペしたので間違えてないはずなんですが。 エクスプローラーのプロパティではパス名「http://サーバ名/フォルダ名」なんで、 「http:」外して/を\に変えたんですけど、根本的に間違ってるんでしょうか。 あと、補足ですがサーバはSharePointのワークグループです。
340 名前:327 mailto:sage [2009/10/17(土) 15:16:03 ] >>339 プロトコルがhttpなら >>337 の方法は使えないね
341 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 17:01:58 ] createobject("shell.application").namespace("http://サーバ名/フォルダ名").copyhere "c:\temp\test.txt"
342 名前:325 mailto:sage [2009/10/17(土) 17:12:19 ] >>340 やっぱそうなんですね。 xlsやSLK形式のデータはVBAで上書き保存出来たので、試行錯誤してみたんですが残念です。 >>341 ありがとうございます。試してみた所エラーは出ませんでしたが、コピー出来ていませんでした。 どこか違う所にコピーされたんでしょうかね(゚ー゚;Aアセアセ
343 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 17:35:43 ] CreateObject("WScript.Network").MapNetworkDrive "Z:", "http://サーバ名/フォルダ名" FileCopy "c:\temp\test.txt", "z:\test.txt"
344 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 17:43:22 ] >>341 非同期なのかも msgbox "ちょいと待つ"
345 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 17:50:48 ] >>339 sharepointはブラウザ上でみるとhttp://〜のリンクだけど、実際はWEBDAVでやりとりしてるよ。 http://〜のアドレスをコピペして、新しいブラウザに入力してファイルを開いてみ? 読み取り専用になるから。 対して、\\鯖名\〜だと読み書きできる。 「webdav vba」 で検索すると幸せになれるかも
346 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:54:53 ] excel2007です vbaに登録されている(?)errの一覧を知る方法は無いでしょうか? ループ内でロジックエラーが発生した時にerrに数値を設定してexitさせようと思ってるのですけど その時にExcelに既に定義されているのとぶつかったら不味いかなと思いまして。
347 名前:346 mailto:sage [2009/10/18(日) 12:04:34 ] 自己解決 Raise メソッドに Visual Basic のエラー (Visual Basic の組み込みのエラーとユーザー定義エラー) は、0 〜 65535 の範囲の値です。0 〜 512 の値はシステム エラー用に予約されてい るため、ユーザー定義のエラーに使用できるのは、513 〜 65535 の範囲の値です。 クラス モジュール内で独自のエラー番号を設定するときには、エラー番号を定数 vbObjectError に追加します。たとえば、エラー番号 1050 を発生させるには、名前 付き引数 Number に vbObjectError + 513 を割り当てます。 とありました。スレ汚しすんません
348 名前:デフォルトの名無しさん [2009/10/18(日) 21:13:43 ] VBA初めて作る初心者です。 土日をほぼ丸で使っても解決できませんでした。誰か助けてください。もしくは土日を返してくれ・・・。 目的 あるURLをIEで開き、全てを選択してエクセルに貼り付ける。 Sub ie_test_ExecWB() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "google.com " Do While objIE.Busy = True DoEvents Loop objIE.SendKeys "^a" objIE.SendKeys "^c" Range("A1").Select ActiveSheet.PasteSpecial Format:="HTML" End Sub 実行すると、 実行時エラー’-2147417848(80010108)':オートメーションエラーです。 起動されたオブジェクトはクライアントから切断されました。 と表示されます。 objIE.SendKeys "^a"objIE.SendKeys "^c" ではなく、objIE.ExecWB 17, 0 objIE.ExecWB 12, 0でもダメでした。
349 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 21:33:33 ] ほれ土日だよ
350 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 21:36:25 ] >>348 IEオブジェクトに SendKeys メソッドはないんじゃないの? そんなことをしなくても、指定のページが開いたら objIE.document.body.innerText とすることで現在表示中のページのテキストを文字列として取得できる
351 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 21:44:59 ] メッセージからすると Do While objIE.Busy = True でエラーになってて開けないんだろ
352 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:03:22 ] >>348 ほい Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long) As Long Sub ie_test_ExecWB() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "google.com " Do While objIE.Busy = True DoEvents Loop If SetForegroundWindow(objIE.hWnd) Then SendKeys "+{TAB}^a^c", True End If Set objIE = Nothing Range("A1").Select ActiveSheet.PasteSpecial Format:="HTML" End Sub
353 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:03:35 ] >>348 ではあなたの月火をわたしにください そうすればあなたに土日をさしあげましょう
354 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:17:16 ] 月火だよー 火憐だぜ
355 名前:348 [2009/10/18(日) 22:21:19 ] >>350 ~352 神々・・・! ありがとうございます。 現在>>352 様が提供してくださったコードで試していますがうまくいきません。 実行するとクリップボードにあるものがA1に貼り付けられてしまいます。 IEが起動するときに、googleのサイトと空のIEが二つ起動してしまうのですが これが原因なのでしょうか? ちなみにVISTA,IE7,officeXPという環境です。 >>353 わかりました。 私のカレンダーから月火を捕まえる為の縄を下さい。
356 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:21:22 ] >>352 >ほい だってw
357 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:22:58 ] 保護モード Navigateでぐぐれ
358 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:33:05 ] >>355 わざと後出ししたな
359 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:41:16 ] Webクエリをマクロで記録は気に食わないのか? Sub Macro1() With ActiveSheet.QueryTables.Add(Connection:="URL;www.google.co.jp ", _ Destination:=Range("$A$1")) .Name = "www.google.co.jp" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=False End With End Sub
360 名前:348 [2009/10/18(日) 22:41:33 ] >>356 だめか? >>357 保護モードを解除したがだめです。 >>358 すまん
361 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:45:47 ] webbrowserコンポーネント使えば?
362 名前:348 [2009/10/18(日) 22:48:17 ] 金曜日の夜からVBAを触り始めまして、WEBクエリという単語は何度か目にしましたが スルーしてました。 これだとテキスト形式での貼り付けになってしまいますね? ページを丸ごとコピーして(HTML、画像も)貼り付けたいのです。 できるのかな?ちょっとクエリについて勉強してみます。 残り73分で!
363 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:03:06 ] OSとIEのバージョンを後出しされてしまったでござるの巻
364 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:06:24 ] > ちなみにVISTA,IE7,officeXPという環境です。 正直言おう その環境を再現して動作確認するのが面倒
365 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:11:07 ] VistaにIE7にOfficeXPって、わざといらない子ばかり集めて何してんの?何かの罰ゲーム?
366 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:17:04 ] Webクエリで画像まで取り込む方法ってあったっけ?
367 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:24:31 ] >>348 VBA初めて作る初心者です 初めてでIEからデータ取得なんてできるわけないし、 ここにソースを貼ってもらっても使いこなせるわけ無い むだ
368 名前:348 [2009/10/19(月) 00:29:41 ] できた。 みんなありがとう
369 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 00:32:13 ] シートにwebbrowser貼れば?
370 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 00:59:37 ] >>368 できたら何がダメだったか原因書こうな たとえショボミスでも、だ 同じ質問がきたときウザいだろ
371 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 02:03:39 ] VBA使いの皆様へ VBAとExcelは余り相性が良くありません。 VBAをExcelの上で使うとVBAもExcelも下手になることが 多いです。Excelを使う場合は、出来る限りVBAを使わず シートの上の数式だけでなんとか出来ないか先ず考えま しょう。 Excelで本格的な大量計算を行うのは向いていません。 Excelは概して計算が早く無いからです。 VBAを学びたいというのであればAccessのほうが がおすすめです。
372 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 04:51:58 ] hagedo
373 名前:325 mailto:sage [2009/10/19(月) 12:55:44 ] >>343 ネットワークドライブの割り当てもやってみたんですが、「ネットワーク名がみつかりません」になってしまうんです。 >>341 やってみましたが、結果は変わらずでした。ありがとうございます。 >>342 オフコン系SEなのでWEBDAVとは初耳でした、ありがとうございます。色々調べてみます。 ちなみに新しいブラウザにURL入力しファイルを開いてもhttp://〜のままでした。
374 名前:デフォルトの名無しさん [2009/10/19(月) 13:33:05 ] >>371 WorksheetFunction使えばいいやん
375 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 13:47:51 ] userformを見えなくするのに unload meと userform1.hide が有りますけど(他にもあるのか知りませんが)、この違いって何ですか?
376 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 14:33:00 ] >>375 hideは見えなくなるだけでまた復活させることができる。例えばテキストボックスの中身とかそのまま残ってる。 unloadは完全に消去
377 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 16:21:50 ] >>375 簡単に言うとUnloadはメモリから削除してしまう。 hideは字の如くメモリに残したまま見えなくするだけ。
378 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 17:22:44 ] >>376-377 ありがとです。 後で再利用するなら hide もう要らないなら unload ですね。
379 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 17:47:45 ] unload 378
380 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 18:28:22 ] >>379 379.visible = false
381 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 19:12:37 ] ユーザーフォームを印刷しようと思ってるのですが、ユーザーフォーム自体のサイズが大きいのでA4のサイズに納まらずはみ出てしまいます… A4サイズに縮小して印刷する方法はないでしょうか? コードはシンプルに userform1.printform だけです。 かなりググッたりしてみましたが、良いホムペもなかったので…
382 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 19:37:40 ] >>373 いやだからhttp://でアクセスできるんだけど読み取りになるんだよ。 それはhttpプロトコルの制約だから。 http://を\\サーバIPにして後ろの/を全て\になおしてみて。
383 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 19:43:01 ] >>381 縮小印刷はプリンタドライバの仕事。機種依存になるので自力で試行錯誤が必要
384 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 20:33:33 ] excel2007 リストボックスに3列データを入れる事が出来るようになったとこなんですけど (1) これタイトルみたいなのを付ける事は出来ないんですか? コード 商品名 支店 ←付けたいタイトル 9999 xxxxxxxxx xxxxxxx ←データ みたいな感じで。 (2) code=Userform1..ListBox1.Text で選択したコードを拾う事は出来たんですが、この例で商品名を拾うにはどのようにすれば良いのですか?
385 名前:デフォルトの名無しさん [2009/10/19(月) 21:22:18 ] 【1 OSの種類 】 Windows XP SP2 【2 Excelのバージョン】 Excel2000 【3 VBAが使えるか 】 4日目 勉強中 【4 VBAでの回答の可否】 可 まだひよっこちゃんですが皆さんよろしくお願います。 マクロの勉強兼ね、エクセルでTOEICの単語帳を作ろうと思っています。 形としましては、 英単語および日本語訳をシートのA、B列に羅列し、 ユーザーフォームで、 英単語用のテキストBOX1、コマンドボタン1、 日本語用のテキストBOX2、コマンドボタン2 暗記済みのチェックボックスが3つ という構成で、 コマンドボタン1を押すとランダムで英単語が選択され、テキストボックス1に表示 その状態でコマンドボタン2を押すとその訳がテキストボックス2に表示され、 暗記済みの時はチェックボックスにチェックをつけ、3つたまるとその単語は二度と出てこないようにしようと思います。 また、再度ファイルを開いても単語ごとに同じ状態が保存されているようにしたいと思います。 単語数が600あるという設定で、以下のように作ってみましたが、日本語訳表示の時点で詰まってしまいました。
386 名前:385 [2009/10/19(月) 21:24:01 ] Private Sub UserForm_Click() End Sub Private Sub UserForm_Initialize() End Sub Private Sub CommandButton1_Click() Dim intmax As Integer Dim intmin As Integer intmax = 600 intmin = 1 TextBox1.Value = Cells(Int((intmax - intmin + 1) * Rnd + intmin), 1) End Sub Private Sub CommandButton2_Click() TextBox2.Value = TextBox1.Value.Offset(0, 1) End Sub CommandButton2 の TextBox2.Value = TextBox1.Value.Offset(0, 1)なんかは 明らかにおかしいかと思いますが、テキストボックス1に表示した、英単語をどのように返せばいいのでしょうか。 Cells(Int((intmax - intmin + 1) * Rnd + intmin), 1)を再度使うと、新たなランダム値を取得してしまうのですしょうか? かなり初歩的かもしれませんが、紙にプリントしてさっさと単語覚えた方が早いんじゃないかと、焦ってきましたもんで でも何とか完成させたいので、どなたか以下のいずれでもいいのでご教授ください。 ・ランダム値が同じ順序ではなく、常に変化する方法 ・チェックが各英単語ごとに反映させる方法 ・そのチェックがファイルを閉じても保存される方法 ・3回チェック済みの英単語を非表示にする方法(削除ではなく) よろしくお願いします
387 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 21:56:18 ] >>385 ・ Cellsを使う時は、シートを指定したほうが良い ・テキストボックス2に日本語訳を返す為に 英単語を表示する時に使用したセルの行位置を保存しておく →モジュールレベル変数を利用する つー事で下記はいかが? Private mRow As Integer Private Sub CommandButton1_Click() Dim intmax As Integer Dim intmin As Integer intmax = 9 intmin = 1 mRow = Int((intmax - intmin + 1) * Rnd + intmin) TextBox1.Value = Worksheets("sheet1").Cells(mRow, 1).Value End Sub Private Sub CommandButton2_Click() TextBox2.Value = Worksheets("sheet1").Cells(mRow, 2).Value End Sub
388 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:07:56 ] 今まで快適に使えていたエクセルファイルが、 突然アホみたいに重くなって起動が容易じゃない。 色々調べたけどさっぱり解らない…。 誰か助けてください。 ・サイズは600KBほど ・隠れてるオブジェクト無し ・使用範囲以外に隠れデータ一切無し (書式設定やリンクなど) ・シート30枚ほど ・モジュールの解放もやってみたが改善せず
389 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:13:45 ] 特定ファイルだけ? ハードディスクが死にかけてるとか
390 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:18:01 ] ウィルスチェックoffにして開いてみれ
391 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:19:53 ] 他のファイルのシートと連動させてるようなのだと ファイルの置き場所変わっただけで リンク先行方不明連発で死亡とかあるから Excelきらい
392 名前:388 mailto:sage [2009/10/19(月) 22:54:19 ] >389 特定ファイルだけです。 会社で作成したデータ集計用のファイルです。 これ1つだけが異常に重くなり、開く時に CPU100%を食う状況になっています。 >390 ウィルスチェックoffにすることは出来ないです。 会社で常にネットワーク接続されてるもので…。
393 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:22:01 ] >>388 ここは Excel VBAスレなんでスレ的に考えると VBAの処理が 異常に時間がかかってるのでは? 原因として ・VBAのコードを変更した為に 異常なループが発生した ・元々のVBAのコードにバグがあって あるデータの組み合わせで 異常なループとなった とか? だとすれば とりあえずオープン時実行するイベント処理停めてみたら? イベントプロシージャの先頭に Exit Sub を入れてみる
394 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:31:32 ] >>392 ローカルにコピって スタンドアロンのPCでテスト汁 さらにウィルスチェックoffにして開いてみれ
395 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:46:05 ] >>392 xlbファイルを削除する。 CドライブをExcel*.xlbで検索してみて。
396 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:58:33 ] >>391 そんな使い方しないよ。
397 名前:385 [2009/10/20(火) 00:54:42 ] 387さんありがとうございます。 値を保存するという便利な方法があったんですね。 勉強になります。おかげさまで単語帳っぽくなりました。 残りのチェックボックスにかかわる部分ですが、もう少し努力してみます。 ただ ・チェックを各英単語ごとに反映させる方法 ・3回チェック済みの英単語を非表示にする方法(削除ではなく) これらがどうにもできそうにないです… すんません チェックボックスにチェック入れた単語のどこかの列に、何かしら数字など加え その値を返して、状態を判断することしか思いつかないのですが、 何かもっと良い方法ありますかね?
398 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 01:21:27 ] とりあえず出来る方法を思いついたなら、それでやればいい その方法だとこんな問題がある、とかならそれを質問すればいい もっと良い方法とか漠然と聞かれると速度房がアップ始めるぞ
399 名前:384 mailto:sage [2009/10/20(火) 08:16:29 ] 自己解決 (1) これタイトルみたいなのを付ける事は出来ないんですか? フォームのリストボックスの上方にラベルを配置し、それをタイトルとするように しました。 (2)code=Userform1..ListBox1.Text で選択したコードを拾う事は出来たんですが、 この例で商品名を拾うにはどのようにすれば良いのですか? Dim n As Integer n=UserForm1.Listbox1.ListIndex xxx = ListBox1.List(n,0) yyy = ListBox1.List(n,1) zzz = ListBox1.List(n,2) 以上、スレ汚しでした
400 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 10:28:27 ] あらあらこんなに汚しちゃうなんて……イヤラシイ子ね……フフフ
401 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 12:38:07 ] ここに速度厨なんている? 俺は速度より美しいか汚いかにこだわるが、たまに速度厨と勘違いされる。 汚いのは遅いって大体決まってるけどな。 そこの君、お前だよw
402 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 19:25:43 ] >>385 完成したらサンプル見せてください。お願いします。
403 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:14:22 ] VBA勉強中の初心者です。 セルA1〜A10まで100 A11に1 この状態で1がある行番号を手に入れたいんですが 結果は2です。 どうやったら11を入手出来るんでしょうか? Dim rng As Range Set rng = ActiveSheet.Range("A1:A11").Find(1) A = rng.Address B = Rows(A)
404 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:21:06 ] >>401 誰を煽ってるんだよw 唐突過ぎてわろたわ
405 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:49:07 ] >>403 100 という文字列での 1の部分でヒットしているみたいね とりあえず下記ではどう? Set rng = ActiveSheet.Range("A1:A11").Find(1, LookAt:=xlWhole)
406 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:56:20 ] Find関数はいろいろとバグがある。
407 名前:405 mailto:sage [2009/10/20(火) 22:08:06 ] >>406 たしかに今回の場合だと セルの表示形式を数値にすると ヒットしなくなるね
408 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:09:02 ] たしかにオートフィルタとかのVBAの使い勝手がいい
409 名前:392 mailto:sage [2009/10/20(火) 22:43:00 ] 解決しました。 tmpファイルを全て削除してみたところ、 かなり軽減されましたがまだ反応が鈍かったため、 思い切って新規エクセルに全て コピーしてみました。 結果、快適に動くようになりました。 おまけにサイズも400kbまで小さくなりました。
410 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:57:36 ] >405 有難うございます。 明日になってしまいますけど、試してみます。 上手くいったら、その時に LookAt:=xlWhole の意味を理解したく教えて下さい。
411 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:29:44 ] 特定の文字列にヒットする条件ならワークシート関数が強力だが 勉強しはじめなら、セルを一個一個確認してループさせる手法からハイルべき 特にエクセルVBAなら
412 名前:405 mailto:sage [2009/10/20(火) 23:37:10 ] >>410 & 411 >>411 の意見には賛成です 今回の場合は特に >>410 の質問の回答ですが Findは Excel本体の検索とほぼ同じものです マクロの記録をいろいろしてみると分かると思いますが "完全に同一のセルだけを検索する"です それと>>407 へ書いたけど セルの表示形式が数値だと失敗するかもです 一応 標準形式だとうまく検索できたのだけど
413 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 07:11:50 ] Findメソッドは基本的に文字列を検索するもんだ。 まさか数値を検索してバグがあるなんて言ってるんじゃねーだろうな。
414 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 13:53:11 ] ちょっと暇なときにVBA勉強しようと思うんですが、勉強するなら2003と2007どっちがいいですか?
415 名前:325 mailto:sage [2009/10/21(水) 15:09:21 ] >>382 ありがとうございます。勘違いしてました・・・・ しかし、\\サーバIPにしてもだめでした。 Sub COPY_SAMPLE() Dim objShell Dim objFolder Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.NameSpace("\\サーバ名\フォルダ名1\フォルダ名2") If (Not objFolder Is Nothing) Then objFolder.CopyHere "c:\TEST.txt" Else MsgBox "Nothing" End If Set objFolder = Nothing Set objShell = Nothing End Sub Nothingのメッセージボックスが出ます・・・
416 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 15:37:47 ] >>414 自分が持ってんのがどっちなのかによるでしょ。 今からなら2007の方が良いのかなとは思うけど。
417 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 16:11:22 ] >>416 ありがとうございます。持ってるのが2000と2007だったので2007勉強することにしました
418 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:02:12 ] 2000と2007しかもってないのに2003を選択肢にするとは・・・できる
419 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:03:45 ] >>415 q.hatena.ne.jp/1108018134 これでやってみな。 ヒントはきちんといかそうぜ。
420 名前:410 mailto:sage [2009/10/21(水) 21:43:51 ] >411-412 上手くいきました。有難うございます。 >413 そのまさかなんですが・・・ なんとか上手くいきました。独学&ヘルプ@2007ではなかなか上達しないですね。今度、本屋行ってきます!
421 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:04:58 ] いやバグはあるよ。
422 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:09:25 ] 【合法】みんなズッキーニでヘヴン状態しようぜ!! namidame.2ch.net/test/read.cgi/yasai/1223375038/
423 名前:デフォルトの名無しさん [2009/10/21(水) 22:51:50 ] 初心者です。質問させてください。 XP、office2000において、onactionで呼び出すsub hogeにsingleの引数を複数渡したいのですが、どのようにすればよいか教えてください。 .onaction("'hoge, arg1,arg2'") とかだとうまくいきませんでした。
424 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 23:41:28 ] select case の使い方についてですが 例えば、A4の値及びB4の値によって条件を分岐させたい時に (A4 1または2 B4 同じく 1または2) Select Ccase Cells(4,1) Cells(4,2) case 1 1 case 1 2 … end select みたいな使い方出来ないんですかね?Excel2007では select case cells(4,1) cells(4,2) でエンター押した瞬間に エラーになっちまいましたが。
425 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 23:52:34 ] 二十判定は出来ない 変数とかに格納したり論理結合したり ただ1か2のどちらかなら、文字列結合すりゃいい
426 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 23:58:26 ] >>425 了解しました
427 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 09:32:17 ] >>423 .OnAction = ”'hoge””arg1””,””arg2””'”
428 名前:デフォルトの名無しさん [2009/10/22(木) 11:55:51 ] java経験しかないまったくの初心者ですが、質問させてください 列AQの行n1の文字列hoge1を取得して、hoge1を列Cより検索、 発見したらその行n2の列Bの文字列hoge2を列AUのn1のセルに代入 これをAQの行全てで実行したいのです Cにおいてhoge1が重複することはありません どうかよろしくお願いいたします
429 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 12:04:24 ] vlookup
430 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 12:21:27 ] 何行あるかしらんが、列全部にvlookupに限らず参照判定関数入れるのは そーゆーときは配列に流して連想しる
431 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 13:47:33 ] Ver.書くのを忘れてました!ごめんなさい XPでExcel2003です 列Dの行n1の文字列hoge1を取得して、hoge1を列Cより検索、 発見したらその行n2の列Bの文字列hoge2を列Hのn1のセルに代入 これをDの行全てで実行したい、に変更させてください VBAとExcelマクロの知識が0なんです… vlookupという関数を使えばいいのですか? Cは2988行、Dは1284行です sub test() dim name as string for i = 1 to 1284 name = cells(i, 4) if (vlookup(D$i, C1:C2988, 2, false)) = name then copy() pastespecial() endsub こんな方向性で大丈夫ですか?
432 名前:325 mailto:sage [2009/10/22(木) 14:38:41 ] >>419 そのURLはググってる最中に何度か訪れたんですけど、 ちょっと私には扱えそうもなかったんでスルーしてたんですけど、 頑張って調べながらやってみたら2〜3度エラーが出ましたが、 希望通りアップロード出来ました!誠にありがとうございました。 一年分の便秘が治ったようなすがすがしい気分ですw
433 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 15:16:28 ] >>431 no
434 名前:325 mailto:sage [2009/10/22(木) 15:22:42 ] >>419 すいません、これってLZHファイルとかは扱えないんでしょうか? TXTやSLK形式は成功したんですけど、LZH形式はエラーになったんです・・・
435 名前:434(325) mailto:sage [2009/10/22(木) 15:26:16 ] 自己解決しました。 LZH形式もいけました。ファイル名が不味かったようです。
436 名前:434(325) mailto:sage [2009/10/22(木) 15:28:23 ] 連投すみません。 LZH形式、エラーこそ出ませんでしたが、解凍すると文字化けしてまいした。
437 名前:434(325) mailto:sage [2009/10/22(木) 15:46:49 ] 再度自己解決しました。.typeと.charaset外したら正常に解凍出来ました。 スレ汚しすみませんでした。逝ってきます。
438 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:08:18 ] >>431 言いたい事は分かるんだけどさ。 列Dだの列Hだの、n1だn2だって、そんなのどうでもいいよ。 それで作りたいんだろうけど、読んでて辛いです。 Aから探してBにコピーとかでいいじゃん。組み合わせるだけでしょ。 for i = 1 to 1284 name = cells(i,4).value set rng = columns(3).find(name) if not rng is nothing then rng.offset(0,1).value = rng.value end if next みたいな考え方でやるよ。俺なら。 今ブラウザで書いたんで、動作保障も無し。
439 名前:434(325) mailto:sage [2009/10/23(金) 09:54:04 ] >>419 さんの方法でアップロード解決したんですが、半角カナ等のファイル名をうpすると、 実行時エラーになります。回避する方法ありますでしょうか? D&Dでうpすると正常に出来るんですが・・・・
440 名前:431 mailto:sage [2009/10/23(金) 11:17:12 ] >>438 わーい!教えていただいたものを道標に調べつつやってみたらできました! 一応完成版を張っておきます Sub macro() Dim code As String Dim rng As Range Dim name As String For i = 2 To 1284 code = Cells(i, 4).Value Set rng = Columns(3).Find(code) If Not rng Is Nothing Then name = rng.Offset(0, -1).Value Cells(i, 9).Value = name End If Next End Sub ありがとうございました!
441 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:20:06 ] >>439 エンコードでぐぐりな。
442 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:29:34 ] >>440 そんなんで完成? Findメソッドの引数が1個だけって大丈夫カヨ WhatとLookInとLookAtの最低三つは必要じゃないの?
443 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:52:52 ] >>442 一応ちゃんと動作しましたよ! 今回一回だけ動けばいいマクロなので、結果に間違いがなければOKです!
444 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:17:40 ] >>443 そりゃたまたまでんがな。 何もいじくってない状態じゃ部分一致だが、それでいいの?
445 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:28:40 ] 本人がOKってんだからいいんじゃね?
446 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:38:09 ] >>444 う、もしかして上手くいったと勘違いしてるだけなんですかね… codeはxx01みたいな形で、nameは文字列(重複部分多々あり)なんですが ちゃんと調べてみます!
447 名前:お願いします>< [2009/10/24(土) 01:26:35 ] VBA初心者です。 学校の宿題で 「y=sinXとY=Xの2本の直線で囲まれた面積をVBA関数を用いて求めなさい。」 という問題がでました>< ですが、今日初めてVBAという言葉を聞いたぐらいですので、まったく分かりません( ;∀;) どなたか記入するコードを教えて頂けないでしょうか?
448 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 01:45:00 ] 学校の宿題は自分でやらなきゃダメ>< 何の前提もなしにそんな宿題が出るはずないから、わからないのは貴方がサボっていたってことでしょ
449 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 02:20:06 ] 宿題スレ池
450 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 02:45:13 ] >>447 これは酷いwww これが社会に出て行くと思うと末恐ろしいな
451 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 10:22:29 ] sinXって直線なのかね
452 名前:デフォルトの名無しさん [2009/10/24(土) 10:57:44 ] >>424 遅レスですが、こんなアイディアも。 Select Case Cells(4,1) & Cells(4,2) case "11" case "12"
453 名前:452 mailto:sage [2009/10/24(土) 10:59:38 ] >>425 見てなかった… すまん
454 名前:デフォルトの名無しさん [2009/10/24(土) 11:43:07 ] セル参照の計算式 =G5*K3+M1 セル参照+数字の計算式 =F6*G6*3.14 数字のみの計算式 =15*21*45 この数式を区別して色分けする事は可能ですか? せめて上2つと下1つだけでも区別できればいいんですが
455 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 11:47:42 ] >>451 正弦波だから、Y=1 から Y--1 までを往復する曲線かな。 Y=Xの直線とは1点交差するけど、2点とは交差しなんじゃないか? よくわかんないけどw
456 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:13:36 ] だいたい2本の直線で囲まれる面積ってなによ 問題の意味すらわかんないならVBA以前の問題
457 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:25:46 ] 非ユークリッド幾何だと日常的
458 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:31:59 ] 大圏航路かよ 何年生の課題だ
459 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:43:37 ] >>454 手元にPCがないから確認できないけど、今ぱっと思いついた案が1つある。 セルに入力されている数式を取得し、文字列操作関数を使用し演算子の部分で区切る。 区切られた文字列を確認して全てにアルファベットが含まれていれば、セル参照あり、全く含まれていなければセル参照なし。 その他は混合。 どうでしょう? 文系のおいらの考えなので、バカかと思う方はたくさんいると思うけど。
460 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:46:03 ] >>459 だけど一部訂正。 「セル参照あり」→「セル参照のみ」だったよ。
461 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 15:08:03 ] 問題文を写し間違えただけだろ Y=sinXとY=Xは3点で交わって、囲まれた領域は2つだ 片方だけ積分して倍すればいい
462 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:24:38 ] >>459 0.100000000E+00
463 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:26:00 ] >Y=sinXとY=Xは3点で交わって、囲まれた領域は2つだ kwsk
464 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 20:36:00 ] >>454 セル参照があるかないかだけですが 一つの案として下記なんかはどうでしょうか? 一部の関数を使用していると判定ミスしちゃいますが(DAYS360 とか) With ActiveSheet.Cells(i, j) If (.Formula Like "=*[A-Z][1-9]*") Or (.Formula Like "=*[A-Z]$[1-9]*") Then 'セル参照を含む数式 .Interior.ColorIndex = 34 Else 'セル参照を含まない数式 又は 定数 .Interior.ColorIndex = 40 End If End With
465 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:22:20 ] >>462 最初に「=」が付いてるか確認すれば問題ないと思う。
466 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:22:36 ] 0.100000000E+00 +0.100000000E+00
467 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:27:46 ] 絶対に関数は使われていないのだろうか?
468 名前:デフォルトの名無しさん [2009/10/24(土) 22:36:56 ] "=*[A-Z][1-9]*"や "=*[A-Z]$[1-9]*"って何を表してるんですか?
469 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:42:26 ] 性器
470 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:44:17 ] >>467 そういう話になってくると正規表現?
471 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:17:41 ] 正規表現だと、 *[A-Z]$[1-9]* の、文末一致or後方参照の $ が説明付かない。
472 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:45:26 ] userformのtext1に入力された値を使うとき、 userform.text1と書くと思いますが、 text1、text2と順番に参照していきたい時、イメージとしては"text"&i のように変数で指定したいんですがエラーになってしまいます。 何かいい方法はないでしょうか?
473 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:25:10 ] excel2003でOSはXPです。 ダブルクオーテーションマークが検索したい文章内にある場合どうすればいいのでしょうか。 具体的には <IMG class="reslevel rf1 level2" alt="きこり レベル 2" src="img/x.gif"> というouterHTMLの文字列に一致したらdo while構文を抜け出すという形にしたいのです。 Do until objIE.document.all.outerHTML = "<IMG class="reslevel rf1 level2" alt="きこり レベル 2" src="img/x.gif">" という形でダブルクオテーションで括ったのですが「コンパイルエラー」となってしまいます。 どうすれば回避できるか教えていただけないでしょうか。
474 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:25:54 ] >>472 配列変数を使う(text1とtext2を配列変数に突っ込んで使う)
475 名前:464 mailto:sage [2009/10/25(日) 01:41:33 ] >>471 >>464 を書いたのは自分だけど 正規表現だと、 $は特殊な意味をもつの? Like 演算子では特殊な意味をもつようにはHELPに 書かれていなかったんで .Formula Like "=*[A-Z]$[1-9]* は =$A$1 とか =A$1 という形式でのセル参照も判定させたいので 付けたんです もしかして .Formula Like "=*[A-Z][$][1-9]*" って書いた方が正解なのかな?
476 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 02:00:43 ] >>474 ありがとう
477 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 02:59:44 ] >>475 msdn.microsoft.com/ja-jp/library/h5181w5w.aspx 少しは調べろよカス
478 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 08:59:51 ] >>475 だから、正規表現じゃないって言ってるのだよ。 =$A$1 を判定させるマッチパターンは、 pattern = "=\$[A-Z]\$[0-9]"
479 名前:デフォルトの名無しさん [2009/10/25(日) 15:58:07 ] 色々教えてもらいここに辿り着きました 1つのフォルダーにあるいくつかのcsvファイルの全てのA列からC列のデータを削除したいのです そういうvba作ってもらえませんか? どうかお願いします
480 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 16:05:55 ] >>479 >>2 の★5を100万回読むんだ
481 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 16:06:04 ] 了解 待ってな
482 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 17:02:08 ] >>479 いくらくれる?
483 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:05:39 ] >>482 お金は…ないんです(T_T)
484 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:30:41 ] ユーザーフォームでつくったコンボボックス等をダブルクリックして編集画面を開きます。 ここに標準モジュールで作ったプロシージャをコールしても反映してくれません。 なぜでしょう?
485 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:38:10 ] ・何がしたいのか ・現状どうなっているのか ・それに対する自分の意見 ・自分の環境は何なのか(CPU,OS,Office) ・サンプルをアップローダーに。 このくらいは質問するなら情報として欲しいわ。
486 名前:484 mailto:sage [2009/10/25(日) 23:48:06 ] なんか勘違いしてたっぽい。 コンボボックスにあらかじめ入れておく項目は標準モジュールからは呼び出せないか。
487 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:54:43 ] 最後疑問系なの 質問? コンボボックス リストボックスのリストは標準モジュールで指定出来るでしょ 値を入れておきたいならValueに入れればいいでしょ
488 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 09:00:41 ] マクロ記録 エクセルでCSV開く 該当行削除 保存 記録停止 ↑で出てた正規表現ってよくわかんないんだが何が出来るの
489 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 09:57:05 ] 日本語でOK
490 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 17:17:01 ] Excel2007 statusbarに関する質問です Dim oldStatusBar With Application .ScreenUpdating = False oldStatusBar = .DisplayStatusBar End With 〜処理〜 With Application .ScreenUpdating = True .DisplayStatusBar = oldStatusBar End With として処理中、statsubarに "現在 " & code & " を処理中"としてcodeを 表示させているのですが、終了後に "現在 0 を処理中" となります。 これを処理終了後には何も表示させなくしたいのですが、どうすれば 良いのでしょうか。 .DisplayStatusBar = ""とすると、 実行時エラー 13 型が一致しません となります。
491 名前:デフォルトの名無しさん [2009/10/26(月) 20:36:59 ] >>1 の★4に該当しますが、他にいいスレがあったら誘導してください。 Long型の数値からリトルエンディアンByte(4)型に分割したいのですが、どのようにしたらよいでしょうか。 VBだとLong型が8バイトと聞いたので、こちらに質問しました。 よろしくお願いします。
492 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:09:15 ] 1回だけランチしましたが、それっきりで不発です。 どこが変なんでしょ? CODE var path='C:/Program Files/Microsoft Office/Office/excel.exe'; var args=''; this.setAttribute('oncommand','this.startProcess("'+path+'","'+args+'")'); this.startProcess=function(path,args){ var file = Components.classes['@mozilla.org/file/local;1'] .createInstance(Components.interfaces.nsILocalFile); var process = Components.classes['@mozilla.org/process/util;1'] .getService(Components.interfaces.nsIProcess); file.initWithPath(path.replace(/\//g,'\\\\')); process.init(file); process.run(false,[args],1); }
493 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:13:30 ] >490 2007は知らんけど2003ならば Application.StatusBar = False
494 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 00:26:15 ] >>491 VBAのLongは4バイトです 8ビットずつマスクとシフトしながら分割してください
495 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 00:27:36 ] >>492 VBSはスレチ
496 名前:491 [2009/10/27(火) 01:21:41 ] >>494 ありがとうございます。 ただ、そのままするとマイナスの値のときにおかしくなってしまいます。 もうすこし詳しく教えていただけないでしょうか。
497 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 01:34:34 ] >>496 MSBだけ別の変数にとっとけばいい
498 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 01:41:11 ] 492はどうみてもJavaSな件
499 名前:491 [2009/10/27(火) 16:25:08 ] >>496 ありがとうござました。 マイナス関係なくできました。 難しく考えすぎてたみたいです。
500 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 19:39:03 ] Sub Main() Dim strPath As String Dim wkb As Excel.Workbook Dim wks As Excel.Worksheet Dim rng As Excel.Range Dim col As New Collection strPath = Excel.Application.GetOpenfilename If strPath = "False" then Exit Sub End If Set wkb =Excel.Workbooks.Open(strPath) Set wks = wkb.Sheets("Sheet1") Set rng = wks.Range("A1") call col.Add(rng) If Not(wkb Is Nothing) Then Call wkb.close: Set wkb = Nothing End If If col Is Nothing Then Set rng = col.Item(col.count) Debug.Print rng.Value End If End Sub 'colって、Nothingじゃないの? 'Is Nothingの対象はRange型のcolでは無くて、col自体を対象としてんのかな。
501 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:01:28 ] Dim col As New Collection
502 名前:デフォルトの名無しさん [2009/10/27(火) 22:27:30 ] XP で2003使ってます。 2003及び2000で動いてくれれば・・ アクセス側から、あるワークシートにおいて、 Set myWKS = myWKB.Worksheets("test") With myWKS t = DCount("*", "T1") .Range("A10").CopyFromRecordset myRS .Range("A10:D" & t + 9).Select .Application.ActiveCell.Sort Key1:=Columns("C"), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlSortColumns, SortMethod:=xlStroke .SaveAs "C:\Documents and Settings\Owner\デスクトップ\sample\テスト作成.xls" .End With という処理を行っています。 アクセスを起動後1回目は、ソートが正常に動きますが、2度目以降はうまくソートしてくれません。 次にこのメソッドを使用するときに、引数を指定しなかった場合は、保存されていた値が使用されます。 と、ヘルプにもあるように、ここにひっかかっているのだと考えていますが、 どうにも原因を突き止められません。 どうぞよろしくおねがいします。
503 名前:デフォルトの名無しさん [2009/10/27(火) 23:15:04 ] 解決しました。 理由は先ほどエラーが出ていたときは1度目の実行はうまくいくのにエクセルファイルを閉じても エクセルのプロセスが残ったままになっており2度目はその影響(?)で失敗していました。 コード自体に問題はなく、参照設定のexcelオブジェクトの優先順位を一つ上にあげてやれば、 正常に2度目以降も動くようになりました。 ただ、凄く不安定な正常性ということなので、根本を解決できる何かがあれば 是非アドバイスおねがいいたします。
504 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:45:25 ] 残ってるのはDBSオブジェクトじゃね エラー出たときとか終わるときにちゃんと閉じてる?
505 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 00:36:54 ] そこでした。 オブジェクト指定をしっかり作ったエクセルアプリケーションにしていなかったり、 いきなり.Rangeにしてたりで、タスマネに5個ぐらいEXCELってありましたw コード多すぎて無理臭いので、クエリのほうから指定することにしました。 以降はいい加減に組まないように注意せねばでした。 ありがとうございました
506 名前:デフォルトの名無しさん [2009/10/28(水) 10:55:56 ] エクセルのマクロの問題に対する質問はここでいいですか??
507 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 11:13:24 ] OK バージョン書いてね
508 名前:デフォルトの名無しさん [2009/10/28(水) 13:01:21 ] ここは宿題かたずけますスレって考えてもいいんですかィ
509 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 13:19:44 ] >>508 質問の内容とタイミングによる 時間帯と曜日によって、宿題は自分でやれってレスが付くだけのこともあるし VBA厨が喜んでプログラムを作ってくれることもある
510 名前:デフォルトの名無しさん [2009/10/28(水) 13:55:04 ] とりあえず書いてみます Excel2003 めっちゃ初歩的です… Do〜LoopかForーNextを使わなければならないみたいです。 1〜10までの整数で 偶数の和をD1 奇数の和をE1 に表示せよ です。
511 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 14:02:20 ] ExcelはスプレッドシートソフトでVBAの練習台じゃ ありません。 VBAの練習をしたいのなら、Accessでやれっつーの (AccessではExcelでやれっていわれるかも) てなわけで、Active BASICがVBAと文法互換だったら いいのになとおねだりしよう 【サーバー各所】ActiveBasicその11【冬眠中】 pc12.2ch.net/test/read.cgi/tech/1241316033/
512 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:07:11 ] >>511 あほか。Access持ってる奴なんてごく少数だろうが。
513 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:22:58 ] ACCは初めにオブジェクトアクセスを経由する必要があるから、VBAの初学には向かないよ、と思ってる エクセルなら(初めの内は)オブジェクト志向を意識しないでコードが組める上、マクロの記録がある マクロの変換じゃなくて、操作をVBAに変換するから、体感出来る点が非常に優位 逆に初めからRecordset操作を理解したほうが後が楽かもしらんけども
514 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 16:37:27 ] >>513 VBA扱う場合はやっぱフォームから入るべきだろ。 テキストボックスで入出力でいいじゃん Excelの場合CellをVBAで扱うのは、VBAだけじゃ不十分で VBAの基本とExcelの基本が十分出来上がって独立 共存できるようになってからじゃないと両方駄目になる悪寒 Accessの場合はVBAが出来てからテーブルやらクエリ やら覚えていく方法がとれる。
515 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 17:06:49 ] 別のスレでやれ
516 名前:デフォルトの名無しさん [2009/10/28(水) 18:30:39 ] VBAを使用してアルバイトの出勤簿を作成しています。 例えば、セルJ6に名前をInputBoxを使って入力した時に、セルJ5にフリガナをカタカナで 自動で表示する場合はどのようにすればよいでしょうか?
517 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 20:57:08 ] フリガナにはそれ用のワークシート関数を使う
518 名前:デフォルトの名無しさん [2009/10/28(水) 21:23:03 ] PHONETIC関数でしょうか? フリガナを表示しないで、氏名(漢字)が表示されてしまいます。
519 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 21:39:35 ] 大した人数でないなら 名前と読み方リスト作ろうぜ
520 名前:デフォルトの名無しさん [2009/10/28(水) 21:44:07 ] 読み方リストを作り、セル参照を使うということですか?
521 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 21:51:46 ] でもなんでも どう料理するかは考えてないけど テキストボックスに名前入れると読み仮名ラベルに表示するとかかな
522 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 21:58:13 ] >>510 宿題なのかな?答え書いたら勉強にならないから、ヒント書いておくね。 for i = 1 to 10 next if i and 1 = true then 奇数 if i and 1 = false then 偶数 cells(4,1).value = cells(4,1).value + i がんばって。
523 名前:デフォルトの名無しさん [2009/10/28(水) 22:07:25 ] ワークシート関数を使うことに決めました。
524 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 22:08:51 ] Mod 演算子を使わないのは速度厨なせいでつか?
525 名前:517 mailto:sage [2009/10/28(水) 22:16:47 ] detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1414375849 なるほど、セルに直接入力しない場合で、phoneticを使用する場合は工夫が必要だね
526 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 22:40:03 ] ワークシート関数はVBAからでも呼び出せるっちゃ呼び出せる
527 名前:デフォルトの名無しさん [2009/10/28(水) 22:49:49 ] 変更して保存 ↓ Excelを終了 とするにはどういうふうに構文をかけばよいでしょうか?
528 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 22:59:33 ] >>527 Application.Quit
529 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 23:49:49 ] そういえばかなり前に1からnまでの和をループを回して求めよってのに For i = 1 To n Next 和 = (1 + n) * n / 2 みたいなのがあったな。
530 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 23:53:53 ] >>522 ビット演算なんて分るやつあまりいないんだから、そういう知ったかぶりの回答はやめましょうね。
531 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 00:19:50 ] 奇数 = 0 偶数 = 0 For i = 1 To 10 Step 2 奇数 = 奇数 + i 偶数 = 偶数 + (i + 1) Next Debug.Print 奇数, 偶数
532 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 00:26:27 ] >>530 >ビット演算なんて分るやつあまりいないんだから え!そうなの?
533 名前:デフォルトの名無しさん [2009/10/29(木) 00:48:08 ] >>510 教えてくれとは書いていなかったけど、よかったら参考にしてください。 Sub PlzDoHomeworkByYourself() Range("D1").Value = 0 Range("E1").Value = 0 ' The following was written by someone on the net. For i = 1 To 10 If (i Mod 2) = 1 Then '2で割り切れない場合(奇数) Range("E1").Value = Range("E1").Value + i Else '2で割り切れる場合(偶数) Range("D1").Value = Range("D1").Value + i End If Next ' If you're a teacher, you ought to punish your student who didn't do homework himself. End Sub
534 名前:デフォルトの名無しさん [2009/10/29(木) 01:18:45 ] >>533 ありがとうございます!!また頼むかもしれませんがよろしくお願いします。
535 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 01:45:25 ] Sub Main() Dim rng As Excel.Range Dim i As Integer Set rng = Excel.ThisWorkbook.Sheets("Sheet1").Range("D1") With rng '初期化 .Offset(0, 0) = 0 '$D$1 .Offset(0, 1) = 0 '$E$1 For i = 1 To 10 Select Case True Case (i Mod 2) <> 1 '偶数 .Offset(0, 0) = .Offset(0, 0).Value + i Case (i Mod 2) = 1'奇数 .Offset(0, 1) = .Offset(0, 1).Value + i End Select Next i '初期化 .Offset(0, 0) = 0 '$D$1 .Offset(0, 1) = 0 '$E$1 i = 1 Do While i < 11 Select Case True Case (i Mod 2) <> 1 '偶数 .Offset(0, 0) = .Offset(0, 0).Value + i Case (i Mod 2) = 1'奇数 .Offset(0, 1) = .Offset(0, 1).Value + i End Select i = i + 1 Loop End With End Sub
536 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 02:03:47 ] >>510 For i = 1 To 10 Cells(1, 4 + (i And 1)) = Cells(1, 4 + (i And 1)) + i Next
537 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 09:15:12 ] >>532 officeのVBAだと使わないしねぇ vbaだと知ってても使う場面がほとんど無い品
538 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 09:24:31 ] >>529 なにそれ面白い ビット演算とか知識はかろうじてあるけどナニソレ
539 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 12:14:21 ] 俺ならこうやって高速化するぜ For i = 1 To n Step n Next 和 = (1 + n) * n / 2
540 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 12:21:10 ] すまんが教えてください vbaでie制御して、ieのframes(a)内を全選択してコピーしたい。 frames(a)を全選択することが重要で、frames(b)の情報は必要ないし、innerText等での情報取得は避けたい。 ExecWBとSendKeysでやってみたが上手く行かなかった。 やり方に問題があるのか、違う方法があるのか? 教えてください。
541 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 12:21:25 ] おれならこうだな for i = n to n next
542 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 12:46:51 ] 速さならこっちかな? For i = 1 To n Exit for Next 和 = (1 + n) * n / 2
543 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 13:08:40 ] さすがにこれは反則だろうな Goto aaa For i = 1 To n Next :aaa 和 = (1 + n) * n / 2
544 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 13:21:48 ] 和 = (1+n)*n/2 Debug.Print 和 ループ こうか!
545 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 10:22:29 ] 質問させてください。(Excel2003 XP) ExcelでRS-232-C通信を行おうとしております。 大昔に一度、何かを見ながら自作したマクロを参考にやっています。 当時はMSCommを使用しておりましたので、同様にツールボックスから MSCommをフォームに貼り付けると、 「サブジェクトは指定された操作に対して信頼されていません。」 と表示され、貼り付けることができません。 Webで調べると、どうやら ActiveX Killbits に対するセキュリティ更新プログラム (KB969898) を実行したことで使用出来なくなってしまったようです。 対策はこれを削除とのことですが他へ配布したりPC乗り換えごとに 削除して回るのも非現実的です。 MSCommが分かりやすくて簡単ですのでこれを使用したいのですが 更新プログラムの削除や新たに何かをインストールしなくても使用できる 方法はないでしょうか? また他にWinAPIで行う方法もありましたがこちらで行う方法が主流? なのでしょうか? よろしくお願いします。
546 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 13:10:43 ] >ActiveX Killbits に対するセキュリティ更新プログラム (KB969898) >を実行したことで使用出来なくなってしまったようです。 >対策はこれを削除とのことですが他へ配布したりPC乗り換えごとに >削除して回るのも非現実的です。 >MSCommが分かりやすくて簡単ですのでこれを使用したいのですが >更新プログラムの削除や新たに何かをインストールしなくても使用できる >方法はないでしょうか? 自分で何言ってるか分かってる?
547 名前:545 mailto:sage [2009/10/31(土) 15:21:48 ] >546 失礼しました。 >MSCommが分かりやすくて簡単ですのでこれを使用したいのですが >更新プログラムの削除や新たに何かをインストールしなくても使用できる >方法はないでしょうか? MSCommのようなコントロールが分かりやすくて簡単ですのでこの様なコン トロールを使用したいのですが更新プログラムの削除やフリーのアドインなど をインストールしなくても使用できる方法はないでしょうか? (MS系の更新インストールや代替コントロールのインストールは可) WinAPIはサンプルを見てもまださっぱり理解できないので出来れば避け たいのですが、今から作るのであればコントロールではなくWinAPIで行う べきでしょうか? よろしくお願いします。
548 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 19:18:22 ] MSCommを使いたいなら対策は「ActiveX Killbits に対するセキュリティ更新プログラム (KB969898)」を削除
549 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 19:33:45 ] セキュリティパックとは、古く多少リスキーでありながらも 公開されていたDLLとかの機能を殺してしまってモノシリッ ク化しつつある疑似カーネル群のコードを間接的に使うように することだったんでつね
550 名前:デフォルトの名無しさん [2009/11/02(月) 11:29:29 ] >>545 ttp://ziddy.japan.zdnet.com/qa5065179.html これはどう?
551 名前:545 mailto:sage [2009/11/02(月) 22:21:47 ] >550 ありがとうございます。 投稿前にこれも試したのですがVB6が入ってないから ダメと言われました。 WinAPIに挑戦してみます。 ありがとうございました。
552 名前:デフォルトの名無しさん [2009/11/03(火) 05:55:57 ] >>551 EasyCommというモジュールを使うと、素人の自分でも簡単に機能実現出来ました。
553 名前:デフォルトの名無しさん [2009/11/03(火) 13:19:49 ] >>551 VB6のSP6のruntimeのみってvectorとかに無い? #自分はsp5の使ってるけど
554 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 13:36:56 ] Vector のダウンロード数が一番になってるランタイムって、 コメント読んだらシステム破壊の事が書かれてて怖いわw 俺は昨日ソフト更新系のサイトでコレを発見したので入れてみた。 ttp://www.hmpage.jp/vb6rtest.htm セットアップがVB6のプロジェクトのタイプなので、インストール後に アンインストールして、ライブラリ類は全残しでいけた。
555 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 14:58:37 ] Frameworkさえいれておけば.NETの機能って使えるんだな 最近知ったけどStringBuilderとか使えて便利だ
556 名前:デフォルトの名無しさん [2009/11/03(火) 15:35:51 ] >>555 知らんかった・・・・・ #まともなhash使えるとかなりうれしいなぁ
557 名前:デフォルトの名無しさん [2009/11/04(水) 21:19:25 ] AOD.NET って使える?
558 名前:557 [2009/11/04(水) 21:20:45 ] 訂正 ADO.NET
559 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 22:32:00 ] VBAで使えるのはADOであってADO.NETは使えないんじゃなかった? 俺は2007だけどADOでアクセス(という言い方でいいか)してる。
560 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 23:40:03 ] CreateObjectでインスタンスを無理やり生成してやれば使えるんじゃね まぁ、そこまでしてやるもんでもないと思うしVSTOでも検討した方がいい
561 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 09:08:12 ] 以前お世話になりました270です。 ネット検索で検索ヒット件数を取得し A1A2・・・にある単語の件数をB1B2・・・に記録したいのですが、 グーグルでは取得拒否にあってしまい、ヤフーで挑みたいのですが、 送信するのに文字を %5%7 とかにしないといけない(どういうキーワードに つなげるかもわからない)みたいなのですが、 この送信ワード yahoo.co.jp/search??????? %5%6 とかの、?????と 文字の変換方法を教えていただける方いらっしゃいませんでしょう か?
562 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 09:13:04 ] アタックはやめろ
563 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 09:39:23 ] yahooのデベロッパーのサイトでは一日5万まで使って開発してくれ というのです。別段500でもいいから自動化させたいのですが・・・ そこには例文がなくて・・・どこかにフォーラムでもないでしょうか? developer.yahoo.co.jp/webapi/search/websearch/v1/websearch.html
564 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 11:05:12 ] Yahoo! JAPAN Web APIはあきらかにスレ違い
565 名前:デフォルトの名無しさん [2009/11/07(土) 17:28:03 ] excel vbaで他のブックのセルデータを参照するにはどうすればよいの?
566 名前:デフォルトの名無しさん [2009/11/07(土) 17:30:07 ] 上、ちなみにexcel2003です。 Workbooks(“ブック名.xls”).Worksheets(“シート名”).Activate これをやっても、インデックスが有効範囲にありませんが出ます。 どなたかお願いします。
567 名前:デフォルトの名無しさん [2009/11/07(土) 18:13:11 ] フォームのTextboxにドラック&ドロップで任意の列データを持ってくることはできますか? やりたいことは、2つの異なるブックのフォームの列データーを他のブックの列データーと比較をしたいのです。
568 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:06:01 ] >565-567 つマクロの記録
569 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:28:16 ] B列に1万近くの数値があり、そこから特定の範囲(例えば100〜101など)に適した数値を 指定したセルに抽出し、複数ある場合はそのしたに並べて抽出するようなプログラムを作りたいのですが、 どのようにしたらよいでしょうか? Excel2003です
570 名前:デフォルトの名無しさん [2009/11/08(日) 00:32:48 ] VBAでRSSの読み込みって出来ますか?
571 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 09:22:15 ] >>570 こんなとこで聞くよりgoogleで「VBA RSS」で検索すれば よっぽど早く結果に到達できますよ。その上でわからないことを 質問したほうが効率的では?
572 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 09:57:39 ] >>569 import sys, os import win32com.client def main(from_s, from_e, to, rng): if from_s[1] != from_e[1]: print 'error' return if rng[0] > rng[1]: print 'error' return pwd = os.path.abspath(os.curdir) xls = win32com.client.Dispatch('Excel.Application') try: wb = xls.Workbooks.Open(os.path.join(pwd, 'test1.xls')) sheet = wb.Sheets(1) c = 0 for row in range(65535): if row >= from_s[0] and row <= from_e[0]: v = float(str(sheet.cells(row, from_s[1]))) if v >= rng[0] and v <= rng[1]: sheet.cells(to[0] + c, to[1]).value = v c += 1 wb.SaveAs(os.path.join(pwd, 'testout.xls')) wb.Close() except: print sys.exc_info() finally: xls.Quit() if __name__ == '__main__': main((10, 2), (20, 2), (3, 5), (99.0, 1000.0)) # B10-B20 -> E3-
573 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 10:00:45 ] インデント消えてた orz import sys, os import win32com.client def main(from_s, from_e, to, rng): if from_s[1] != from_e[1]: print 'error' return if rng[0] > rng[1]: print 'error' return pwd = os.path.abspath(os.curdir) xls = win32com.client.Dispatch('Excel.Application') try: wb = xls.Workbooks.Open(os.path.join(pwd, 'test1.xls')) sheet = wb.Sheets(1) c = 0 for row in range(65535): if row >= from_s[0] and row <= from_e[0]: v = float(str(sheet.cells(row, from_s[1]))) if v >= rng[0] and v <= rng[1]: sheet.cells(to[0] + c, to[1]).value = v c += 1 wb.SaveAs(os.path.join(pwd, 'testout.xls')) wb.Close() except: print sys.exc_info() finally: xls.Quit() if __name__ == '__main__': main((10, 2), (20, 2), (3, 5), (99.0, 1000.0)) # B10-B20 -> E3-
574 名前:デフォルトの名無しさん [2009/11/08(日) 10:44:08 ] 2003 初心者です。 ワークシートイベントで処理を抜け出すのはどうすれば・・ 一度だけ計算させたいんですが。どこかで見た気がするのに探せない。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Column = 1 Then Target.Value = Target.Value + 1 'この後どうすれば・・・・ End If End Sub
575 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:14:38 ] >574 どっかのセルに実行済みをセットすれば?
576 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:57:57 ] >>574 Application.EnableEventsを使うが、実用になるChangeイベントを書くのはかなり難しいよ。 あきらめた方がいいと思うな。 真っ先に考えられる不具合は消した場合でも1になったりすることだな。 問題はこれだけじゃないからかなり難解。
577 名前:デフォルトの名無しさん [2009/11/08(日) 13:35:30 ] >>575-576 どもです。そもそも無茶なことか・・・ 初心者ゆえに「出来る・出来ない」が良くわからない ありがとでした
578 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:05:32 ] staticでも使え
579 名前:デフォルトの名無しさん [2009/11/08(日) 17:28:43 ] シート起動時に、フォームを出してそれを10秒後で消す。 その10秒の間に、フォーム内のTextboxの値を ユーザーの任意で変更できるようにと考えましたが、 タイマーしてる間、フォームが白く固まって値変更ができません。 何か改善策はありますでしょうか。2003です。 Private Sub UserForm_Activate() Dim MyWaitTime As Date '10秒後に閉じる場合 MyWaitTime = TimeSerial(Hour(Now()), Minute(Now()), _ Second(Now()) + 10) Application.Wait MyWaitTime 'マクロを指定の時間まで停止 Unload.対象日数の入力フォーム 'UserFormを閉じる End Sub
580 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:44:47 ] イベントループ拾わんといかんだろ
581 名前:デフォルトの名無しさん [2009/11/08(日) 17:45:47 ] C言語側で扱うためのバイナリファイルをVBAで出力していて 整数値は除算や剰余算を用いてバイト型配列に代入して出力しているのですが、 浮動小数値(単精度)をバイト型配列に含める場合にどう処理すればいいのか分からず困っています。 良い解決策をご教授頂ければ助かります。
582 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:10:19 ] ttp://program.station.ez-net.jp/special/vc/atl-com/variant.asp ttp://www.hi-ho.ne.jp/babaq/bstr.html ttp://piza.2ch.net/log/prog/kako/947/947909317.html support.microsoft.com/kb/167668/en-us/
583 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 22:34:13 ] >>581 配列に入れる理由がファィル出力のためだけなら、いちいち配列など使わずに ファイルをBynaryモードで開いて整数も実数もそのまま出力してしまえばいい。 ただし、実数の内部表現が異なる場合は使えない。 どうしてもVBAの中で1バイトずつ取り出す必要があるなら、 Win32APIのMoveMemoryを使うぐらいしか方法がない。
584 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:42:51 ] #ファイル番号 でファイルにバイナリアクセスしている時に、 ストリーム位置を取得する方法を教えてください。 (Cのftell()相当の操作)
585 名前:584 mailto:sage [2009/11/09(月) 21:06:44 ] 自己解決しました。 Seek( ファイル番号 ) で取得できました。
586 名前:デフォルトの名無しさん [2009/11/10(火) 15:17:54 ] Private Sub UserForm_Initialize() Dim lastRow As Long Dim ReturnBook As Workbook, TargetBook As Workbook Set ReturnBook = ActiveWorkbook Application.ScreenUpdating = False Set TargetBook = Workbooks.Open("D:\test\sample.xls") With TargetBook.Sheets("Sheet1") ' ListBox1.ColumnHeads = True Me.ListBox1.List = .Range(.Range("B2"), .Cells(.Rows.Count, 2).End(xlUp)).Resize(, 2).Value ReturnBook.Activate Application.ScreenUpdating = True TargetBook.Close End With End Sub 削除区分 コード 商品名 0 1001 りんご 1 1002 みかん 0 1003 バナナ こういう風な外部ブックに対して削除区分が1のデータをリストボックスに 表示しないようにするにはどうすればいいですか?教えてください
587 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 23:44:43 ] b.hatena.ne.jp/articles/200911/553 会社の仕事でマクロを組むのはズル? 事務作業の効率化に意見さまざま
588 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 23:48:02 ] マクロを組むのはズルじゃないが 他人が作ったマクロを勝手に使って 仕事を早く終わらせるのはズルだと思う 少しはリスペクトなりインセンティブなり気を使えと
589 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 15:13:14 ] その理屈でいくとPCも電卓もせめて一度は作ってから使えということになるが
590 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 15:25:27 ] その理屈でいくと家も会社もせめて一度は作ってから住め(従事)ということになるが
591 名前:デフォルトの名無しさん [2009/11/11(水) 22:10:44 ] シート2の表を、シフト+編集で図のコピーを行い、シート1に貼るマクロを組みましたが、 そのシート1の貼りつけた図のコピーを切り取るマクロを組むと、ピクチャー番号が異なるために、できません。どうすれば、解決できますか?
592 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 22:21:57 ] 以下のような動作をするマクロって、VBAで作成できますか? (実現可能性だけ教えて頂ければ、自力でどうにかしたいと思います) ・処理内容 Outlook2007で、 特定の件名がついたメールは、メール内容表示の際にボタンを出現させて、 ボタンを押すことでExcel2007にメールの内容を転記させる。 例えば、以下のような感じです。 ■Outlook 件名:○○見積書 メール内容: ○○費 \50000 △△費 \100000 ―――- |ボタン|←ポチっとな ―――- ■Excel A1セル:○○費 A2セル:\50000 B1セル:△△費 B2セル:\100000 が転記される
593 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:23:58 ] できるっちゃできる
594 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:28:37 ] シート上に下記のパラメータで長方形のオートシェイプを作りたくて書いたVBAです Sub 四角形2() Dim MyShape As Shape Set MyShape = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 40, 425, 355, 90) With ActiveSheet.Shapes.Range(MyShape.Name) .Fill.Visible = msoTrue .Fill.Solid .Fill.ForeColor.SchemeColor = 10 .Fill.Transparency = 0.5 End With End Sub しかし実際にはWith内で指定したパラメータは常に共通で 位置と大きさのみ違う複数のケースでの長方形を作りたいのです。 With〜End WihtをPrivateFunctionに書いて、MyShapeの値を変えて参照させれば良いですか? あと自分で書いておいてなんですが(MyShape.Name)は何を表すんでしょう?
595 名前:デフォルトの名無しさん [2009/11/12(木) 19:57:22 ] 質問です。 あるフォルダに入っているテキスト形式のデータ10個を エクセルで開いていくVBAのプログロムを書いている のですが、エラー文で「データ_i.txtがありません」と表示されます。 私の書いたプログラムは下記です。 Sub テスト() テスト Macro Dim i As Integer For i = 0 To 5 ChDir "C:\Documents and Settings\データ" Workbooks.OpenText Filename:= _ "C:\Documents and Settings\データ\_i.txt" _ , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True Next i End Sub このプログラムの目的は、テキストデータの入っているフォルダを 他の名前に変更したときも、その中に入っているテキストデータ10個を エクセルで展開するためです。おそらく "C:\Documents and Settings\データ\_i.txt"のiの部分が間違えていると 思うのですが、どうすればいいでしょうか?よろしくお願いします。
596 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:10:08 ] 知らんがな(´・ω・`)
597 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:32:33 ] "C:\Documents and Settings\データ\_" & i & ".txt" としてやらんといかんのとちゃうかな
598 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 20:34:03 ] >595 データさんか? 普通はそこにアカウント名が入るんだが。 まさかとは思うがi.txtのiって・・・w
599 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 21:00:42 ] >>このプログラムの目的は、テキストデータの入っているフォルダを >>他の名前に変更したときも、その中に入っているテキストデータ10個を >>エクセルで展開するためです。 (・ω・`)???
600 名前:595 [2009/11/12(木) 21:12:37 ] みなさんアドバイス感謝です! 説明不足ですみません。 質問ではテキストデータと書きましたが、.datで保存されています。 フォルダの中に「_0.dat」「_1.dat」「_2.dat」…というデータが10個あります。 ほんとは10個開きたいのですが、とりあえず5個開けたら5を10に直せばいいかなと 思ってます。 >>597 さん \データ\_"&i&".dat"としましたが、コンパイルエラーになります。 dat形式のデータは無理なのでしょうか?
601 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 21:18:41 ] "C:\Documents and Settings\データ\_" & i & ".txt" _ 死ね >>600
602 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 23:40:30 ] 597見てダメなら何聞いてもダメだろ スペルミスとかスペース抜けとかで質問されても困る
603 名前:デフォルトの名無しさん [2009/11/12(木) 23:56:23 ] Range("G1").Select の 1をfor文使って 1〜100までするにはどうすればいいでしょうか? For n = 1 To 100 Range("D&n&").Select だとエラーになります
604 名前:デフォルトの名無しさん [2009/11/12(木) 23:59:00 ] ↑ Range("G1").Select × Range("D1").Select ○
605 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 00:00:00 ] Range("D" & n).Select あるいは Cells(n, 4).Select
606 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 00:06:08 ] >>595 と>>603 は同じヤツか? 根本的に・・・
607 名前:デフォルトの名無しさん [2009/11/13(金) 00:09:35 ] ActiveCell.FormulaR1C1 = "=-(R[+&n]C[-2]-R[-4]C[-2])" R[+&n]を引数にする場合はどうでしょうか?
608 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 00:49:12 ] もはやネタだろ
609 名前:デフォルトの名無しさん [2009/11/13(金) 00:53:26 ] ネタじゃないです>< ActiveCell.FormulaR1C1 = "=-R["&n&"]C[-2]-R[-4]C[-2]" とかやってみたんですがダメでした
610 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 01:02:20 ] 寝たとしてもまったく面白くない もっと回答したくなるように質問しろ
611 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 01:03:42 ] >>594 AddShapeの引数を変数にして全体をループさせるだけでいいのでは? 共通パラメータをわざわざ関数にする必要はないと思う。 >あと自分で書いておいてなんですが(MyShape.Name)は何を表すんでしょう? ShapesのRangeプロパティは、指定したShapeのオブジェクトを返す。 この"指定した"というのが今回の場合はMyShape.Nameとなる。 正直わかりにくいし、Rangeなんて使った事無い。 With ActiveSheet.Shapes(MyShape.Name) もしくは With MyShape このどちらかが一般的だと思ってるがどうだろうか。 >>607 >>595 と>>603 に続いて同じ失敗をしている。 >>597 を参考にして考えればわかる。
612 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 10:51:53 ] 変数使ってセル座標の指定するなら、cells使った方が楽だと思ってる。
613 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 10:57:30 ] その方が速い
614 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 14:43:25 ] すまんが教えてください vbaでie制御して、ieのframes(a)内を全選択してコピーしたい。 frames(a)を全選択することが重要で、frames(b)の情報は必要ないし、innerText等での情報取得は避けたい。 ExecWBでやってみたけど上手く行かなかった。 SendKeysもいまいちだったし、出来るならやりたくない(違う作業が出来なくなるため) やり方に問題があるのか、違う方法があるのか? 教えてください。
615 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 18:44:29 ] ・自分に何かしら不幸な出来事が起きたとき、落ち込んでしまうのは仕方のない話。ショックが大きいほど、 人前に姿をさらすのも苦痛になるものだが、そういうときの行動こそ、人間の大きさが見えるものかもしれない。 米シカゴに住む34歳のティアン・ハリスさんは、 10月31日に幸せな花嫁となる予定が、6日前になって相手の 男性から突然結婚の中止を告げられてしまった。式直前でのまさかの事態だが、さらなる追い打ちを かけられてしまう。慌てて母親と一緒にパーティー会場にキャンセルを申し出ると、もう返金は不可能と 言われたそう。駐車場に座り込み落ち込むハリスさんと、なす術もなく見守る母親。そのとき、向かいに あった老人ホームを目にして良いことを思いついた。 どうせ無駄にするならと、2人は向かいの老人ホームの人たちとパーティーを開こうと決断する。 「寄付をしたい」とハリスさんが飛び込んだ老人ホームの施設長は、「彼女はここにいる誰も知らないだろうし、 そんなオファーも受けたことない」(米紙ニューヨーク・デイリーニュースより)と驚いた。かくして、ハリスさんの結婚パーティーは、 老人ホームのハロウィンパーティーへと変更。お年寄りたちも、思いもよらぬイベントを大いに喜んだという。 300人近いお年寄りは思い思いに仮装して、ダンスに興じた。あるお年寄りは「とても楽しい時間だった」 (米放送局CBSより)と語り、老人ホームに素敵なひとときをもたらしたハリスさんに感謝している。施設長も 「彼女はどこからともなくやってきて、私たちに美しいパーティーを与えてくれた天使」とハリスさんを讃えた。 会場の傍らでお年寄りの笑顔を見て満足したというハリスさんだが、本当なら自分が主役になるはず だったパーティーにやはり心境は複雑だったよう。母親も「会場で、皆さんの前にいるのが娘だったら よかった」と無念さを語り、施設長も「彼女は落ち込んでいたと思う」とハリスさんの心中を慮った。 しかし、そうした中でもお年寄りたちに幸せな時間を与えたハリスさんの人柄に、施設長は「神は彼女を祝福し、 きっとほかに良い人を見つけられる」と太鼓判を押す。 ハリスさんは11月2日に、新婚旅行となるはずだったハワイへ1人で旅立ったそう。花嫁になり損ねてしまった ハリスさんだが、彼女が取った決断が多くの人に幸せを与えただけでなく、少なからず自分への励みに なったことを願いたい。(抜粋) www.narinari.com/Nd/20091112560.html
616 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 18:49:15 ] なげーよ 2行でギブw
617 名前:デフォルトの名無しさん [2009/11/13(金) 19:33:04 ] 質問です。 10ページある文書のうち、例えば2、5、7ページだけを印刷したい場合、 Sub 印刷() Worksheets("文書").PrintOut from:=2, to:=2 Worksheets("文書").PrintOut from:=5, to:=5 Worksheets("文書").PrintOut from:=7, to:=7 End Sub と、やるのでしょうか? なにかもっと良い方法がありそうな・・・ OSはVISTA、バージョンは2007です。
618 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:27:48 ] Sub 印刷() Worksheets("文書").PrintOut pages:=2,5,7 End Sub
619 名前:あ [2009/11/13(金) 22:01:06 ] 質問させて頂きます。 A1からA100に1から10の数字を入力するマクロを作成 していますが、無限ループになってしまいます。。 どのようにすればよろしいでしょうか? Sub Ary() Dim Arow As Long Dim i As Long For i = 1 To 600 Cells(i, 1).Value = i If i = 10 Then i = 1 End If Next i End Sub
620 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 22:26:21 ] >>619 個人的には >For i = 1 To 600 に突っ込みたいが、まじめに答えるとi=10の時にi=1にしろって指示してるので i=1 → 10 → 1 → 10 → の無限ループになってる 1,2,・・・10,1,2,・・・ と繰り返したいなら cells(i,1)=i%10 みたいに余りを計算すれば良い (余りの計算は %じゃなくてmodとかかも知れない。忘れた)
621 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 22:27:52 ] ごめん 10で割って余りだと0,1,2,・・・,9,0,1,・・・ってなるから1足せ
622 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 22:57:12 ] >>619 カウンタ変数(i)をForループの中で書き換えるのは可能な限り避けた方がイイ 何回回ったかわかんなくなっちゃうよ
623 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 00:02:36 ] 【科学】道路に軍手が落ちているワケ、名城大研究チームが突き止める[09/11/05] namidame.2ch.net/test/read.cgi/hidari/1257990721/
624 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 00:51:45 ] >>620 Dim Arow As Longに突っ込めよ
625 名前:デフォルトの名無しさん [2009/11/14(土) 04:51:06 ] e = "& mi &" + 5 * "& c &" - 5 mi、c は変数です。 何がいけないのでしょうか?
626 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 05:13:52 ] お前は2chに書き込んではいけない
627 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 07:43:48 ] e = mi + 5 * c - 5 じゃダメなの? 変数が文字列の中に含まれちゃってるよ。 ただのmiって文字列としか認識されない。
628 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 08:59:38 ] >>619 Sub Ary() Dim Arow As Long Dim i As Long Dim j As Integer j = 1 For i = 1 To 600 Cells(i, 1).Value = j j = j + 1 If j > 10 Then j = 1 End If Next i End Sub こんなものでどないでしょう。
629 名前:デフォルトの名無しさん [2009/11/14(土) 09:49:32 ] Arow ってなんだ
630 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:04:03 ] 正解(>>620-621 )が出た後にボケ回答(>>622 >>628 )が出てくる、の法則
631 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:12:07 ] 自分よりいい答えが出たのがそんなに悔しかったのか
632 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:15:19 ] (;゚д゚)ァ
633 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:49:33 ] >>619 Sub Ary() Dim Arow As Long Dim r As Range For Each r In Range("A1:A100") r.Value = r.Row Mod 10 Next r End Sub こんなものでどないでしょう。
634 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 10:50:58 ] ごめん 10で割って余りだと0,1,2,・・・,9,0,1,・・・ってなるから1足せ
635 名前:デフォルトの名無しさん [2009/11/14(土) 11:01:07 ] .Formular1c1="=Average(R["& c &"]C["& d &"]:R["& c+2 &"]C["& d+2 &"])" のようにRCの中に変数を入れたい場合はどうすればいいのでしょうか? アドバイスお願いします
636 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 11:07:03 ] 馬鹿発見
637 名前:デフォルトの名無しさん [2009/11/15(日) 01:17:24 ] 四択問題を作っています。 Public Seikai As Integer, i As Integer, Ruiseki As Integer Sub Quiz() Dim Det As String i = 1 Ruiseki = 0 Do Det = Sheets("Sheet3").Cells(i, 1) If Det = "" Then Exit Do UserForm1.Show i = i + 1 Loop While Det <> "" UserForm2.Show 'MsgBox "正解は" & Ruiseki & "問です。" End Sub sheet3のA列に問題番号、B列に問題、C列に正解番号を入れています。 問題は50問作ったのですが、この中から20問をランダムに表示する ようにしたいのですが、どのようにしたらいいかわかりません。 今は、50問全て順番に表示されてしまう状態です。 教えてください。 よろしくお願いします。
638 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:45:55 ] RAND()で適当な番号をふって並び替えて上から20問をつかう
639 名前:デフォルトの名無しさん [2009/11/15(日) 13:25:55 ] >>618 ありがとうございます! 助かりました。
640 名前:637です [2009/11/16(月) 00:26:37 ] >>638 マクロを具体的にどう変更したらいいかおしえてください…
641 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:16:40 ] >>640 例えば、D列に乱数で適当な数字を振る D列を見て数の大きい順に20問を出題する そこまで自分で作ったのなら、これくらいできるだろ? 宿題なら自分でどうぞ
642 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:18:19 ] マクロが A B C D こうあったとして、全てのマクロを実行するマクロを作るにはどうやったらいいですか?
643 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:26:37 ] 全てのマクロを呼び出すマクロを作ればいいだけだろ
644 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 16:52:03 ] Sub all_execute() A B C D End SUb wwww
645 名前:デフォルトの名無しさん [2009/11/16(月) 20:20:05 ] 私は基本C/C++のPGです。業務でVBAの面倒を見ることになりそうなんですが、 言語仕様がコンパクトにまとまってるような本はないでしょうか? VBAの仕様なんてたかが知れてるかもしれませんが、分厚い本やWEBサイトをいったりきたりするのは面倒だし 言語に自分の知らない部分があるというのが気持ち悪い性分なので、まとまってる本を探しています(WEBでもいいのですが) ・プログラミングの知識前提で、 ・ペラッペラの単色刷りで ・言語使用だけは満足してる オライリーのクイックリファレンスのVBA版みたいなのが理想です(探したけどなかった)。 VBAの解説本だとプログラミング未経験者向けの、カラフルで妙に分厚い本が多いような気がするのですが 私としてはクイックリファレンス的な本が理想なので… お勧めの本などあれば教えてください。
646 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:17:54 ] VBA辞典
647 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:23:14 ] >>645 マジレスだけどリファレンスとしてはオンラインヘルプ一択 結局ヘルプ以上にならないから初心者向けの分厚いカラー刷りになる 紙がよければ死ぬ気で全部印刷
648 名前:637です [2009/11/17(火) 00:26:19 ] >>641 RAND()で、 B列とC列のくみあわせは変わってしまうことは無いのですか?
649 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 00:28:24 ] >>648 ここはマ板ですよ?
650 名前:637です [2009/11/17(火) 00:38:30 ] >>649 死ねクズ
651 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 00:39:17 ] >>648 おまえの前にある箱の向こうにも人がいるんだぜ >>638 も >>641 も的確な回答してるじゃん それに対して、あーじゃない、こーじゃない、って・・・ 更に質問するんだったら ありがとう御座います。ヒントを基に組んでみたら、こんな動作をしました。 ここが怪しいと思うので、調べたり試行錯誤したのですが、こんなエラーが出てしまいます。 何かアドバイス頂けないでしょうか? くらい書いたほうがいんでね? なんとなくムカつく文章だったので勢いで書いた
652 名前:デフォルトの名無しさん [2009/11/17(火) 00:56:42 ] 的確?
653 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 01:01:43 ] >>652 的確だと思うぞ。
654 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 08:15:19 ] >>653 俺も的確だと思うけどな。 質問する側のレベルが低いんだろw
655 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 08:40:16 ] おまいらココ逝って正しいRANDの使い方教えてきやがれ www.nicovideo.jp/watch/sm8517855
656 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 09:03:50 ] 【社会】スーパーコンピュータ向け「Excel」開発中 - Microsoft tsushima.2ch.net/test/read.cgi/newsplus/1258414484/
657 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:57:24 ] A2〜A20000ぐらいまで誕生日(シリアル値)が入っています B列に年齢を出したいときは、どういう計算をすれば軽くなるでしょうか? 古いPC(win95)なのでものすごく時間がかかっています 他のマクロでも応用したいので、教えてください お願いします!
658 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 17:49:46 ] 関数にdatedifってのが有るから =DATEDIF(A2,TODAY(),"y") で済むと思うけど、どうしてもVBA上から使いたいならworksheetfunctionを付ければ?
659 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:25:58 ] ワークシートに関数を沢山入れると重くなる、という意味に解釈して VBAにて Range("B2").Value = DateDiff("yyyy", Range("A2").Value, Now) を必要行だけ繰り返す
660 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 19:54:25 ] >>643-644 単純に考えればいいってことがわかった気がする どうも
661 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 22:22:18 ] >>660 他のファイルとかに書いてあるのを呼ぶときはスコープが問題になることがあるから気をつけてね Public宣言付けたり、参照設定したりとか
662 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:58:30 ] ハイパーリンクに関する質問です。 例えばセルA1に何か文字列が入っている状態で セルA2に以下のシート関数が入っているとします。 =IF(A1="","",HYPERLINK("www.yahoo.co.jp/ ","Yahoo")) そうすると、セルA2には"Yahoo"の文字列が表示され "www.yahoo.co.jp/ "へのリンクが張られている状態です。 ここで、VBAにより、リンク先である"www.yahoo.co.jp/ "の文字列を 取得する方法はあるのでしょうか? セルA2に設定されている関数の文字列を解析するという手もあるとは思いますが、 それ以外で方法はあるのでしょうか?
663 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 14:09:25 ] あるんじゃない
664 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 14:14:34 ] >>658-659 とてつもなく軽くなりました、ありがとうございました!
665 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 16:45:42 ] >>664 >>658 の数式でも軽くなったの? もし重かったら揮発性関数のTODAY()のせいだな。 どこかのセル、たとえばF1にCtrl + ;で今日の日付を求めて =DATEDIF(A2,$F$1,"Y")とすれば数式でも軽くなるかもよ。
666 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 22:41:02 ] 1日か31日までの1ヶ月分のシートがあるとします それぞれのA1セルに日付をいれてます この1ヶ月分のシートの月曜日と火曜日だけを対象してなんらかの処理を行いたいときはどのような方法を取ればいいでしょう? よろしくお願いします
667 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 23:30:02 ] 1日か31日までってことは 1日の場合は前月の2日から一か月分って言う意味?
668 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 23:32:15 ] >>666 for each collectionでシートに対してループ回して その中でA1セルを調べて、曜日をチェック で、なんらかの処理を行えばOK
669 名前:666 mailto:sage [2009/11/18(水) 23:36:40 ] 失礼しました 1日から31日までの31シートです >>66 ぐぐってみます8
670 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 09:19:43 ] ワード・アクセスのVBAスレってありませんか?
671 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 09:24:37 ] pc12.2ch.net/test/read.cgi/tech/1170492587/ pc12.2ch.net/test/read.cgi/tech/1243095768/ pc12.2ch.net/test/read.cgi/tech/1168427595/ pc12.2ch.net/test/read.cgi/tech/1242136180/
672 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 11:42:02 ] ありがとうございます 検索しにくいっす・・
673 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 19:46:28 ] WordのVBAはどういうときに使うんだ?
674 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 20:13:37 ] 時節柄考えられるのは 年賀状宛名流し込み印刷かな
675 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 20:27:20 ] それVBAいらないやん
676 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 21:46:41 ] 差し込み印刷なんかExcel VBAでも同等のことするの簡単だよな。
677 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 21:49:26 ] A1セルに1月1日(月)のように入力しています ここから特定の曜日(火曜日と日曜日など)を区別して処理をおこないたいのですが どのような方法を取ればよいのかご教授ねがいます
678 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:10:09 ] >>677 おまえ666だろ 曜日を調べる関数を使う 関数名は自分で調べろ 以上
679 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 22:43:03 ] そもそも1月1日(月)って入力するのが間違いだ罠。 1/1と入力して表示形式をm月d日(aaa)にするだけだ。
680 名前:デフォルトの名無しさん [2009/11/20(金) 05:56:15 ] 質問 教えてえろい人 エクセルのVBAを使って、Outlookメールを複数の人に自動送信操作をさせたいです。 Aさん(○○○@○○.co.jp)にエクセルSheet1に記載された内容を送信し、 Bさん(XXX@XX.ac.jp)にエクセルSheet2に記載された内容を送信します。 後、CさんにエクセルSheet3を・・・という具合に・・・ 以上の事が、エクセルVBAを使って1回だけマクロを走らせるだけで、できるでしょうか?
681 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 07:34:40 ] ユーザーフォームのlistviewについて質問です listviewで縦横のスクロールバーのやり方が分からないのですが どうすればうまくいくでしょうか?
682 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 11:22:46 ] >>680 できるでしょうね
683 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 11:48:16 ] てst
684 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 21:52:10 ] >>680 ExcelのよりOutlookのVBA使ったらどうよ?
685 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:27:51 ] 同一セル内の数字を下のように並べかえたいのですがどうすればいいですか? 「333 「111 111 ⇒ 333 555」 555」 3桁ずつ切り分けて別セルに出力、ソートをかけて並べかえるというものは 出来たのですが、出来ればマクロの中だけで処理をしたいんです。
686 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:13:54 ] >>685 安直だけど、例えばセルA1を対象とするならこんな感じ Sub Macro1() a = Split(Range("A1").Value, Chr(10)) For i = 0 To UBound(a) - 1 For j = i + 1 To UBound(a) If a(i) > a(j) Then tmp = a(i) a(i) = a(j) a(j) = tmp End If Next j Next i Range("A1").Value = Join(a, Chr(10)) End Sub
687 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:17:11 ] こんにちわ。 質問をさせてください。 正規表現でのマッチパターンを用いて、 文字列をSplitして配列に入れたいと考えています。 以前javaで行った時は問題無く出来たのですが、 VBAの場合には上手くパターンを認識してもらえません。 下のコードで行ったのですが、”スペース”or","の1回以上の繰り返しでSplitを目的としています。 Sub testVBA() Dim Reg As Object Dim regPattern As String Dim reMatch As Object Dim i As Integer Dim STR As Variant Set Reg = CreateObject("VBScript.RegExp") Reg.Pattern = "[ ,]+" STR = Split("moug MOUG,モーグ,,もーぐ", regPattern) For i = 0 To UBound(STR) Debug.Print (STR(i)) Next End Sub 続きます。
688 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:17:20 ] javaのコードは下で行いました。 import java.util.regex.*; public class testJava { public static void main(String[] args) { Pattern pattern = Pattern.compile("[ ,]+"); String[] strs = pattern.split("moug MOUG,モーグ,,もーぐ"); for (int i=0;i<strs.length;i++) { System.out.println(strs[i]); } } } VBAで出来るのであればやり方を教えてくださいませ。 VBAでは対応していないと言う事でも構いません。 何卒よろしくお願いします。
689 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:18:42 ] すいません・・・。 モーグで質問しようとして準備していた文書を張ってしまいました。 ちなみにマルチポストではありませんので、よろしくお願いします。
690 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 00:40:26 ] >>687 VBAのSplitが正規表現を受付けないんじゃないの s = "123 456 789" ArySize = 0 Dim Ary() Set re = CreateObject("VBScript.RegExp") re.Pattern = "[ ,]+" Do ArySize = ArySize + 1 ReDim Preserve Ary(ArySize) Set Matches = re.Execute(s) If Matches.Count <> 0 Then v = Left(s, Matches(0).FirstIndex) s = Right(s, Len(s) - (Matches(0).FirstIndex + Matches(0).Length)) Else v = s End If Ary(ArySize - 1) = v MsgBox v Loop While Matches.Count <> 0 MsgBox Join(Ary, "$")
691 名前:687 mailto:sage [2009/11/21(土) 08:37:43 ] >>690 レスありがとうございました。 やはりVBSのオブジェクトですし、VBAのsplitが対応してないのは頷けます。 ソース例の提示、ありがとうございました。 自作関数で対応しようと思います。 重ね重ねありがとうございました。
692 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 10:02:39 ] excel2007 ブックに変更が有った時に保存するようにしたいのですが、変更が有ったか無かったかのチェックって どうするのでしょうか? 保存するのはThiworkbookの閉じる時で Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub の中に入れれば良いのでしょうけれど。
693 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:15:06 ] >>692 If WorkBook.Saved = False Then '保存処理 End If
694 名前:デフォルトの名無しさん [2009/11/21(土) 11:21:38 ] >>693 thxです!
695 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 12:50:52 ] WinVista-Excel2007 VBAでなくActiveXの問題かもしれませんが VBAの編集中に起きた問題なのでコチラで。 先にActiveXのボタンを配置しVBAで記述したSub{}を実行するという簡単なものを複数作成していたのですが 5・6個作り終えいざ実行してみようとボタンを配置してあるワークシートを開こうとしたところ ボタンは表示されずエラー(特定のエラー名表示されず)が起きExcelが強制終了してしまいます。 また新規作成でActiveXのボタンを新たに配置しようとしても同じ現象が起こりました。 アドインも複数導入している状態のためもしかするとVBAの可能性も捨てきれないのではと質問させて頂きました。 対処法・解決策はございますでしょうか? 宜しくお願いいたします。
696 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 13:18:23 ] >>695 俺は何に原因がわかるかは知らないし、 ActiveXに関係ない話だが俺の話を聞いてくれ Excel VBAでプログラム作ったんだよ。 クラスとかwitheventsとか使ってね。 そしたらなぜかExcelが強制終了するんだよw いや、しないときもある。するときもある。 自分のマシンでは強制終了するのに、他のマシンでは動くとか 新しくExcel作ってソース全部移植したら直るんだよ。 でもしばらくするとまた強制終了するようになるんさよ。 原因さっぱりわかんねw 俺は思ったね。Excelで無理しちゃいけねぇ。 単純なマクロ程度で終わらせておくべきだって。
697 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 13:42:52 ] >>695 起動時に強制終了するアドインでも作ったんじゃね?
698 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:51:42 ] >696 わかる
699 名前:685 mailto:sage [2009/11/21(土) 15:14:26 ] >>686 出来ました。 ありがとうございました。
700 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:15:33 ] パチンコ店 ATM8000台 IIJ社 今後4、5年で全国に www.jcp.or.jp/akahata/aik09/2009-11-14/2009111401_04_1.html 2chとパチンコ屋が無くなれば日本の景気は上向くかもな
701 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:55:37 ] >>695 >>696 俺も似たような現象で悩んでいる。 アドイン複数入れて、VBAでプログラム作って2〜3回動かすのには問題ないんだが しばらく使ってExcelを終了させると、 「問題が発生したため、Microsoft Office Excelを終了します。ご不便をおかけして申し訳ありません。」 とかいうふざけたエラーが出てくる。 俺の記憶が確かなら、 グローバル変数とか配列を大量に使いだした辺りでぶっ壊れた気がする。 メモリを開放しなきゃいけないとか、そういうことなのか???
702 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 19:05:46 ] エクセルのブック自体が変なメモリリークをしてぶっ壊れるってのをよく聞くぜ。
703 名前:デフォルトの名無しさん [2009/11/22(日) 00:08:50 ] >>680 MSのサイトにoutlook使ったメール送信のサンプル見つかると思うから それを参考にしたら? Accessに取り込んだ内容を登録したメアドにoutlook使って送信するPG を昔作ったことがあるから、出来るはずだよ ウイルス対策用(だろうなぁ・・)で1通単位でダイアログ押という仕様の 回避用のexeも見つかると思うから探してくれい
704 名前:デフォルトの名無しさん [2009/11/22(日) 14:29:02 ] excel 2007 xp sp3 Sheet1のA1にSheet2を参照とした「=SUM(Sheet2!$A$2:Sheet2!$A$3)」を入れる為のマクロ、 Sub test() Sheet1.Cells(1, 1).Formula = "=SUM(" & Sheet2.Cells(2, 1).Address & " : " & Sheet2.Cells(3, 1).Address & ")" End Sub ですと、Sheet1のA1には同一シートを参照とした「=SUM($A$2:$A$3)」となってしまいます。 "=SUM(" & Sheet2.Cells(2, 1).Address & " : " & Sheet2.Cells(3, 1).Address & ")"の部分を "=SUM(Sheet2!$A$2:Sheet2!$A$3)"にすれば解決するのはわかっておりますが、 どうしてもcellsを使いたく質問させていただきました。 解決策がありましたら、宜しくお願いします。
705 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 14:39:40 ] >704 突っ込み所がいろいろと・・・ 本題は数式のINDIRECTで解決しそうな気がするが?
706 名前:デフォルトの名無しさん [2009/11/22(日) 14:51:06 ] >>704 Sheet2.Cells(2, 1).Address が何を返すかを考えればいいんじゃね? Sheet2.Cells(2, 1).Addressって書き方をするのも珍しい.....
707 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:21:46 ] プログラミング経験なしで興味を持ち趣味で覚えたいと思い色々考えた結果、 javascriptとvbscriptを学ぼうと思いました。入門するために言語について探しているうちに、 下記のようなことがしてみたいと思ったのですが、出来るのかということと、 もっと適した言語があるのかをご存知であれば助言くださるとうれしいです。 過去の株価を利用したシミュレーションプログラム。 具体的には、データとして興味のある某銘柄の日柄(日別に始値、高値、安値、終値、出来高) を10年分オープンオフィスの表計算calcにyahooファイナンスから入手しました。 例えば、このデータを使って特定の日にその株を1000株買い、以降10円上がれば売り、売り値から 10円下がればまた買い、その買値より10円下がれば買い増し(仮の現金残高がなくなるまで)し、 それぞれは買値より10円上がると売る。 持ち株がなくなると、高値から1割下がったところからまた始める。 というようなことを繰り返すと、いくらの利益でいくらの買値ので どれぐらい持ち株になった状態かを結果としてだすものです。 javascriptやvbscriptでも出来るのでしょうか、それとももっと別のスクリプト 言語の方が適しているのでしょうか? よろしくお願いします。。
708 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:19:54 ] 何か変なヤツが迷い込んでるな〜
709 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:45:53 ] >>707 ようは売買システムのバックテストしたいんだろ できるよ というか言語で出来ることが制約されるケースは少ない もちろん得意、不得意はあるけど ってことで好きな言語使いな そして、このスレ以外に逝け
710 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 20:56:01 ] >>707 ExcelVBAがいいんじゃないか?
711 名前:701 mailto:sage [2009/11/22(日) 20:57:29 ] >>702 MSのバグかよ。 データはエクセルから取得して、処理は他(とりあえずDelphiを考えている)でやって、 結果をまたエクセルに返すかな・・めんどくさ・・
712 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 21:10:43 ] うっはっっw MSのバグ扱いかよw
713 名前:701 mailto:sage [2009/11/22(日) 21:26:24 ] >>712 じゃあ原因は何なんだよ
714 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 22:12:12 ] 確かに、ウィンドウズもエクセルもMSだな。 そう考えたら、世の中で起きるバグの50%はMSのバグと云っても過言ではない。
715 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 22:31:13 ] >>714 だがオレのPCのバグは99%オレのバグと言っても過言ではない 何度PCや開発ソフトのせいにして、その後取り下げたことか・・・
716 名前:デフォルトの名無しさん [2009/11/22(日) 22:41:02 ] >>715 wwwww
717 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:50:32 ] >>715 まぁ、シンタックスエラーなら仕方ないな。
718 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 10:52:45 ] >>510-544 お前らwwwww 今更だけどツボったwwwww そういうセンスがいるんだなコーディングって俺まだまだだわ。
719 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:34:44 ] >>707 15マソぐらいとちょっと高いけど、検証くんなどソフトもあるぞ
720 名前:デフォルトの名無しさん [2009/11/23(月) 15:05:25 ] excel2003 こんにちは For Nextを使い、 セルE5、E6、E7へそれぞれ「H線」「L線」「中心線」という文字を入れたいのですがどうすればよろしいでしょうか? For i = 1 to 3 Cells(5,i + 4) = ? next i
721 名前:デフォルトの名無しさん [2009/11/23(月) 15:30:19 ] x = Array("H線", "L線", "中心線") For i = 1 To 3 Cells(5, i + 4) = x(i - 1) Next i 初心者の発想はこんな感じ。
722 名前:720 [2009/11/23(月) 15:45:34 ] >>721 早速のご回答、誠に有り難うございます。 >>721 様のおかげで解決できましたので、心より御礼申し上げます。
723 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:22:36 ] 初心者に配列はいきなりきついんじゃないか?
724 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:31:36 ] >>720 For-Next使う必要ないじゃん For i = 1 To 3 Next i Range("E5").Value = "H線" Range("E6").Value = "L線" Range("E7").Value = "中心線"
725 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:07:02 ] >>723 配列無しで出来る? 俺には思いつかなかった
726 名前:デフォルトの名無しさん [2009/11/23(月) 17:21:26 ] >>724 よく見たら笑えるww三回回ってワン あれは配列のお勉強だったんじゃね?
727 名前:デフォルトの名無しさん [2009/11/23(月) 17:32:17 ] For i = 1 to 3 Cells(5,i + 4) = Iif(i=1,"H線",Iif(i=2,"L線","中心線")) next i 配列思いつかなくてもできるじゃん不気味で自分はこんなの書きたくないけど。
728 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 18:01:59 ] なんでループにすんの?
729 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 19:07:59 ] これはどうですか For i = 1 To 3 Cells(5, i + 4) = Choose(i, "H線", "L線", "中心線") Next i
730 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 19:14:19 ] x = Array("H", "L", "中心") For i = 1 To 3 Cells(5, i + 4) = x(i - 1) &"線" Next i
731 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 19:17:41 ] vbaにもchoose関数あるの初めて知ったわw
732 名前:デフォルトの名無しさん [2009/11/23(月) 19:29:47 ] 同じく、知らんかった。へ〜。。。
733 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 20:05:46 ] x = Array("H", "L", "中心") ReDim y(1 to 1 , 1 to 3 ) For i = 1 To 3 y(1 , i)=x(i - 1) &"線" Next i Range("E5:E7")=y もしもしからなので動くかどうかはしらね
734 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 21:37:37 ] >>724 お前>>718 だろ?w
735 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 21:44:02 ] >>720 >>529 流に書くとこうだな。 For i = 1 To 3 Next Range("E6:E8").Value=WorksheetFunction.Transpose(Split("H線 L線 中心線")) 下が普通だが。 For i = 1 To 3 Next Range("E6:E8").Value=WorksheetFunction.Transpose(Array("H線","L線","中心線"))
736 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 21:53:08 ] おまいらForがかわいそうとかNextが不憫とか思わんの?
737 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 21:58:09 ] >>721 の一部修正 x = Array("H線", "L線", "中心線") For i = 1 To 3 Range("E5").Cells(1, i).Value = x(i - 1) Next i
738 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 22:02:05 ] なんだChooseがVBAで使えるのかよ。 俺も知らんかったわ。
739 名前:デフォルトの名無しさん [2009/11/23(月) 22:11:42 ] 何もないのに回っているFor-Nextを思うと萌える
740 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 22:25:43 ] For i = 1 To 3 Next i Range("E6:E8").Value = [{"H線";"L線";"中心線"}]
741 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 22:28:06 ] Evaluateか、なるほどそれもあるな。
742 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 22:28:09 ] Sub 萌() Do Loop Exit Sub
743 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 22:33:23 ] >>739 何もなくても行数を稼ぐのが昔はプロの技と言われたもんだぜ
744 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 22:35:06 ] ボッタクリの末路は...
745 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 22:43:56 ] >>742 無限ループって怖くね? pc11.2ch.net/test/read.cgi/prog/1140435913/
746 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 00:22:51 ] i = 1 Loop1: If i > 3 Then GoTo Loop1_End Select Case i Case 1: Cells(5, 5).Value = "H線" Case 2: Cells(5, 6).Value = "L線" Case 3: Cells(5, 7).Value = "中心線" End Select i = i + 1 GoTo Loop1 Loop1_End:
747 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 14:22:47 ] Ruby 1.9 And Rails 3.0 www.slideshare.net/arrrrcamp/ruby-19-and-rails-30
748 名前:デフォルトの名無しさん [2009/11/26(木) 15:55:58 ] >>745 ずーっと萌え続けるからいいんじゃね
749 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 17:09:50 ] www.nikkei.co.jp/news/market/20091126m1ASS0ISS16261109.html
750 名前:デフォルトの名無しさん [2009/11/26(木) 17:39:38 ] まったくズブの素人です。 これからブイバ初めても間に合いますか? プログライミングをでけるようになりたいから 手始めにVBAから勉強するのか迷い中です。 何か時代は.NETでブイビーも.NET それじゃ〜ブイバももう手遅れなんでしょうか?
751 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 17:47:16 ] 373 デフォルトの名無しさん [] 2009/11/26(木) 17:41:52 ID: Be: パイソンって強そうな名前ですが、本当につおいのですか? でもちょっとHでもありますが。。
752 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 18:39:28 ] ↑ 暇人
753 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 19:17:14 ] >>750 プログラミング云々以前に日本語を正しく書けるようにしろよ 「プログライミング」とか「ブイバ」とかさ、、、w それに間に合うとか間に合わないかとかの問題じゃないと思うよ。 Excelでやらせたい事があるんだったらVBAだろうし。
754 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 20:41:09 ] >>753 あっプログラミングの間違い、頭ではプログラミングつって 書いた覚えなんだけんど。 そんでブイバって読むんとちゃうんかいな。長いでど ブイビーエーとでも言うんですか? 田舎もので素人だもんで、そげんこつも誰も教えてくれんから、 愛嬌ということで。。
755 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 20:49:00 ] 972 デフォルトの名無しさん [sage] Date:2009/11/23(月) 17:09:32 ID: Be: ID強制になるだけで静かになるよ 973 デフォルトの名無しさん [] Date:2009/11/23(月) 18:02:02 ID: Be: その変更はキミに任せるから提案してくれ。 974 デフォルトの名無しさん [] Date:2009/11/23(月) 18:18:58 ID: Be: 反対するのは荒らしたい奴だけだから強行しちゃって良いよ
756 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 21:23:18 ] ↓うーんセフセフのAA
757 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 21:27:13 ] ↑そのAA持ってないんですいませんがw Excel2007 テキストボックスについてですが。 MultiLineをtrueに、ScrollBarsをfmScrollBarsBoth にセットして、データの表示(更新)用に使っています。 表示する時にマウスのホイールボタンでスクロール出来るようには 出来ないのでしょうか?
758 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 01:08:03 ] yes we can
759 名前:720 [2009/11/28(土) 11:55:34 ] EXCEL 2007 こんにちは マクロを使い、オートフィルで連続データを作成しているのですが、 書式もオートフィルされてしまい困っています。 値だけをオートフィル(連続データ)するやり方があればご教授ください。 宜しくお願いします。
760 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 12:12:04 ] .value
761 名前:デフォルトの名無しさん [2009/11/28(土) 12:18:21 ] マクロの記録でやってんのかな 試したけど無理っぽいから、あきらめてきちんとコードを組む
762 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 12:40:59 ] 構文 Object.AutoFill(Destination, Type) 設定項目 内容 Object Rangeオブジェクトを指定 Destination オートフィルの書き込み先のRangeオブジェクトを指定 Type 入力されるデータの種類を指定。XlAutoFillクラスの定数を指定 XlAutoFillクラスの定数 ・xlFillDefault:標準のオートフィル ・xlFillSeries:連続データ ・xlFillCopy:コピー ・xlFillFormats:書式のみコピー ・xlFillVaules:書式なしコピー ・xlFillYears:年単位 ・xlFillMonths:月単位 ・xlFillDays:日単位 ・xlFillWeekdays:週日単位 ・xlLinearTrend:加算 ・xlGrowthTrend:乗算
763 名前:デフォルトの名無しさん [2009/11/28(土) 13:02:02 ] でも書式コピー梨、連続(加算)は出来ないっぽいよ
764 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 16:03:46 ] たぶんそうだよねー オートフィルもExcelマクロっぽくて悪くないと思うから とりあえずオートフィルして書式は別に直すとか
765 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 18:56:46 ] 質問です。 Excel VBAからワードや他のエクセルファイルの操作ってできますか? やりたいこととしては、VBAを仕込んだxlsファイルに、 置換したい文章を記述し(置換前と置換後をシート内に記述)、 指定したフォルダ内(サブ含む)にあるエクセルファイルやワードファイルに 書かれている文章を変換したいのです。 その際、「この文章を変換しました」みたいなログも出せたら最高なのですが、 いい方法ってありますか?
766 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 18:58:00 ] yes we can
767 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 19:10:59 ] >>765 VBAから他のファイルを操作できる ログは画面にだすならmsgboxでいいでしょ フィルに書き出したいならテキストファイルでもオープンして書き出せばよい
768 名前:759 [2009/11/28(土) 20:18:10 ] >>761 >>763 >>764 ご回答、ありがとうございます。 やはりむりですか・・・ オートフィル以外でいくつかつくったのですが、スピードを重視したくオートフィルにこだわっていました。 やりたいことは、A1の値を基にB1:B100までA2で指定された増分値に沿った降順連続データをつくりたかったのです。 考えついたものを下記に貼りますので、改善点やより良いコードがありましたらご教授ください。 宜しくお願いします。 Sub test1() 基準値 = Cells(1, 1).Value 増分値 = Cells(2, 1).Value For i = 0 To 99 Cells(1 + i, 2).Value = 基準値 基準値 = 基準値 - 増分値 Next i End Sub Sub test2() 基準値 = Cells(1, 1).Value 増分値 = Cells(2, 1).Value For i = 0 To 99 Cells(1 + i, 2).Value = 基準値 - i * 増分値 Next i End Sub Sub test3() 増分値 = Cells(2, 1).Value For i = 1 To 100 Cells(i, 2).Value = WorksheetFunction.Sum(Cells(1, 1).Value, Cells(2, 1).Value - i * 増分値) Next i End Sub
769 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 20:28:08 ] >>767 具体的にはどのようにするんでしょう・・・<ファイル操作 また、AAAという単語はヒットしたので置換したけど、 BBBという単語がない場合、AAAだけ置換したよ、というログとかも取れますか?
770 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 21:01:43 ] Excel VBA WEB連携術って本みつけたんだけど誰かレビューしてくれませんか? ちなみにieを使ったシステムへの自動化を考えてます。 それの助けになるか聞きたいです。
771 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 21:08:53 ] >>770 おし引き受けた! レビュー: 読んだことないけど多分読まないよりましじゃね?
772 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 23:39:43 ] >>770 何をやりたいのかもうちょっと詳しく 自動化って言えば聞こえはいいけど、よくよく話を聞いてみると たいていは株とかFXとかで楽して儲けたいだけみたいなのが多い
773 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 23:44:31 ] >>769 例えば、マクロ記録で目的のファイルを開いて、できたブックからシートを自分のシートに移動する で、移動してきたシートをコピーしといて、どちらか一方を置換する あとは置換後に双方を比較して、違う部分を表示するとか 他にも方法は山ほどある まずは自分でアウトラインを固めて、ポイントを絞って質問してくれないと回答しようが無い
774 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 23:45:54 ] >>772 まぁ株なりFXの自動売買だろ そして、この程度も自分で調べてできない人間はロクなシステム組めないに1000ガバス
775 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 23:57:41 ] >>773 すいません、大雑把にしか書いてなかったので答えることもできなかったですねorz 仕様としてはこんな感じです。 VBAを記述したExcelに、置換前・置換後を記述したの置換リストをシートとして作成しておきます。 [VBA記述xlsファイル上の置換リスト] 置換前 | 置換後 ------------------ ABC | XYZ log-in | log in login | log in そのシート上にフォルダを指定するセルを用意し、ボタンを押す(マクロ実行)ことで、 指定されたフォルダ(サブフォルダ含む)にあるxlsファイル、docファイルを参照。 ヒットしたファイルの中に、置換リストの置換前と同じ文章があった場合、 ログとして「(ファイル名)▲▲を●●に置換」のような情報を出力し、置換を行います。 うまく纏まっていないかもしれないですが、このような仕様でつくりたいと思っています。 ググってみた感じ、ワードファイルの文章置換を行うロジックはあったのですが、 「本当に置換を行ったか」が取得できなさそうな感じがして・・・。 (▲▲があれば●●に置換する、という処理なので、▲▲がなくても変換せずに処理が終わるはず。変換したか?という状態が取れない感じが)
776 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 00:06:24 ] このスレはプログラマにとっては有益なスレで クレクレ君には無益なスレです テンプレ参照
777 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 01:18:29 ] プログラマにとっては有益 ← ここ、笑うところ?
778 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 01:22:35 ] ゆとりには笑うとこまで指示してやらんと
779 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 02:30:54 ] OSはXP バージョンは2002です。 単刀直入に聞きます 「ユーザーフォーム上に設置したスプレッドシート」 これをエクセルのシートのように読み込む(ActiveSheet.Range(Cells(1, 1)〜のような書式)ことは可能でしょうか?
780 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 10:31:56 ] >>779 可能
781 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 14:03:26 ] vistaを使ってると、IE7がプリインストールしてあるためにウェブクエリ取得やIEの操作などが正常に作動しないことがあります。 そこで、windows7にはXPモードがあると聞きました。そのXPモードで使われるIEがバージョン6なのかが気になっています。 IE6を使えるなら早めにwindows7搭載のPCに買い替えるつもりです。どうかお教えください。
782 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 14:41:08 ] IE6を使える
783 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 14:46:46 ] まずIEはバージョン6 注意事項としてXP Modeは Windows 7 Professional 以降で搭載される。 一般のメーカー製 Windows 7 プレインストールPCはほとんどが Home Premium でXP Modeは搭載されてないので注意 あと、XP Modeといっても特に他アプリと連携するような場合には 正常に動作するか分からないのでできれば事前にどこかで確認してみることをすすめる おそらく統合機能ってのを使わなければ、ほぼ問題ないとは思うけど、統合機能使わないと XP Mode の利点はあまりないと思うし
784 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 15:05:34 ] バーチャルPC使えよ
785 名前:781 mailto:sage [2009/11/29(日) 17:48:41 ] やはりMSなりに問い合わせたほうが無難なのですね。 バーチャルPCについて調べてみましたが、これならvistaでもxpを動かせるのですね。インストールして試してみます。 ありがとうございました。
786 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 15:26:51 ] Excelの関数の質問なのですが 入力した数字が6〜10のとき○、11〜15のとき◎ A B 1 6 ○ 2 11 ◎ という風に○や◎を表示させたいのですが、関数がどうしてもわかりません。 どなたかよろしくお願いいたします。
787 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 15:33:26 ] VBAと関係ないね
788 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 15:52:52 ] すみません、間違えました。
789 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 19:19:49 ] Function Maru(n) Maru = "" If (6 <= n) And (n <= 10) Then Maru = "○" If (11 <= n) And (n <= 15) Then Maru = "◎" End Function
790 名前:デフォルトの名無しさん [2009/11/30(月) 22:39:34 ] リストボックスで数値の項目を右詰めにしたいんですが、どうすればよいでしょうか? 2007です。