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/
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からデータ取得なんてできるわけないし、 ここにソースを貼ってもらっても使いこなせるわけ無い むだ