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/
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ループの中で書き換えるのは可能な限り避けた方がイイ 何回回ったかわかんなくなっちゃうよ