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/
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/