1 名前:デフォルトの名無しさん [2007/05/27(日) 00:06:58 ] ・まじめにExcelの機能を追及してみようと思う奇特なひと ・スキルがないのに無理やりVBAの仕事を押し付けられた普通のひと ・VBAなんていまさらやりたくないのに業務で仕方なく使っているひと ・とにかく漏れにこんな仕事まわすなと怒っているひと そんなM$大好きなひとからアンチM$なひとたちまで幅広くカバーするスレです 前スレ pc11.2ch.net/test/read.cgi/tech/1168308855/
508 名前:デフォルトの名無しさん [2007/08/01(水) 19:06:24 ] CSVをADOの「Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=〜」で扱うのは office2000以上だと標準で利用できますか? 参照設定の設定も不要でいいんでしょうか?
509 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 19:07:12 ] 当然参照設定は必要
510 名前:デフォルトの名無しさん [2007/08/01(水) 19:15:24 ] >>509 マジ?なんも設定しなくても使えたんだけど・・・ ちなみに何を設定すればいいんですか?
511 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 19:18:37 ] もしかしてCreateObjectで参照してる?
512 名前:デフォルトの名無しさん [2007/08/01(水) 19:28:25 ] Private Sub CommandButton1_Click() Set rs = CreateObject("ADODB.Recordset") Con = "" Con = Con & "Driver={Microsoft Text Driver (*.txt; *.csv)};" Con = Con & "DBQ=C:\Documents and Settings\Administrator\デスクトップ\新しいフォルダ;" strSQL = "select * from test.csv" rs.Open strSQL, Con, 0 '0=adOpenForwardOnly cols = rs.Fields.Count Do Until rs.EOF Line = "" For i = 0 To cols - 1 Line = Line & rs(i) & vbTab Next Debug.Print Line rs.MoveNext Loop End Sub
513 名前:デフォルトの名無しさん [2007/08/01(水) 19:29:32 ] こんなん書いて 今家でも試したけど出来た CreateObjectだね CreateObjectだと参照設定しなくても出来るということでおk?
514 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 20:05:43 ] >>506 www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html ググったら見つけました
515 名前:デフォルトの名無しさん [2007/08/01(水) 22:14:09 ] エクセルを開こうとするといきなりインストールしだしてエラー表示がでました。 プロパティを開いてプログラムを見ると不明なアプリケーションとなっております。 これは何故でしょう? またこれを解決する方法はどうすればいいのでしょうか?
516 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 22:17:30 ] >>513 そうだよ。それが遅延バインディング。 欠点として、参照設定してきちんと型を指定して使う早期バインディングより 速度が遅いと、確かヘルプに書かれているはず。
517 名前:デフォルトの名無しさん [2007/08/01(水) 22:18:02 ] 初心者です。 if,do,for等の分岐式や繰り返しコードを使うと必ずバグが出ます。 バグが出ないように皆さん何か心がけている事ってありますか?
518 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 22:21:59 ] 参照設定しないと遅いのもあるけど、コーディングしにくくない?
519 名前:デフォルトの名無しさん [2007/08/01(水) 22:55:03 ] 参照設定ってexcelファイルにするの? excel環境にするの?
520 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 23:05:13 ] ブック単位だな。 ちなみに、普通のVBだとプロジェクト単位。
521 名前:デフォルトの名無しさん [2007/08/01(水) 23:47:31 ] >>515 VBA関係ねえ
522 名前:デフォルトの名無しさん [2007/08/01(水) 23:53:15 ] >>520 d
523 名前:デフォルトの名無しさん [2007/08/02(木) 07:40:47 ] ADOで csvテーブル(Microsoft Text Driver接続)と Excelシートテーブル(Microsoft Excel Drive?接続)の SQLでの連結ってできる?
524 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 18:21:00 ] VBAでListViewとかTreeViewを組み込んで OLEDragDropとか使うのは、 VBがある環境じゃないとライセンス違反とか聞いたんだけど、ほんと? なんかMSのページ見に行ってもどこに情報があるのか良くわからん。。 使えるのに使っちゃダメとかなんだったらひどい話だよなあ。
525 名前:デフォルトの名無しさん [2007/08/02(木) 18:24:58 ] vbaでSQLite使う方法ある?
526 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 18:28:46 ] あるよ
527 名前:デフォルトの名無しさん [2007/08/02(木) 18:33:07 ] どうやるのか教えて
528 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:21:54 ] >>524 > ライセンス違反とか聞いたんだけど、ほんと? うん、ライセンス違反だよ ListViewとかTreeViewはVB6ランタイムを入れるとVBAからも使えるようになるが、本来VB6ランタイムというのは有料ソフトの付属品 VB6で作ったソフトを動かす為に必要なので、特定条件下で無料再配布が許可されているが、当然、使用はライセンスに縛られた範囲になる で、使用して良い範囲が、VB6を持ってない人(VB6ランタイムを借りてる人)ではVB6で作られたソフトからの利用のみで VB6を持ってる人(VB6ランタイムを購入した人)は自分の環境内で好きなように使って良くて VB6Proなどを持ってる人(VB6ランタイムとその再配布権を購入した人)は自環境内で好きなように使って良いのに加えて 自作ソフトに同梱して配布することも出来る 無料で配布されているとは言え、VB6を持ってない人には有料ソフトの一部を条件付きで貸してるだけということをお忘れなく > 使えるのに使っちゃダメとかなんだったらひどい話だよなあ。 世の中、出来るけどやっちゃいけないことで溢れかえっているけど、こんな事にも気付いてないほどお子ちゃまなの? おそらくピッキングが出来れば君の家にある君が所有権を持つ物品類を盗むことも「出来ること」だが この「出来ること」をやっちゃダメだと法的に定めるのはひどい話なのかな? 君の所有物に対して、所有権において他者の使用を制止・制限出来るのと同じで MSの著作物に対しても、著作権において他者の使用を制止・制限してるだけのことなんだけど
529 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:47:51 ] >>528 > 特定条件下で無料再配布が許可されているが、 おー、そういうからくりなのか。ぜんぜん知らなかった。 勉強になるなあ。ありがとう。 > 世の中、出来るけどやっちゃいけないことで溢れかえっているけど、 > こんな事にも気付いてないほどお子ちゃまなの? お子ちゃまレベルなのは認めるよ。 趣味でスクリプト組んでいるんであって、 プロで開発やってるわけじゃないもん。 もうちょっと「だめであること」がわかりやすくなっていても いいんじゃないか?と思ったよ。だめならだめでさ。
530 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 21:56:24 ] それを言うなら鍵あいてた家のトイレでウンコしていいかとかそんな所だろ。 どっちもどっちだし窃盗みたいにものすごく悪いって程ではないけど、一応ダメ。 見つかって話がこじれたり目に余るような有様だと裁判沙汰にもなるわなw
531 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:37:16 ] >>529 技術や知識レベルとかプロ意識の問題じゃなかろう 約束やルールを守れないのは子どもだってこと ただまあ524がそこまで言われるようなことかと言うと 「そういうもんなんだから諦めな」で済むような気もする
532 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 00:20:16 ] そんなことよりvbaからSQLite使う方法教えろ
533 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 04:43:19 ] ググれカス!
534 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 21:25:19 ] vba sqlite odbc でぐぐって判らんかったら諦めれ
535 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 21:26:25 ] ブレークポイントでプログラム中断した時、変数にマウスポインタあてると 内容が表示されるのが表示されなくなりました 設定とかいじってないのに何ででしょう?
536 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:14:43 ] VBAを記述中にカーソルが勝手に戻ったり、コメントを記入中に勝手に変換確定されるのですが どうすれば回避する事が出来るのでしょうか? 例えば Sub | ←このような時に Sub| ←このようにカーソルが戻ってしまうんです。 わーくしー ←このように入力中に勝手に確定されるのです。 よろしくお願いします。
537 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:29:04 ] スペースが全角だから自動で半角になってるんじゃないか
538 名前:106 mailto:sage [2007/08/04(土) 07:49:36 ] 'Sub |
539 名前:デフォルトの名無しさん mailto:age [2007/08/04(土) 10:42:33 ] 助けてください。2列目以降をソートしたいのですが、 Range("A1").Sort _ Key1:=Columns("B") _ , Order1:=xlAscending _ , Header:=xlGuess _ , Orientation:=xlTopToBottom だと、 実行時エラー'1004' RangeクラスのAutoFilterメゾットが失敗しました。 Range("A1:L100").Sort _ Key1:=Columns("B") _ , Order1:=xlAscending _ , Header:=xlGuess _ , Orientation:=xlTopToBottom だと、 エラーはでませんが、まったくソートがされません。 F8を叩くと、セルはA1を指しています。 同じファイルをマクロで実行したソースを貼っても駄目でした…。 よろしくお願いします。
540 名前:539 mailto:age [2007/08/04(土) 10:45:32 ] ↑すいません。 ○RangeクラスのSortメゾットが失敗しました。 ×RangeクラスのAutoFilterメゾットが失敗しました。 です。
541 名前:デフォルトの名無しさん [2007/08/04(土) 15:47:25 ] 決められた範囲内(セル内)のデータをcsvファイル形式でセーブしたいのですが… どんなプログラムになるでしょうか?
542 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 16:10:48 ] >>542 マクロ記録でSaveAs...してみれば判ると思う。
543 名前:542 mailto:sage [2007/08/04(土) 16:11:49 ] >542は>>541 ね。
544 名前:536 mailto:sage [2007/08/04(土) 19:19:49 ] 最初にOption Explicitを入れたので、原因はそれっぽいのかな。 まだ、検証してませんが
545 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 19:51:05 ] >Option Explicitを入れたので、原因はそれっぽいのかな。 Option Explicitは常に入れているが、そんな話聞いた事が無い。
546 名前:デフォルトの名無しさん [2007/08/04(土) 23:56:25 ] Sheet1 □ りんご □ みかん □ いちご □ ぶどう Sheet2 ┌─────┐ │りんご │ │みかん │ └─────┘ 図のようにシート1にあらかじめ入力されているデータを選択し シート2にあらかじめ作成しておいた表の特定のセルに自動転記され 表が完成する。 という動作を行いいたいのですが まずシート1でチェックボックスで選ばれた項目だけを 表に反映させるというのがわからないです。。
547 名前:デフォルトの名無しさん [2007/08/05(日) 00:43:42 ] くそ天皇 くそ天皇 くそ天皇 くそ天皇 いい加減死ねっつってんだろ屑ニートくそ天皇が 相変わらず病的な粘着っぷりだな屑ニートくそ天皇が 毎日毎日毎日粘着出来て良いでちゅねくそ天皇 くそ天皇さっさと死にやがれゴミが 東京に在住している精神病珍米糞ニートくそ天皇君の末路 さっさと精神病院逝くか首吊って逝くか選べや糞天皇が 早く死ねよ糞ニート天皇が 粘着精神病屑ニート天皇君は自らニートくそ天皇であると公言しました さっさと死ねやくそ天皇が 早く死ねっつってんだろ屑ニートくそ天皇が お前みたいなゴミクズ天皇は息してるだけで空気が汚れるからさっさと死ねや とっと死に晒せや糞ニート天皇が
548 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:09:41 ] >>546 Sheet1.CheckBox1でプロパティ値にアクセスできるし changeイベントもあるからお好きなように
549 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 16:42:45 ] タスクみたいなタイマーで2時間に1回プログラムを実行させるにはどーすればいいの?
550 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 20:56:56 ] タスクを使えばいいんじゃね?
551 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 03:44:01 ] OSはVistaです。 エクセルで完成させた表を印刷しようとするとエラーになります。 通常のインターネットなどのページを印刷するのは可能なのですがエクセル・ワードだけはエラーがでてしまいます。 パソコンでプリンターの状態を見たら「アイドル」になったままで何をしても変わりません。 だれか助けてください。
552 名前:551 mailto:sage [2007/08/06(月) 03:45:26 ] スマソ。 板違いだった。 総合相談所スレにいってきます。
553 名前:デフォルトの名無しさん [2007/08/06(月) 15:13:05 ] お世話になります。 accessからodbcを利用してプロシージャを実行させようとしているのですがエラーになって実行できません。 --ソースの一部---------------------------------- Dim tmp_qd As QueryDef SQL = "exec プロシージャ_hoge" tmp_qd.SQL = SQL Set tmp_rs = tmp_qd.OpenRecordset() ------------------------------------ vbは良く分からない(初めて3日くらいです)のでこれでソースが足りるか分かりませんが、 上記の「tmp_qd.OpenRecordset()」でエラーが発生しています。 内容は 「 ODBC--呼び出しは失敗しました。 」 とダイアログに表示されます。 エラーの原因がなんだかわかりません。 お手数ですが、お願いいたします。
554 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 15:28:04 ] 動いたら奇跡
555 名前:デフォルトの名無しさん [2007/08/06(月) 15:53:57 ] >>554 他のコードです。 Dim db As Database Dim qd As QueryDef Dim rs As Recordset Set db = CurrentDb() qd.Connect = glcnst_ODBCConnect qd.ReturnsRecords = True qd.ODBCTimeout = 0 SQL = "exec pro_hoge" qd.SQL = SQL Set rs = qd.OpenRecordset() 何か文法等間違っている箇所があるのでしょうか? お願いします。
556 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 17:39:57 ] currentdbはaccessでしか使えないし sqlが何かわかってないし どこが間違ってるかとかいうよりも ちょっとずつしっかり勉強したほうがいいよ
557 名前:デフォルトの名無しさん [2007/08/06(月) 18:58:04 ] >>556 了解しました
558 名前:デフォルトの名無しさん [2007/08/06(月) 19:44:23 ] 初めてカキコします。 スキルもないのに仕事を押し付けられた入社1年目の者です。 日報なのですが、日付を入力したら、その日の売上、仕入を表示できるようなプログラムはあるのでしょうか? ご教授お願い致します
559 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 19:47:29 ] 作ろうと思えば作れる。 ここは、そういうものを作る側のスレッド、板。
560 名前:558 [2007/08/06(月) 20:37:56 ] >>559 期限はないので勉強して作ってみます。 ありがとうございます
561 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 20:49:01 ] そんなん関数でやればいいじゃない
562 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:56:57 ] >>561 >日付を入力したら、その日の売上、仕入を表示できるようなプログラム を関数で出来んのか?
563 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:20:15 ] >>562 横からだけど 関数で引っかかるのはどこだろう? セルに日付を入れると別のシートにある売り上げと仕入れ VLOOKUPでは駄目なのだろうか?
564 名前:デフォルトの名無しさん [2007/08/06(月) 22:54:58 ] VBAを使って自分自身にジェクトのロック・アンロックをかけたいのですが 可能ならば教えてください
565 名前:デフォルトの名無しさん [2007/08/06(月) 22:55:40 ] >>564 プロジェクトのロック・アンロックでした
566 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 09:43:03 ] >>564 可能だけど、それを自分で調べられないレベルの奴は プロジェクト自体やモジュールをコードで弄るのはやめた方がいい あと、やるならプロジェクトへのアクセス許可出さないとだめだからね
567 名前:558 [2007/08/07(火) 19:02:10 ] VLOOKUP関数で出来ました! 検索値を日報の日付の部分にしたら解決しました。
568 名前:デフォルトの名無しさん [2007/08/07(火) 19:12:56 ] 初めて質問させていただきます。 XML文書の妥当性チェックをXMLスキーマで行うため、以下のようにXMLSchemaCacheにaddしようとしたところ、Aの段階でエラーが発生します。 @スキーマキャッシュオブジェクトの生成 Dim objScm As New MSXML2.XMLSchemaCache Aスキーマをキャッシュに追加 objScm.add "urn:bookList","C:\book.xsd" 実行時エラー スキーマのルート要素に対する定義が無効です。 どのようにすれば@ITの記事を参考にしてやっているのですが、どのようにして回避できるのかわかりません。環境はExcel2000, MSXML2.6を使用しています。よろしくお願いします。
569 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:55:54 ] MSXML2使うなら、これはExcelとは関係ないものなのでスレ違い
570 名前:デフォルトの名無しさん [2007/08/07(火) 21:22:30 ] >>569 小さい野郎だな、静かにしろ
571 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:47:36 ] 何でも斜に構えて、規律なんて糞食らえ、俺は大きな人間さ というスタンスで居るのがカッコイイと思ってる年頃ってあるよねw
572 名前:デフォルトの名無しさん [2007/08/07(火) 22:00:20 ] ゆとりはもう一度文章を読み返してから書き込もうぜ
573 名前:568 [2007/08/07(火) 22:01:44 ] >>569 XML総合と迷ったのですが、Excelマクロを用いてのXML操作ということで、ここはひとつお目こぼしを。 >>570 わたしのほうもスレ違いと言われて当たらずとも遠からずかもしれません。原因の一端は確実にわたしにありますので、あまりお責めにならないよう。 >>571 そういう時期は確かにありました。実際にカッコイイことはないと思うのですが、根拠レスに自分で自分をカッコイイと思える平和な時期だったのだと思います。
574 名前:デフォルトの名無しさん [2007/08/07(火) 22:18:13 ] >>566 そー言わずになんかヒントちょうだい
575 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:25:08 ] >>573 だまってろカスブタ
576 名前:デフォルトの名無しさん [2007/08/07(火) 23:25:53 ] Dim a, b dim r as range a = Split(Replace(r.Value, "@", " "), " ") b = Split(Replace(r.Value, "a(0)", "*"), "*") bはaで分割した最初の文字列を*に変換、*で分割といった感じにしたいのですが、 素人でよく分りません。よろしくお願いします。
577 名前:デフォルトの名無しさん [2007/08/07(火) 23:30:25 ] "a(0)" -> a(0) じゃだめか?
578 名前:デフォルトの名無しさん [2007/08/07(火) 23:44:11 ] >>577 おお、できましたぁ!!!ありがとうございます〜ペコリ
579 名前:デフォルトの名無しさん [2007/08/07(火) 23:56:01 ] ただ、それだったら a = "*" & mid$(r.Value,instr(r.Value,"@"))とかのが何ぼか軽いんじゃない? (注:offsetの誤差は考慮してない)
580 名前:デフォルトの名無しさん [2007/08/07(火) 23:57:13 ] あ、*でsplitしてるのか、ごめん勘違い
581 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 09:40:48 ] >>573 > Excelマクロを用いてのXML操作ということで それはVBAの範疇じゃない VB言語で[A]pplication(Excel)を操作するからVBA これからAを取ったらVBなので、Excel付属のVBE使ったとしてもVBの分野
582 名前:573 [2007/08/08(水) 12:00:35 ] >>581 わかりました。他スレで質問させていただくことにします。お騒がせしました。
583 名前:デフォルトの名無しさん [2007/08/09(木) 21:09:41 ] excelのvbaを使ってます。 ユーザーフォームで作成した複数のtextboxについて、コードを入力するとき 例えば if textbox1 = 〜 then end if if textbox2 = 〜 then end if if textbox3 = 〜 then end if などとせず textboxの連番をうまいこと使ってまとめることってできないでしょうか?
584 名前:デフォルトの名無しさん [2007/08/09(木) 21:21:27 ] あらかじめオブジェクト配列にでもセットしておけば?
585 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 21:21:57 ] >>583 〜の内容とThenからEnd Ifの間次第なのに肝心な所を略してどうするの。 for i = 1 to 3 if Controls("textbox" & i) = 〜 Then Stop next こういう事?
586 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 02:31:18 BE:703008239-2BP(218)] SolverAdd CellRef:=constraintCell.Address, Relation:=2, FormulaText:="1.00" これで 拘束条件が 追加されないびょん しかも、あるブックだけ・・・ どいうこと?
587 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 02:35:35 BE:390559853-2BP(218)] しかも、同じブックの その他のSolverAddは 動作するし・・・ なんなの? いやがらせ? > Excel 2003 For Each r In changeRange SolverAdd CellRef:=r, Relation:=3, FormulaText:=0.0002 SolverAdd CellRef:=r, Relation:=1, FormulaText:=0.9998 Next r は 動作するw
588 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 04:29:33 BE:1458089478-2BP(218)] "1.00" の代わりに "R1C10" にすると追加されたw なんで0.0002や0.9998は問題ないのやら?w
589 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 04:44:49 BE:104149722-2BP(218)] "1.00"の代わりに 1 や 1# でも追加されないびょんw 0.999は追加されたw 変な ブックw
590 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 04:48:30 BE:416596782-2BP(218)] "1.00"の代わりに"0.999"にしたら追加されたw そんなに 1が嫌いなのか!
591 名前:デフォルトの名無しさん [2007/08/11(土) 01:19:24 ] あまりにも単純な質問で申し訳ありませんが質問させてください。 VBAでユーザーフォームのテキストBOXにセルの内容を表記 させる事は普通には出来るのですが、セル内容が時刻の場合 上手くいきません。 セル(A1)がActiveとして10:00と入力されています。 それをtexttbox1に表記させるため Userform1.textbox1.value = Activecell とすると、表示されるのは「0.416666666666667」という不可解な 表記なんです。 「10:00」と表記させる方法をご教示下さい。
592 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 01:46:00 ] >>591 Userform1.textbox1.value = Activecell.Text
593 名前:デフォルトの名無しさん [2007/08/11(土) 02:59:16 ] >>592 > >>591 > Userform1.textbox1.value = Activecell.Text ありがとう御座います。セル側にtext指定するとは気がつきません でした。本当に助かりました。
594 名前:デフォルトの名無しさん [2007/08/11(土) 17:42:24 ] すみません、質問です。 マクロの閲覧などをロックしても、ある種のツールで解除出来たりしますが これを回避する方法は、他のツールソフトなどを利用するしか、 手段は無いのでしょうか? その場合、出来ればフリーで良いツールは有りませんか?
595 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 18:00:28 ] 変数名をランダム&グローバルにして クラス使わずすべて標準モジュールに記述 標準モジュールもランダムな名前で100個ぐらい作る 関数も全く関連性のないものを各々10個ぐらい用意 さらに関数もgoto文多用で1000ステップ このくらいやれば自分も解析する気にならない マジおすすめ
596 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 18:54:45 ] >>594 VBAプロジェクトの保護は、初心者の不用意な改変を防ぐ「ロック」であって 閲覧や漏洩を阻止する「セキュリティー」ではありません そもそも、Excelは開発環境ではないのでソースの漏洩を防止しようとすること自体が間違い Microsoftは強固なセキュリティーを付けることよりも、万が一パスワードを紛失しても、 膨大な時間を掛けて製作したマクロコードを失う結果に繋がらないように配慮しました 開発環境ではないExcelでは、ソースを書いたモジュール自体が、パスを付ける対象に組み込まれているので モジュールのエクスポートなどをしていない状態でパスを紛失してパス外しが出来なかったら コードを全て失うことになってしまうからね その結果、普通にパスを掛けただけはもちろん、パス解除防止ツールでロックしても、 ちょっと面倒になるだけでパス外し自体は出来るようになっています 君が言う「ある種のツール」はコレ( ttp://passmaster.fujigoma.com/passmas/index.htm ) じゃないかもしれないけど、コレで「VBAパスワード保護」した程度ならちゃんと外せます 因みにコレくらいならVBAでも作れますよ そして、コードが漏洩しない形でアドインなどを作りたい人には専用ソフトを用意しています (Visual Studio Tools for Office) あとは、専用ソフトを使ってでもセキュリティーを付けたいか、専用ソフトを使うくらいなら、 解除できる状態でも良しとするかはあなた次第なので、どうぞお好きなように
597 名前:デフォルトの名無しさん [2007/08/11(土) 20:41:21 ] 質問させてください。 会社で、エクセルを使って報告用紙の作成を命ぜられたのですが、 エクセルの知識は一般常識的なものしか持ち合わせていないので、 どなたかご教授願います。 C1の値が、A1〜A5のいずれかの値と一致したならば、 E1に、その一致したA1〜A5のいずれかのセルの右隣のセルに入力されている値(B1〜B5のいずれか) を表示する。 というような内容の関数を作りたいのですが、ネットで検索して1日悩みましたが、結局分かりませんでした。 私の予想では、IF関数とOR関数を使うような気がするのですが。。。 ちなみに関数は今まで使ったことがありません。プログラムの知識もありません。 どうぞ宜しくお願い致します。
598 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 20:54:08 ] >>597 E1に式を突っ込むだけでできると思うのだが。よって、スレ違い。
599 名前:597 [2007/08/11(土) 20:58:50 ] >>598 この板ははじめて来るので、よく分かりませんでした。 どこで質問すれば良いでしょうか?
600 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 21:12:30 ] >>599 さぁ? Excelの使い方の質問ができるのならどこでもどうぞ。 #あ、鼬害か。
601 名前:597 mailto:sage [2007/08/11(土) 21:21:27 ] 他の板で聞いて解決しましたのでwww お前らダッセwww
602 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:49:41 ] セルに関数入れるのを プログラムと呼べなくもないような
603 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:51:42 ] >>602 それでもスレ違いであることには変わりない。
604 名前:デフォルトの名無しさん [2007/08/11(土) 23:55:49 ] >>596 質問した香具師じゃないが VSに何故VBAの開発環境があるんだ?と不思議に思ってたが そーゆー事なのかぁ、ためになった
605 名前:デフォルトの名無しさん [2007/08/11(土) 23:57:38 ] >>604 VBAと書いたが、確か違う名前だったね
606 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 19:08:40 ] 質問です。 エクセルで、印刷ダイアログを表示させて、そのときの印刷のページ範囲を任意で決めたいのですが、VBAで制御できますか? 一応、PrintOutメゾットは知っているのですが、このメゾットを実行させると印刷が自動的に行われてしまうようで、今回の利用の用途には合いませんでした。 あらかじめページ設定に印刷の範囲を指定できればいいのですが・・・ ご教授願います。
607 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 19:16:56 ] printpreview
608 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:02:15 ] >>607 いや、それだとダイアログが出ないから合わないんです。 詳しく書くと 1.何かしらの計算をして、ページ範囲(ページの枚数:1〜3ページまでとか)が既に決まっている。 2.印刷する前にダイアログを出す。 3.ページ範囲は、1.より範囲を代入する。 4.ダイアログから印刷プレビューを出す。 5.印刷をする。 この場合、PrintOutメゾットだとFromとToで範囲を決めれたけど、このメゾットだと自動的に印刷までいくので、今回の目的に合わなかったわけです。 一応printpreviewもやってみたけど、このメゾットだと範囲をあらかじめ決めれないらしいので、どうしたものかと困ってしまってます。