1 名前:デフォルトの名無しさん mailto:sage [2012/07/12(木) 19:03:00.57 ] VBAを使った質問ならなんでもござれ 本来の対象であるオフィスアプリを操作する以外の話もOK ゲーム作り、Webアクセス、外部アプリの操作 COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど VBAで実行するものであればなんでも質問してください VBAを開発環境としていろいろ作っちゃいましょう 関連スレ Excel VBA 質問スレ Part25 toro.2ch.net/test/read.cgi/tech/1341722983/ Access VBA 質問スレ Part1 toro.2ch.net/test/read.cgi/tech/1328536426/ VBプログラマ質問スレ(Ver.6.0 まで) part58 toro.2ch.net/test/read.cgi/tech/1328782534/
175 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:23:00.31 ] すみません、質問させてください。 Excel2003でUserForm1の中にTextBox1があります。 あるマクロからこのUserForm1をロードして、自動的にTextBox1の中に あるセルのデータ(或いは変数に入っているデータ)を入力させたいのですが、 この様な方法はあるのでしょうか? 宜しくお願いいたします。
176 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 00:59:16.93 ] >>175 UserForm1.TextBox1.Text = Sheet1.Range("A1").Value UserForm1.Show フォームがモーダルじゃなくてもいいなら UserForm1.Show False UserForm1.TextBox1.Text = Sheet1.Range("A1").Value
177 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 21:47:11.72 ] >>176 ありがとうございます! 逆にモードレスの方が良かったので大変助かりました
178 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 22:36:16.80 ] 諸先輩方、どうか教えておくんなまし。 エクセルVBAエディタにて IF文で文字変数がユーロ記号(?)の場合の文を書きたいんですけど、VBAエディタ上で書くと。。。 If str = "?" Then 何かしら実行 End If なのが If str = "?" Then 何かしら実行 End If みたく?マークになってしまいます@Office2007/Win7のVBA エクセルのシートやパワポ上ではふつーに?記号は表示されるのに なにゆえVBAエディタ上だけ?になるのでしょうか? Unicodeとかのコード設定かなと思ったのですがVBAエディタ上で 設定できそうな項目なさそうですし。。 ぜひ教えて下さい!
179 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 23:43:04.98 ] >>178 VBAそのものはUnicode対応だが、VBEはしてない ChrWを使え
180 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 00:38:30.25 ] >>179 ありがとうございます! msgboxで出してもずっとハテナマークだし半泣きでした。 頂いたヒントでググってたら↓があって読んだら仕組みわかりました。 codezine.jp/article/detail/1718
181 名前:デフォルトの名無しさん [2013/02/13(水) 08:17:48.50 ] VBAでIEを操作し、リンクをクリックしたいんですけど それについて詳しく解説してるサイトとかありますか? ていうか、VBAでIEを操作する際って XXXXXX.Navigate "XXXXX.ne.jp/" このページを開く構文は必ず必要なんですか? 自分でIEのページを開いて、ページを開いた後の処理をVBAにやらせるってことはできないんですか? ページを開いた後の処理をVBAにやらせるには、ページを開くことからVBAにやらせないといけないんですか?
182 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 08:44:48.82 ] きみにおあつらえむきのcomponentがある www.activexperts.com/
183 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 08:40:10.44 ] 先輩方にご教授願いたい。 ExcelVBAでマクロ作ってるんですが、Win32API関数で、引き数にNULLポインタを渡す場合は どう表記したら良いのでしょう?
184 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 10:07:28.80 ] >>183 0
185 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 10:26:57.32 ] >>184 有難うございます。 0だと型エラー為ると勝手に思い込んでました。 お恥ずかしい 精進します
186 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 18:25:20.83 ] >>185 vbNullString使え
187 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 18:27:55.53 ] いや、0のがいいと思う。 memset(ptr, NULL, len) みたいで気持ち悪い。
188 名前:デフォルトの名無しさん mailto:sage [2013/02/14(木) 18:29:15.89 ] >>187 確か、APIの引数にNULLポインタとして渡す目的も、vbNullStringにはあったと思うが
189 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 16:39:33.15 ] outlookで予定表をcsv書き出しするとアラームの日付と時刻の項目があるんですけど、 AppointmentItemオブジェクトを見てもReminderプロパティにdateとかtimeがないんですけど どこにセットしろっていう話なんでしょうか。
190 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 18:08:31.90 ] msdn.microsoft.com/en-us/library/office/ff184623%28v=office.14%29.aspx www.youtube.com/watch?v=SgmhgeTDc5M
191 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 23:11:55.58 ] >>190 レスありがとうございました。とりあえず、引き算して掛け算してReminderMinutesBeforeStartに放り込んで対応しました。
192 名前:デフォルトの名無しさん mailto:sage [2013/03/13(水) 18:07:18.47 ] MSはVB6からVB.NETにしたのにVBAはNETにしないの? 新人にVBAの改造させたら言語が古いとか行って文句を言ってくる
193 名前:デフォルトの名無しさん mailto:sage [2013/03/13(水) 18:26:38.76 ] Excel4Macroで実装させろ
194 名前:デフォルトの名無しさん mailto:sage [2013/03/13(水) 19:03:42.53 ] そいつの得意な言語で作らせる代わりに納期を半分にしたらいい
195 名前:デフォルトの名無しさん mailto:sage [2013/03/13(水) 23:41:33.72 ] 文句を言いながらも、VBAを十二分に使いこなしていくならそれでいい。
196 名前:デフォルトの名無しさん [2013/03/14(木) 03:04:46.29 ] accessで作る出力用レイアウトは、行高と列福を調整するとき、 その左右または上下の枠が自動的にずれないからレイアウトの調整が大変と聞いたのですが、 他の言語でもそうなんですか? 素人にとってはエクセルのように自動でずれてくれるようなイメージが刷り込まれています。 おかしなことを言ってたらすいません。
197 名前:デフォルトの名無しさん mailto:sage [2013/03/14(木) 08:07:18.12 ] >>196 内容ではなく文体がおかしい いや、なんとなく言ってることは解るんだけど、 エスパーしてまで答えるような内容じゃないしな
198 名前:デフォルトの名無しさん mailto:sage [2013/03/14(木) 14:06:05.42 ] それ言語の話じゃなくてエディタの話だしな
199 名前:デフォルトの名無しさん mailto:sage [2013/03/14(木) 20:30:01.45 ] ここはごく数人のヘタレどもがチンシコする糞スレです うまく答えられないときはエラそうになんだかんだいちゃもんつけてきます 看板に偽りスレなので素人が質問しても時間の無駄です わかったら相手にせず黙って去りましょう
200 名前:デフォルトの名無しさん mailto:sage [2013/03/14(木) 21:24:08.29 ] ていうかVBA全く関係ない質問に見えるけど。
201 名前:デフォルトの名無しさん mailto:sage [2013/03/15(金) 17:56:40.86 ] Outlookで予定表の一覧をcmd.exeに出力する方法を教えてください
202 名前:デフォルトの名無しさん mailto:sage [2013/03/15(金) 18:20:57.68 ] CreateObject("WScript.Shell") を使います
203 名前:デフォルトの名無しさん mailto:sage [2013/03/15(金) 21:03:48.32 ] >>201 cmd.exeに出力ってどういう意味だ? とりえあず予定表の一覧なら msdn.microsoft.com/ja-jp/library/office/bb219895 (v=office.12)
204 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 12:25:21.26 ] PowerPoint2013で、vbaのマクロをボタンに登録したときの起動が遅いみたいなんですけど事情をご存知の方いませんか。
205 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 13:25:02.82 ] 動作がおかしいって話はググるかメーカーへ
206 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 19:30:49.66 ] パソコン自体に既に異様に負荷をかけている
207 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 19:51:23.45 ] どうもスライドショーモードにしてる時に、マクロの実行までのタイミングでもたついてるみたいです。 始まってしまえば実行速度は2010と変わらないみたいです。
208 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 22:41:26.67 ] ワード2003で、フォームに入力した郵便番号、住所、氏名をテキストボックスに入力するVBAを作ったのですが、 氏名だけOKボタンを2回押さないと反映されません。なぜこうなるのでしょうか。 ワード2013では一度に反映されますが、2003で使う必要があるので困っております。 以下に参考までに実物をアップロードしました。どうかご確認・ご教授の程お願いします。 www.dotup.org/uploda/www.dotup.org4059350.doc.html
209 名前:デフォルトの名無しさん mailto:sage [2013/03/21(木) 06:10:43.68 ] 了解
210 名前:デフォルトの名無しさん [2013/03/27(水) 06:37:11.96 ] 質問です。 EXCELのVBAでアプリを操作したいのですが、できますか? したいことの大まかな流れですが、下記のURLでダウンロードできる「アマチュア局インターネット申請」のアプリを起動し、作業を自動でさせたいのです。 www.denpa.soumu.go.jp/public/prog/index.html アプリは総務省提供のものです。 具体的な行いたい作業としては @アプリを起動 A「確認」のダイヤログで「キャンセル」を選択 B新しく開いたウィンドウで「ファイルから読み込む」を選択 C「選択」のダイヤログでエクセル上にあるパスのファイルを選択 これを繰り返したいのです。 EXCELのVBAについては基本的な知識はあります。 よろしくお願いします。
211 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 07:10:35.43 ] >>210 じゃああとはWinAPIの知識だな 主にウインドウハンドルと、ウィンドウメッセージについて勉強してこい 大まかに話すと、該当アプリのウィンドウハンドルを取得して 操作するコントロール(ボタンや入力ボックスなど)のハンドルを取得して そのハンドルに操作メッセージを送れば良いだけだ あるダイアログのOKボタンのハンドルが12345だとしたら ハンドル12345にクリックメッセージを送れって命令を書いてやると、そこに マウスカーソル持って行かなくてもそのボタンをクリックしたことになる ただ、この手のものはプログラムで申請の自動化とかすると、不正(提供者が意図しない不正規の手順)な申請とかで プログラム作った奴が訴えられかねないから、自己責任&具体的なコード回答は無しで頑張るしかないぞ
212 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 14:01:02.51 ] >>210 (1)〜(4)を繰り返すと、大量にアプリケーションが起動することになると思うのだが、やりたいのは それなのか? 仮に、申請までを繰り返したい場合、法的/道義的にそれは許されるものなのか? 申請を受け付けるサーバへの攻撃と取られる可能性があるぞ。
213 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 16:54:29.77 ] スレ誘導 toro.2ch.net/test/read.cgi/tech/1363042502/
214 名前:210 [2013/03/28(木) 07:38:38.73 ] 回答ありがとうございます。 まず、私がこの操作を自動化させたい目的ですが ファイルから読み込んだブラウザのウィンドウを連続印刷したいからです。 印刷処理の部分については自分でコードを作れると思いますので省いておりました。 このアプリを使って既に申請されている局の申請ファイルを読み込むと 申請した内容が整理された形でブラウザに表示されます。 WinAPIの知識ですか。 まずはネットで調べてみたいと思います。
215 名前:デフォルトの名無しさん [2013/03/28(木) 15:15:35.91 ] WSH
216 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 17:55:38.87 ] すみません、下記コードを修正して頂きたいのですがお願いできませんでしょうか? 修正内容はダイアログを表示しないで自動的にtest1.jpgという名前でCドラ直下に保存できればと思います。 Option Explicit 'ファイル保存ダイアログ Private Function GetSaveFileName() As String Dim sfile As String sfile = Application.GetSaveAsFilename(fileFilter:="JPGファイル (*.jpg), *.jpg") If sfile = "False" Then GetSaveFileName = "" Else GetSaveFileName = sfile End If End Function Private Sub CommandButton1_Click() Dim rg As Range Dim cht As Chart Dim fina As String
217 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 17:56:19.24 ] '保存ファイル名を取得 fina = GetSaveFileName If fina <> "" Then '選択範囲を取得 Set rg = Selection '選択した範囲を画像形式でコピー rg.CopyPicture appearance:=xlScreen, Format:=xlPicture '画像貼り付け用の埋め込みグラフを作成 Set cht = ActiveSheet.ChartObjects.Add(0, 0, rg.Width, rg.Height).Chart '埋め込みグラフに貼り付ける cht.Paste 'JPEG形式で保存 cht.Export Filename:=fina, filtername:="JPG" '埋め込みグラフを削除 cht.Parent.Delete End If End Sub
218 名前:デフォルトの名無しさん [2013/04/04(木) 18:02:12.58 ] 馬鹿には無理
219 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 18:15:13.26 ] >>216 嫌です
220 名前:桃白白 mailto:sage [2013/04/05(金) 12:52:08.01 ] >>216 桃白白がお願いされちゃう。 Option Explicit 'ファイル保存ダイアログ Private Function GetSaveFileName() As String GetSaveFileName = "c:\test1.jpg" End Function Private Sub CommandButton1_Click() Dim rg As Range Dim cht As Chart Dim fina As String '保存ファイル名を取得 fina = GetSaveFileName If fina <> "" Then Set rg = Selection rg.CopyPicture appearance:=xlScreen, Format:=xlPicture Set cht = ActiveSheet.ChartObjects.Add(0, 0, rg.Width, rg.Height).Chart cht.Paste cht.Export Filename:=fina, filtername:="JPG" cht.Parent.Delete End If End Sub
221 名前:216 mailto:sage [2013/04/05(金) 14:58:35.87 ] >>220 無事動きました 本当にありがとうございました orz
222 名前:デフォルトの名無しさん mailto:sage [2013/04/05(金) 15:08:41.38 ] 最後がm(_ _)mではなくorzなのが回答内容を反映してて良い味出てるな
223 名前:桃白白 mailto:sage [2013/04/05(金) 15:47:21.55 ] >>222 おいやめろ。まるで桃白白がお答えした内容が期待はずれの ものであり桃白白に失望したといわんばかりじゃないか。 そんなことほんとは思ってないくせに。心にもないこと言わないでちょうだい。ふん。
224 名前:デフォルトの名無しさん mailto:sage [2013/04/16(火) 15:03:53.95 ] おまいら最高すぎ。 クラムチャウダー吹き出した。
225 名前:デフォルトの名無しさん mailto:sage [2013/04/26(金) 19:45:29.36 ] VBAというよりも出来た後のことなんですが、、皆さんマクロをどうやって管理されてます? 会社でバージョン管理システムを入れてるところならそれを使ってるんでしょうけど。 今んとこ、出来たマクロに日付を入れて特定のフォルダに入れてるんです( e.g xxx_20130402.xlsm etc) が、やはり別のフォルダに入れて更新 したのを時々忘れてしまったりしてどうしようかなぁ〜と思っています^^;
226 名前:デフォルトの名無しさん [2013/04/26(金) 20:00:41.70 ] VSS
227 名前:デフォルトの名無しさん mailto:sage [2013/04/26(金) 20:34:20.38 ] >>225 最後にマクロ保存のコードを追加したりしてマクロの保存もVBAでやっちゃえば?
228 名前:デフォルトの名無しさん mailto:sage [2013/04/26(金) 21:13:14.06 ] >>227 実行した時に自分自身を特定のフォルダに上書き保存するってことですかね? あぁそういう手もあるか。
229 名前:227 mailto:sage [2013/04/26(金) 22:37:35.63 ] >>228 ファイル名は日付で管理してるということだから 常に上書き保存じゃなくて同じファイル名が存在していないときのみ保存するとか。
230 名前:デフォルトの名無しさん mailto:sage [2013/04/26(金) 22:58:05.30 ] >>229 参考になりました。ありがとう
231 名前:デフォルトの名無しさん mailto:sage [2013/04/27(土) 01:31:45.70 ] 俺の場合 エクセルVBAのマクロなんて、エクセル表の補助作業にしか使わんから もとのエクセル表の管理が出来てればマクロの管理なんて考える必要ない
232 名前:デフォルトの名無しさん mailto:sage [2013/04/27(土) 05:57:56.22 ] 俺はVBAから入ったので、最初のころはExcelに関係ない ウィンドウズアプリケーション的な物もVBAで作っていたから管理が面倒だった そのうちVB6、そしてC#を使うようになったから今は>>231 と同じだが 管理に奔走する奴等のことも理解できる
233 名前:デフォルトの名無しさん mailto:sage [2013/05/03(金) 16:24:56.80 ] 標準モジュールに自作したマクロが多くなりすぎて、修正を加えたいマクロを探すのが大変になってしまった 例えば、Sub JISAKU()のように マクロ名JISAKUからマクロを記述した該当モジュールを即座に見つける方法ってありますか?
234 名前:デフォルトの名無しさん mailto:sage [2013/05/03(金) 16:54:08.84 ] 普通に Ctrl + F で Sub JISAKU() と検索すれば良いのでは…。
235 名前:233 mailto:sage [2013/05/03(金) 17:26:52.89 ] >>234 ほんとだ! こんな簡単に検索することができたのか 今まで何という無駄な時間を_| ̄|○ 有り難う!!!!
236 名前:デフォルトの名無しさん mailto:sage [2013/05/04(土) 00:36:10.00 ] その程度で喜んでるようならShift+F2で定義に移動した日にはショック死するんじゃないか
237 名前:234 mailto:sage [2013/05/05(日) 18:45:30.48 ] まさかとは思ったがw 補足だけど、検索後にプロパティウィンドウ (デフォルトなら左上のはず) の該当モジュールが反転するので、 検索対象がどのモジュールにあるのか一発でわかる。 236に便乗するけど、定義に移動したのちに Ctrl + Shft + F2 を押下すると元の位置に戻るので 覚えておくと作業が捗るよ。 (プロシージャの数が増加するほど役に立つ。)
238 名前:デフォルトの名無しさん mailto:sage [2013/05/07(火) 13:34:18.34 ] >>233 VBEが表示されているときにF2キーでオブジェクトブラウザが表示される。 そこで検索したり、"VBAProject"を選択してシートやモジュールを選択して、定義したマクロ一覧なんかをブラウズできる。 (VBAProjectというのはプロジェクト名のデフォルト) VBEで編集中のときは、コード入力ウィンドウの上部に"(declaration)"と表示しているコンボボックスがあるので、そこで編集中のシートやモジュールの関数を選択できる。
239 名前:デフォルトの名無しさん [2013/05/11(土) 15:38:41.96 ] Excel2010まではVBE終了させるとウィンドウの位置や大きさを以前は覚えてくれてたのに Excel2013にしから一切覚えなくなった Excel立ち上げてVBE開くたびにウィンドウが全て消えてるので不便です Access2013のVBEは以前と変わらず覚えてるのだけど、Excel2013VBEの何が原因なんでしょうか?
240 名前:デフォルトの名無しさん mailto:sage [2013/05/14(火) 10:41:53.28 ] エクセルVBAのスレッドで聞いたんですが回答が得られなかったのでこちらに書かせてください。 スマートアートオブジェクトの図についてなんですが、 vba上で、挿入した画像のみをクリアして、初期状態に戻す方法がありましたら教えてください。
241 名前:桃白白 ◆9Jro6YFwm650 [2013/05/15(水) 15:25:00.19 ] >>240 「vba上で」は「挿入した」にかかるのか「戻す」にかかるのか 桃白白よくわかんないんだけど、削除する画像にだけ特別な名前をつけちゃったらいんじゃない? DeleteImage1みたいな。画像を列挙して名前にDeleteが含まれてたらそれを削除みたいな。
242 名前:デフォルトの名無しさん mailto:sage [2013/05/26(日) 17:46:36.07 ] EXCELのVBAを使って、amazonの画像の取得を試みたいんだけど、 たとえば、[B]列セルにamazonの商品ページURLが入力してあって、 そのページ毎にある ec2.images-amazon.com/images/I/ ●●●●._SL500_AA300_.jpg という画像ファイルのURLを検索して[C]列セルに抽出したい場合、 どのようなコードを組めば良いでしょうか? よろしくお願いします。
243 名前:デフォルトの名無しさん mailto:sage [2013/05/26(日) 21:37:10.70 ] 嫌です
244 名前:デフォルトの名無しさん mailto:sage [2013/05/26(日) 23:35:03.88 ] >>242 vba html parser で検索
245 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 01:05:06.33 ] 超初心者です。色々調べましたがわかりませんでした。 是非お力をお貸しください。 エクセルで、B列だけ、B2から下へ空白があるまでの文字を テキストファイルに書き出し、1.txtで保存し、 またその下の文字列から次の空白の上までを2.txt・・・と、 名前を付けて保存したいのですが、どのようなコードを組んだら よいかご教授ください。よろしくお願いします。
246 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 01:44:34.41 ] >>245 このようなコードです Sub B_n_txt() n = 1 ' ファイルの番号 r1 = 2 ' r1=始まりの行 While Cells(r1, 2) <> "" ' 最後ならプログラム終わり If Cells(r1 + 1, 2) = "" Then ' 区切りを見つける r2 = r1 ' r2=終わりの行 Else r2 = Cells(r1, 2).End(xlDown).Row End If Open n & ".txt" For Output As #1 ' ファイルに書き込む For i = r1 To r2 Print #1, Cells(i, 2) Next Close #1 n = n + 1 ' 次のファイル番号 r1 = r2 + 2 ' 次の先頭 Wend End Sub
247 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 01:58:13.00 ] >>246 遅くに作成いただきましてありがとうございました! 早速試してみました。出来たーーー! 手動で大量に保存していたので、本当に助かります。 明日から・・・じゃない今日からの作業が楽しみです。 またの機会がありましたら何卒宜しくお願いいたします。
248 名前:245 mailto:sage [2013/06/19(水) 22:26:35.34 ] まだ一日経っていないのですが、お力いただけないでしょうか。 昨日と似たもので、エクセルで2007で。 <1> M列に数字のデータが昇順に並んでいます。M2からがデータです。 そのM列で同じ数字の列までのB2からのデータをデスクトップに 1.txt、2.txt・・・と保存したいのですが。 たとえばM2〜M4までの数字が同じなら、B2〜B4までのデータを デスクトップに順番に保存するというものです。 B列は半角数字とアルファベットでデスクトップはC:\Users\admin\Desktop\ です。
249 名前:245 mailto:sage [2013/06/19(水) 22:32:49.52 ] <2> そして、>>248 にもうひとつ条件を入れて作成が可能であれば・・・ M列と同じ数字の列数と同じB列のものを抜き出すのですが、 その時、Q列が全角のRなら1R.txtで保存、全角のLなら1L.txtなど、 同じM列の数字の中のものだとわかるような方法で保存したいのです。 (Q列は全角Rか全角Lのみとなっています) たとえばM2〜M4までが同じ数字だが、Q2とQ4がR、Q3がLなら B2とB4のデータを1R.txt B3を1L.txtと保存し、 次のM5〜は上記と同様2R.txt・・・・・と保存していくものが希望です。 何卒よろしくお願いいたします。
250 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 22:47:49.25 ] 少し自分で努力しろ。
251 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 22:55:24.53 ] >>249 >何卒よろしくお願いいたします。 嫌です
252 名前:245 mailto:sage [2013/06/19(水) 23:05:47.80 ] 努力してみたのですが習得に時間がかかるようで。 不愉快にさせてしまい申し訳ありません。
253 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 23:10:27.65 ] 別に不愉快にはなっていない。 果報は寝て待て。
254 名前:デフォルトの名無しさん mailto:sage [2013/06/19(水) 23:53:16.55 ] >>249 俺が作成料2万円でやってやる 仕様の変更や追加は条件一つに付き3000円
255 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 07:34:25.85 ] > 努力してみたのですが習得に時間がかかるようで。 最初から努力などしてないくせに
256 名前:245 mailto:sage [2013/06/20(木) 08:35:19.31 ] 切り貼り奮闘し>>248 はなんとか出来ました。 せっぱつまっていたのでお願いしてみましたが、 >>249 は出来ませんでしたので ちまちま手作業で乗り切ろうと思います。 スレ汚しして申し訳ございませんでした。 >>246 さん、本当にありがとうございました。
257 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 11:37:32.35 ] >>256 雰囲気こんな感じ。 For i = 2 To maxRow If Cells(i, 17).Value = "R" Then rBuf = rBuf & Cells(i, 2).Value & vbCrLf Else lBuf = lBuf & Cells(i, 2).Value & vbCrLf End If Next Open "1R.txt" For Output As #1 Print #1, rBuf Close #1 Open "1L.txt" For Output As #1 Print #1, lBuf Close #1
258 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 18:22:26.64 ] >>257 ありがとうございます。 何故か中身が空っぽで保存されていました。 自動保存から切り貼りしてなんとかやっているようなレベルなので 厳しいですが色々調べながら頑張ります。 本当にありがとう!
259 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 18:50:16.31 ] >>258 丁寧な言葉は使ってるけど、言いたいことは >>257 ご苦労さん、全く使えねぇコード書きやがって動かなきゃ意味ねえんだボケ! ってところかw
260 名前:桃白白 ◆9Jro6YFwm650 [2013/06/20(木) 18:55:59.95 ] >>259 うるせえな、ちょっと黙ってろ。
261 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 19:41:13.25 ] >>259 ん?俺はお前にレスした覚えはないが。 何かスイッチ押しちゃったw
262 名前:桃白白 ◆9Jro6YFwm650 [2013/06/20(木) 19:44:49.91 ] >>249 でけーた。試してみて。 https://friendpaste.com/1MQf5hd3f08yQhMLmS32c
263 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 20:02:44.42 ] 更年期のオッサンってキレやすいんだな
264 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 21:21:07.67 ] >>262 桃白白さま。 ありがとうございます!凄いです!魔法使いみたい。 何時間もかかっていたややこしい仕事が一瞬で済むなんて。 作っていただいたコード見てもさっぱりわからない自分が情けないです。 基本から勉強すべきなんだなと痛感しました。 自分で努力しろと助言くださった方々、まさしくその通りです。 みなさんに感謝の気持ちでいっぱいです。ありがとうございました。
265 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 21:27:07.06 ] 毎日痛みと戦ってるからな
266 名前:デフォルトの名無しさん mailto:sage [2013/06/20(木) 21:43:16.94 ] >>264 >作っていただいたコード見てもさっぱりわからない自分が情けないです。 この時点でお前のために書いてないと気づけよw
267 名前:デフォルトの名無しさん mailto:sage [2013/06/21(金) 23:13:03.66 ] 生理痛?
268 名前:デフォルトの名無しさん mailto:sage [2013/06/22(土) 00:31:32.15 ] 桃白白 ↑なんてよむにょ?
269 名前:デフォルトの名無しさん mailto:sage [2013/06/22(土) 00:38:54.33 ] オッサンと読めば良いよ
270 名前:デフォルトの名無しさん mailto:sage [2013/06/22(土) 01:37:03.71 ] ググレカス、というか、 ドラゴンボールはすでにオッサン世代しか知らんのか
271 名前:デフォルトの名無しさん mailto:sage [2013/06/22(土) 15:07:38.48 ] ピーチダブルホワイト
272 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) NY:AN:NY.AN ] >>262 先日はありがとうございました! もうひとつ、質問させてください。 >>262 で保存したものを開くと、 カーソルがデータの最初にある状態で保存されていました。 カーソルをファイルの末尾へ移動して保存する場合、 どういう構文をどこに足せばいいのでしょうか・・・ 色々調べてみましたが自力では無理でした。 申し訳ありませんがよろしくお願いします。
273 名前:デフォルトの名無しさん mailto:sage [2013/07/03(水) NY:AN:NY.AN ] >>272 カーソルをB列の最後のデータに移動 Cells(Rows.Count, 2).End(xlUp).Select
274 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) NY:AN:NY.AN ] >>273 早速ありがとうございます。 何行目に足せばいいのでしょうか・・・
275 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) NY:AN:NY.AN ] 好きな所に足しなさい
276 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) NY:AN:NY.AN ] カツカレーが好きなんですけど、この上に足していいですか?
277 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) NY:AN:NY.AN ] 抜き出したテキストファイルをプログラムで読み込もうとしたのですが、 読み込めず、開いて末尾にカーソル持っていって、 DELキー何度も連打して上書き保存したら、読み込めたんです。 ってことは、元のB列のデータになにかわからない空白がある? 空っぽの頭で考えたのですが、さっぱりわからなくって。
278 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) NY:AN:NY.AN ] とりあえず出社してから再度悩んでみます。スレ汚しすみませんでした。 明日のランチはカツカレーに決定。おやすみなさい。
279 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) NY:AN:NY.AN ] 一体何人の分身がいるんだコイツ?
280 名前:デフォルトの名無しさん [2013/07/04(木) NY:AN:NY.AN ] VBAの文法VB.netに統一されるといいのになぁ。
281 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) NY:AN:NY.AN ] >>279 下衆の勘ぐり?
282 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) NY:AN:NY.AN ] >>272 です。 不慣れで何をどう説明したらいいのかすらわからず、 グダグダになってすみません。 >>262 で桃白白さまに作っていただいたVBAの最後の部分、 Sub SaveLR_(filename, value) Dim n As Long n = FreeFile Open filename For Output As #n Print #n, value Close n End Sub データを抽出し、ここでテキストに貼るように作っていただきましたが、 最後の改行だけを無くして保存する方法をお教えください。 よろしくお願いいたします。
283 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) NY:AN:NY.AN ] >>282 パイパイのコードは知らんが Print # で改行無しなら Print #n, value;
284 名前:デフォルトの名無しさん mailto:sage [2013/07/04(木) NY:AN:NY.AN ] >>283 試したところ、空白が無くなって、いけそうです! 明日会社で試してみます。 今から戻って試したい位です。ありがとうございます。
285 名前: 忍法帖【Lv=2,xxxP】(-1+0:5) mailto:sage [2013/07/12(金) NY:AN:NY.AN ] すみません!教えてください、僕の頭ではサパーリです。 マクロを実行するとDROPBOXの複数のフォルダに保存するマクロを作ったのですが ユーザー名が1つ1つのパソコンで異なり他のPCでこのマクロを実行するとエラーがでます(当たり前ですが・・・) マクロでユーザー名を取得することは可能でしょうか?
286 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN ] >>285 www.ken3.org/vba/backno/vba114.html
287 名前:285 mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>286 情報dです。これではC:\Users\に入り込めませんでした。 他に何か方法はないでしょうか?
288 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>287 Dim WshShell As Object Set WshShell = CreateObject("WScript.Shell") Debug.Print WshShell.SpecialFolders("MyDocuments")
289 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>288 レスありがとうございます。 Dropboxがマイドキュメントフォルダに入っていません。 rootは、C:\Users\ユーザー名\Dropboxになってます。 この場合でも、SpecialFoldersで指定は可能でしょうか?
290 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>289 フォルダを検索して、存在しなければフォルダを作るようなコード書けばいいんじゃね?
291 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>290 Dropbox自体が特殊で場所移動とかできないんですよねー。 なんか無理そうだな orz
292 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>291 Dropbox限定か。 なら、hardsoft.at.webry.info/201111/article_4.html をVBAに書き換えろ。 「dropbox フォルダ 場所 取得」でググったら一番上だ。検索時間1分。
293 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] ちなみに、dropboxはドキュメントフォルダの場所を変更できるからな。
294 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>292 >********をVBAに書き換えろ。 WScript.Shellも理解できない人にそんなこと言ったって・・・・・・・・・w
295 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>294 ほら、全コード書いちゃうと荒れるじゃん
296 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>295 hardsoft.at.webry.info/201111/article_4.html を見て何とかなるスキルがあるなら >>289 のような質問自体が生じないってこと。 >>288 に対して >>289 の再質問を見ると SpecialFolders("MyDocuments")が何を返すのかを調べもしていない = 意味不明でもコピペするだけで動くコードがほしい ということでしょう。 [C:\Users\<ユーザー名>\Dropbox]決め打ちで良いのならこの文字列を取得 する方法は上記以外にもいくつもあるよね。 自分ならExpandEnvironmentStringsで%USERPROFILE%を取得とか WScript.Network UserName で<ユーザー名>を取得することを検討するな。
297 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>296 Dropboxのパス取得が目的なら、それでは不十分。
298 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>291 > Dropbox自体が特殊で場所移動とかできないんですよねー。 これはいくら何でもひどい
299 名前:296 mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>297 でしょうね 自分がDropboxを使っていないのとUPするとき長くなるので以下の文章を抜いちゃったんだ 「Dropboxは使っていないので無責任になるが上記URLにDropboxの場所がデフォルトの場合 C:\Users\<ユーザー名>\Dropboxになる。また >>293 ・・・場所を変更できるからな。 とあるので対象PCはすべてデフォルトということを元>>285 は検証しているのだろうか。 >>291 Dropbox自体が特殊で場所移動とかできないんですよねー。 とあるが 特殊なDropboxなのだろうか?それとも移動可能ということを知らないだけなのだろうか?」 もしユーザーが簡単にC:\Users\<ユーザー名>\Dropboxの場所を変更できるのならだれか 元>>285 に引導を渡してやってくれ。
300 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN ] >>299 よくある普通の設定ダイアログで、普通に変えられるよ。
301 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] WSH.SpecialFolders("Desktop") の結果から"デスクトップ"と"Dropbox"をReplaceして一旦パスを整えて FileSystemObjectのFolderExistsでフォルダがあるかチェックして フォルダが無ければ終了するかフォルダピッカー出して選択してもらう
302 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] そんなにPerlが読めない人たちにばかりなの? Dropboxフォルダが書かれてるファイルがあるから、オープンして内容読んでデコードするだけじゃん。
303 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] >>302 どこのどれ?
304 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] Dropboxの仕様とか明らかにスレ違いなんでどっか適切なとこ探して移動して下さい
305 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] >>303 >>292 のリンク先に正解のPerlコードがある
306 名前:285 mailto:sage [2013/07/17(水) NY:AN:NY.AN ] >>292 パールをVBAへ変換できるPG探してみます。 >>293 本当ですね orz 場所移動できました。すみません。 >>294 頑張ります!>>296 >>296 自分ならExpandEnvironmentStringsで%USERPROFILE%を取得とか WScript.Network UserName で<ユーザー名>を取得することを検討するな。 ここらへんググってみます。 >>298 バカですみません。 >>300 助かりました!
307 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] Function GetDropboxPath() As String Dim path As String Dim wsh As Variant Set wsh = CreateObject("Wscript.Shell") path = wsh.SpecialFolders("AppData") & "\DropBox\host.db" Dim fn As Long Dim buf As String fn = FreeFile Open path For Input As #fn Do Until EOF(fn) Line Input #fn, buf Loop Close #fn Dim ary As Variant ary = Split(buf, vbLf) GetDropboxPath = StrConv(decodeBase64(ary(1)), vbUnicode) End Sub decodeBase64は、ここのコードをコピペで。 www.gizcollabo.jp/vbtomo/log/archive/vbqanda_4318_2.html
308 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] >>307 添削。 Function GetDropboxPath() As String Dim path As String Dim wsh As Variant Set wsh = CreateObject("Wscript.Shell") path = wsh.SpecialFolders("AppData") & "\DropBox\host.db" If Dir(path) = "" Then Exit Function Dim fn As Long Dim buf As String fn = FreeFile Open path For Input As #fn Line Input #fn, buf Close #fn Dim ary As Variant ary = Split(buf, vbLf) GetDropboxPath = StrConv(decodeBase64(ary(1)), vbUnicode) End Function
309 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] バールのようなもの
310 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] そのファイルの改行コードがどうなってるのかしらんが Line Input ってLFのみだと改行コードだとみなさないんだっけ?
311 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] >>310 「そのファイル」はLFで改行された二行固定(すくなくとも今現在は)。 Line InputはLFを認識しない。
312 名前:285 mailto:sage [2013/07/17(水) NY:AN:NY.AN ] >>308 大変助かりました。ありがとうございました。 仕組みがまったく理解できませんが、理解できるように勉強したいと思います。
313 名前:デフォルトの名無しさん mailto:sage [2013/07/17(水) NY:AN:NY.AN ] あー、これ見ても理解できないんだったら、そもそも書けるわけ無かったね。 別に貶めてるとかそういうことじゃないんだけど。
314 名前:デフォルトの名無しさん [2013/07/17(水) NY:AN:NY.AN ] >>313 うぜーやつ
315 名前:デフォルトの名無しさん mailto:sage [2013/07/18(木) NY:AN:NY.AN ] いっそのことコード作成依頼OK、丸投げ歓迎ってテンプレ入れて、このスレをそんなスレに するってのはどう? 本スレでも、コード書きたくてウズウズしてる人いるみたいだし。 それとも、そんな性質のスレほかにもうある?
316 名前:285 mailto:sage [2013/07/18(木) NY:AN:NY.AN ] 何度もすみませんヒントだけでもいいので教えて下さい。 >>308 さんのVBAをcallで読みだしてCommandで保存できるようにしました。 この時saveを使えば開いてる場所に保存されるのですが、saveasメソッドを使用して指定するとアクセスできませんエラーがでてしまいます。 助けてください orz
317 名前:デフォルトの名無しさん mailto:sage [2013/07/18(木) NY:AN:NY.AN ] >>316 エラーになるというコードを晒せ。
318 名前:デフォルトの名無しさん mailto:sage [2013/07/18(木) NY:AN:NY.AN ] >>315 >>1 にはコード作成依頼はダメとか、丸投げダメとは一切書いていない。 「VBAを使った質問ならなんでもござれ」なんだから何でもいいんじゃないの?
319 名前:デフォルトの名無しさん mailto:sage [2013/07/18(木) NY:AN:NY.AN ] >>318 にほんご むずかしい です よくわからない 「作成依頼」と「質問」はおなじことなんでしょうか
320 名前:ピラフ [2013/07/18(木) NY:AN:NY.AN ] >>319 たとえば、相談に乗って欲しいと男を家に誘い込み、 省エネのためといって電気を消し、じつは・・・むぎゅと いう行動に出た場合、相談とせっくすは完全に同じことであると いうことになると思いますので、作成依頼は質問であるということで いいのではないでしょうか。
321 名前:285 mailto:sage [2013/07/18(木) NY:AN:NY.AN ] こんな感じです!バカですみません!! >>317 Sub CommandButton() Call GetDropboxPath >>308 さんのこれでドロップボックスの保存先呼び出すと解釈しました 'ActiveWorkbook.SaveAs これなら何故か上手くいく。 ActiveWorkbook.SaveAs "\新しいフォルダ\練習.xlsm" ←なので直下のこれを指定したのですが・・・ End Sub
322 名前:デフォルトの名無しさん mailto:sage [2013/07/18(木) NY:AN:NY.AN ] >>321 Functionは値を返す関数で、変数に代入したり式の中で使ったりする。 Call myFunction() だと、戻った値が後で使えない。 Sub CommandButton() ActiveWorkbook.SaveAs GetDropboxPath() & "\練習.xlsm" End Sub とやれば、保存できる。 ファイル保存ダイアログを出したかったり、存在しないフォルダを新規作成してその中に保存したい場合とかは、 さらに別のコードが必要。 これからも、VBAで何かを作っていこうと思うのなら、何かVBAの入門書を読んだ方がいいよ。
323 名前:285 mailto:sage [2013/07/18(木) NY:AN:NY.AN ] >>322 レスありがとうございます。 参考に弄ってみます。 何かおすすめの書籍などありましたら教えて頂けませせんか? 質問ばかりですみません。
324 名前:デフォルトの名無しさん [2013/07/18(木) NY:AN:NY.AN ] 大きな本屋に行って何冊か自分で立ち読みして調べるぐらいのことはしてよ
325 名前:デフォルトの名無しさん mailto:sage [2013/08/28(水) NY:AN:NY.AN ] Outlookのvbaに関する質問大丈夫ですか?
326 名前:デフォルトの名無しさん mailto:sage [2013/08/28(水) NY:AN:NY.AN ] OUTです
327 名前:デフォルトの名無しさん mailto:sage [2013/08/28(水) NY:AN:NY.AN ] 何処でしたらいいですか?
328 名前:デフォルトの名無しさん mailto:sage [2013/08/28(水) NY:AN:NY.AN ] 適したスレで
329 名前:デフォルトの名無しさん mailto:sage [2013/08/28(水) NY:AN:NY.AN ] テキストファイルを指定して直接開きたいのですがどうしたらいいでしょうか? shell関数はexeのみですよね?
330 名前:デフォルトの名無しさん mailto:sage [2013/08/28(水) NY:AN:NY.AN ] >>329 With CreateObject("Wscript.Shell") .Run "C:\hoge.txt", 5 End With
331 名前:デフォルトの名無しさん mailto:sage [2013/08/29(木) NY:AN:NY.AN ] まさかOUTLOOKだけにOUTだす、っていうダジャレですか このクソオヤジがぁ?
332 名前:デフォルトの名無しさん mailto:sage [2013/09/02(月) 21:53:12.79 ] ごちゃごちゃ言わずにその疑問を書けばいい。だれか判る人間が答えるだろ(俺は知らんw
333 名前:デフォルトの名無しさん mailto:sage [2013/09/05(木) 18:05:27.91 ] エクセルとアクセスのVBAをマニュアルページとか見ながらだけど 理解できてて、アクセスからデータを引っ張ってきて、エクセルに貼り付けて そこで表計算させたり、条件にまとめて貼り付けたりとかできるんだけど。 それでこういうのを仕事にできるアルバイトしたいとおもって探してて ネット上では、1500円とか結構高い時給でそれっぽいのの応募があったりするんだけど そういうバイトしたことある人っています?実際どれぐらいのスキルを 求められるんだろう?
334 名前:デフォルトの名無しさん mailto:sage [2013/09/05(木) 18:32:58.66 ] >>333 電話して聞けば?
335 名前:デフォルトの名無しさん mailto:sage [2013/09/05(木) 18:53:07.43 ] >>334 ざっと探すとネットでのみ応募で電話番号がわからないところしか 見つからないんですよね。ネットで中核求人サイトを媒介にして応募して 応募した会社からの連絡待ちみたいな。
336 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 13:02:30.82 ] >>335 そのスキルじゃ、20代女子じゃないと難しいかと。
337 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 13:45:37.41 ] >>336 ああ、やったことあるんすか?20代女子かぁ。うーむ。男女差別って気がして しまうなぁ。
338 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 18:00:08.99 ] >>337 いや、無いけど>>333 読む限りVBAをがっつりやるにはスキル足りなさすぎ。
339 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 18:03:28.00 ] >>338 なるほど、もっとスキルがあれば、できるかもですな。 実際に働いたことある人の意見がききたいですが。 なかなかそういう人もいないもんなんでしょうかねぇ。
340 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 18:04:18.03 ] やればなんとかなるさ
341 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 11:49:00.50 ] エクセルのみ使ったデータ入力の仕事ならあるだろうけど、時給1500円は無いだろう アクセスを使う仕事はデータ入力のみか、DBの設計開発かで必要なスキルが段違いになるが、333には無理だろう 業務で使うVBA開発を前提とした仕事なら、初心者に毛が生えた程度の333では相手にされないだろう
342 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 12:03:23.48 ] >>341 >アクセスを使う仕事はデータ入力のみか、DBの設計開発か DBの設計開発って具体的にいうと、アクセスでテーブルを作って 用途に応じたクエリを作成する。ぐらいまでのことですか? 例えば、都道府県の各市町村で、「田」のつく名称を都道府県ごとに検出して さらに「田」のつく市町村名の割合などを算出する。 これらをSqlとVBAを併用してエクセルに記述できたら、設計開発っていえます? >業務で使うVBA開発 必要な用途に応じて、エクセルの中にフォームを作ったりボタンを作ってそのフォームや ボタンを押すと必要な動作が行われる、ぐらいまでのことが注文されると作れると VBA開発って感じになります?
343 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 12:13:27.25 ] そういう程度では即戦力として雇って貰える所は無いだろな
344 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 12:18:40.43 ] なるほどねぇ。これ以上だと具体的にどういうレベルなのか。 求人はあるみたいだけど、実際に働いた人の話も聞かないしなぁ。 まぁ、バイトならいつでも辞めれるし、辞めさせられるし、飛び込むだけ 飛び込んでみるのもいいかもですが。
345 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 14:25:37.30 ] 今の職場でエクセルのマクロとテキストエディタ(正規表現込み)を独学で覚えて 作業効率を大幅に向上させてきたけど時給900円のままのワープア派遣Orz
346 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 15:23:13.20 ] >>344 会社側が求めている人材なんてその会社毎に違うんだから その会社に問い合わせないとわかんないな あーだこーだ言ってないで成果物を見せればちゃんと判断してくれるよ
347 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 15:26:56.43 ] >>345 時給制なのになんでそんなことするんだよwあほwww
348 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 21:42:21.69 ] Excel VBA 質問スレから誘導されて来ました。 苦戦しているので、どうかお願い致します。 スペックはXPでExcelは2003です。 現在B1セルに○月1日と日付を入れ、シート名を1日としたものがあります。 これを自動で複製して、B1セル日付を○月2日 ○月3日… シート名を2日 3日…となるように、一ヶ月分のbookを作りたいと思っています。 また、その際に、B1セルとシート名の日付が日曜・祭日に当たる場合、 シート名に色を付けたいのですが、肝心のコードが全く分かりません。 (因みにB1セルの日付はシリアル値で入れていて、 書式で○月○日と表示していて、日付が日曜・祭日に当たる場合は 赤文字になるよう、別シートに祝日リストも作って 条件付き書式で設定してあります。) 一応ウェブを漁って、それらしいコードを拾って動かしてはみたのですが いまひとつ、作りたいものがうまく作れないので こちらで教えていただけないでしょうか。 どうかよろしくお願いいたします。
349 名前:デフォルトの名無しさん [2013/09/07(土) 21:54:30.33 ] shrs
350 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 22:02:50.45 ] >>342 「テーブルを作って」を軽く見てるように思えるけど。そこがデータベースの設計の一番重要な所じゃね? >>業務で使うVBA開発 たとえば、事務所の女の子が勝手にそれらのフォーム作ってちょっと便利なことしてたら、すげーそんなこと できるんだ!って褒められてちょっと大事に扱ってくれるんじゃね?ってレベルのスキルだと思うよ。
351 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 22:04:16.62 ] >>348 お前が何がわからないのかわからない (プログラムで)しなければいけない事を細かく分けて考えて 何がわからないのか特定して、そのわからない事を書け
352 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 22:23:24.01 ] >>342 素人がどんなに上手く料理を作れてもプロの料理人にはなれないのと一緒、やってる仕事の性質が違う
353 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 22:36:49.54 ] >>351 レスありがとうございます。 >お前が何がわからないのかわからない 仕事で関数を使ったExcelシートを作る程度で マクロやVBAなどの知識が全くないので VBAそのものが全く分かりません。 なのでそれらしいコードをwebで拾ってきて使ってみたのですが 思っているものが作れなくて苦戦しています。
354 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 22:37:21.57 ] なんでお前ら若い芽を摘むのにそんなに必死なの?
355 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 22:42:08.80 ] >>348 B1をシリアル値で持っていると言うことは年の情報も持っていると言うことだよね? なら、その月の1日から、翌月の1日から1日引いた日数分だけ シートをコピーしてB1の値だけインクリメントしていく。 あとはB1セルの内容をフォーマットで変えてやって、シート名として設定して、 対象シートのB1セルと休日シートを照らし合わせて休日なら シートを赤くすれば良いだけだと思うんだけど、ここまではいい?
356 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 22:50:05.56 ] いじわる多いのぅww >>348 基礎を学んでないならコードの流用は不可能。 今現在の目的を果たすだけが目的なら丸投げして作ってもらう方がいいわな。 勉強が目的なら、いったん今の目的はあきらめて基礎から勉強したほうがいい。
357 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 23:00:37.83 ] >>348 Excel VBA の話題なのになんでここに誘導されて来るんだよw マクロの記録でシートを複製して出力されるコードに手を加えてみたら? それが無理なら丸投げするしか無理だと思う 今のブックをどっかにアップしてみたら暇な誰かが作って再アップしてくれると思うよ
358 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 23:06:49.36 ] みんなVBA程度に大袈裟だなぁ
359 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 23:09:33.19 ] >>355 すみません、分かりません… >>356 はい、基礎を全く学んでいないので webに落ちているコードを拾ってきて 貼り付ける程度の事しか出来ません… なので丸投げで作って頂けたらとても助かるのですが やはりここでは無理でしょうか… 今現在、作りたいbookが出来上がればそれで十分なのですが。 どうかよろしくお願いします。
360 名前:桃白白 [2013/09/07(土) 23:15:42.15 ] >>359 ちょっとまってて。桃白白いまがんばってるから。
361 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 23:17:52.45 ] >>357 あっちはこの手の質問投下すると例外無く荒れるw
362 名前:デフォルトの名無しさん [2013/09/07(土) 23:30:13.52 ] >>348 問題点1:シート名「1日」の複製 −>マクロの記録でコードが取得出来ます。 問題点2:変更するシート名を2日 3日にするには、DAYを使い、日付の数値だけ抽出します。 (マクロでC1セルに =DAY(B1) を登録して、そのコードを見てください。) 抽出した日付に1足して、文字列変換し、”日”を結合します。その後シート名の変更をします。 問題点3:シート名の変更方法 −> マクロの記録で・・。 問題点4:シート名の日付が日曜・祭日かの判定は出来ていて、「赤文字」にしてる様なので、 そのセルの色で if分を使って赤文字かどうかの判定を行い、赤文字ならシートの色を変更します。 (色の数値は、Cells(セル番地).Font.Color で調べられます。) 問題点5:シート名に色を付けたい −> マクロの記録で・・ 問題点6:質問者の疑問には無いが、うるう年の処理(2月が何日までか)。 計算でも出来ますが、現レベルでは別シートに1〜12月の日数表を作成した方が良いかと思います。 参考URL:www.liveway.net/technic/20090625_111050.html の「lastDay」変数が最終日 参考 EXCELで、ある日は祝日(祝日、国民の休日、振替休日等)かを取得する関数 URL:www.excelio.biz/LABORATORY/EXCEL_CALENDER.html 「マクロの記録」が判らないようでしたら、ネットで検索してください。 . VBAの構文等は excelvba.pc-users.net/ の様なサイトが沢山あります、それらを参考にして下さい . そして、どこが判らないのか、どこが思った通りにならないのかを、明確に質問してもらうと的確な解答が得られます。 。 >>357 Excel VBAスレには、嵐がいて、枝の話も幹で質問しろと嘘の誘導をしているので、>>348 はある意味では被害者。
363 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 23:35:26.76 ] うわあ ・・・うわあ
364 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 23:48:21.27 ] とりあえず、シートコピーするとこまで作ってやった Sub シートコピー() Dim dt As Date Dim lastday As Integer Dim i As Integer Dim sh As Worksheet dt = Sheets("1日").Range("B1").Value lastday = Day(DateAdd("M", 1, dt) - 1) For i = 2 To lastday Set sh = Worksheets.Add(, Worksheets(i - 1)) sh.Name = CStr(i) & "日" sh.Range("B1").Value = dt + i - 1 sh.Range("B1").NumberFormatLocal = "m月d日" 'シート見出しの色変える処理 Next End Sub 色変えるのは、休日定義してるシートの詳細だせ 内容を理解するまで次の質問は禁止な
365 名前:桃白白 [2013/09/07(土) 23:52:21.26 ] >>359 動きますかしら。 https://friendpaste.com/28NRpEPxYtMlJqM42y0pNW 休日判定はシートを参照したほうがいいのだけれども、どのセルに入ってるのかわからないので とりあえずやっつけで。祝日リストのシート名と範囲と書式を教えてもらえる?
366 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 00:10:20.52 ] こっちも全部作った。ただ、入りきらないから分割するよ。その1 Sub main() Dim firstDay As Date Dim lastDay As Date Dim targetDay As Date On Error GoTo Error_Handler '月初日を取得 firstDay = Range("B1").Value '月末日を取得 lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 0) With ThisWorkbook '月初日のシートは既に存在しているので、 '先にシート名とシート色を設定してしまう。 Sheet1.Name = Format(.Sheets(Sheet1.Name).Range("B1").Value, "m月d日") If .Sheets("休日").Cells.Find(firstDay, LookAt:=xlWhole) Is Not Nothing Then .Sheet1.Tab.Color = 255 End If
367 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 00:12:41.86 ] その2 'ひと月分のシートをコピーし、 'シート名、シート色の設定を行う。 For targetDay = lastDay To firstDay + 1 Step -1 .Sheets(Sheet1.Name).Copy After:=Sheets(1) .ActiveSheet.Range("B1").Value = targetDay .ActiveSheet.Name = Format(ActiveSheet.Range("B1").Value, "m月d日") If .Sheets("休日").Cells.Find(targetDay, LookAt:=xlWhole) Is Not Nothing Then .ActiveSheet.Tab.Color = 255 End If Next End With Exit Sub Error_Handler: '例外時はエラー内容を表示する。 MsgBox Err
368 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 00:16:22.53 ] その3 End Sub 休日シート名は「休日」固定で。 違うなら"休日"の部分だけ変えてちょ。
369 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 00:31:40.07 ] 質問させていただいた>>348 です。 みなさま、本当に色々とありがとうございます。 早速試させていただいたのですが >>364 原本の1日のシートと数式を組んであったデータが消え、 日付だけが入った空のシートが複製されてしました… >>365 「型が一致しません」と出てしまいます… >>364 「オブジェクトが不正です」と出てしまいました… なにがいけないんでしょうか、すみません…
370 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 00:36:10.71 ] >>345 かんたん Visual Basic、高橋広樹、2010、技術評論社 ちょっと古いかも知れないが、この本を読んでから決めたら? 1週間で読める入門書 もちろん本屋で、より簡単な、新しい本を探すのもいい >>348 まず、対象月の日数を、知る必要がある 28、29、30、31日? そして、その日数分だけ、シートを作る
371 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 01:12:08.37 ] 済まんかった。今、家で打ち込み直したからもう一度確認して。 その1 Sub main() Dim firstDay As Date Dim lastDay As Date Dim targetDay As Date On Error GoTo Error_Handler '月初日を取得 firstDay = Range("B1").Value '月末日を取得 lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 0) With ThisWorkbook '月初日のシートは既に存在しているので、 '先にシート名とシート色を設定してしまう。 .Sheets(Sheet1.Name).Name = Format(.Sheets(Sheet1.Name).Range("B1").Value, "m月d日") If Not .Sheets("休日").Cells.Find(firstDay, LookAt:=xlWhole) Is Nothing Then .Sheets(Sheet1.Name).Tab.ColorIndex = 3 End If
372 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 01:13:07.76 ] その2 'ひと月分のシートをコピーし、 'シート名、シート色の設定を行う。 For targetDay = lastDay To firstDay + 1 Step -1 .Sheets(Sheet1.Name).Copy After:=Sheets(1) .ActiveSheet.Tab.ColorIndex = xlNone .ActiveSheet.Range("B1").Value = targetDay .ActiveSheet.Name = Format(ActiveSheet.Range("B1").Value, "d日") If Not .Sheets("休日").Cells.Find(targetDay, LookAt:=xlWhole) Is Nothing Then .ActiveSheet.Tab.ColorIndex = 3 End If Next End With Exit Sub Error_Handler: '例外時はエラー内容を表示する。 MsgBox Error End Sub
373 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 01:20:34.40 ] 度々すまん。 その1の .Sheets(Sheet1.Name).Name = Format(.Sheets(Sheet1.Name).Range("B1").Value, "m月d日") の行の"m月d日"のm月はいらないな。"d日"にしといて。
374 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 01:31:48.88 ] >>373 いえ、こちらこそ何度もありがとうございます。 今、新しい方を使わせていただいたのですが 今度は「インデックスが有効範囲にありません」と出てしまいました。 >>368 で言われたとおり、祝日リストのシート名を「休日」にしてあるのですが 複製もとの原本である「1日」のシート名も変えるのでしょうか?
375 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 02:00:43.30 ] >>374 そうだね。必要ないね。その1の .Sheets(Sheet1.Name).Name = Format(.Sheets(Sheet1.Name).Range("B1").Value, "m月d日") の部分を取っ払えばいい。 こちらでは動いているんだけどなぁ・・・ 可能性として考えられるのは1日目のシートオブジェクト名がSheet1でないことかな。 トレースでどの行でエラーが発生しているのか教えてくれれば想定付けられるんだけど・・・
376 名前:364 mailto:sage [2013/09/08(日) 02:42:05.75 ] >>369 ああ、すまん。ホントにシートコピーしないとだめなのか Set sh = Worksheets.Add(, Worksheets(i - 1)) の1行を Worksheets("1日").Copy , Worksheets(Worksheets("1日").Index + i - 2) Set sh = Worksheets(Worksheets("1日").Index + i - 1) の2行にさしかえればとりあえず動くはず
377 名前:364 mailto:sage [2013/09/08(日) 02:49:32.23 ] あとコピーなら sh.Range("B1").NumberFormatLocal = "m月d日" の行もいらんかも
378 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 03:15:10.44 ] う、動いたよママン… >>348 です。 みなさま本当にありがとうございます。 とりあえず>>371 さんのコードで. Sheets(Sheet1.Name).Name のところを .Sheets("1日").Name に変えてみたら、無事動かす事が出来ました。 ただ、ひとつだけうまくいかなかったのが シート名の日曜の色付けが出来ませんでした。 祝日の方は、ちゃんと色付け出来てるのですが。 弄るとしたら、どこら辺を弄れば 日曜に当たるシート名を赤くする事が出来るんでしょうか。
379 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 07:04:59.03 ] 度々すみません、>>348 です。 拾ってきたコードなのですが Select Case Weekday(ActiveSheet.Range("B1").Value) Case 1 ActiveSheet.Tab.ColorIndex = 3 Case Else ActiveSheet.Tab.ColorIndex = xlNone End Select これを足してみたら、日曜に該当するシート名も 色付けする事が出来ました。 色々と教えてくださり本当に助かりました、ありがとうございました。
380 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 07:07:59.89 ] >>378 ああ、祝日シートって言う位で、休日は設定されていないのね。 ならバグ対応も含めて、以下のものを使用して下さい。 その1 Sub main() Dim firstDay As Date Dim lastDay As Date Dim targetDay As Date On Error GoTo Error_Handler With ThisWorkbook '月初日を取得 firstDay = .Sheets(Sheet1.Name).Range("B1").Value '月末日を取得 lastDay = DateSerial(Year(firstDay), Month(firstDay) + 1, 0) '月初日のシートは既に存在しているので、 '先にシート名とシート色を設定してしまう。 '.Sheets(Sheet1.Name).Name = Format(.Sheets(Sheet1.Name).Range("B1").Value, "m月d日") If Not .Sheets("休日").Cells.Find(firstDay, LookAt:=xlWhole) Is Nothing Or _ Weekday(firstDay) = vbSunday Then .Sheets(Sheet1.Name).Tab.ColorIndex = 3 End If
381 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 07:09:25.61 ] その2 'ひと月分のシートをコピーし、 'シート名、シート色の設定を行う。 For targetDay = lastDay To firstDay + 1 Step -1 .Sheets(Sheet1.Name).Copy After:=Sheets(1) .ActiveSheet.Tab.ColorIndex = xlNone .ActiveSheet.Range("B1").Value = targetDay .ActiveSheet.Name = Format(ActiveSheet.Range("B1").Value, "d日") If Not .Sheets("休日").Cells.Find(targetDay, LookAt:=xlWhole) Is Nothing Or _ Weekday(targetDay) = vbSunday Then .ActiveSheet.Tab.ColorIndex = 3 End If Next End With Exit Sub Error_Handler: '例外時はエラー内容を表示する。 MsgBox Error End Sub
382 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 07:13:30.14 ] 修正したのは、日曜日の時シートのタブを赤くするのの他に、 実行時に月初のシートが選択されていなくても ちゃんと動くようにしました。 なんかボロボロだな・・・
383 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 07:21:56.09 ] ActiveSheetか
384 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 07:42:16.50 ] >>383 ああ、実行中に手操作で何かシートが選択された場合、 動作がおかしくなるよってことを言ってる? なら、 On Error GoTo Error_Handlerの行の下に Application.ScreenUpdating = Falseを、 End Withの行と、 Error_Handler:の行の下に、 Application.ScreenUpdating = Trueを 付け足しておけばいい。 画面更新がなくなるから、その方が処理も早くなるし。
385 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 08:05:10.27 ] >>384 それしか思い付かないのはまずくね?
386 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 08:16:54.20 ] ActiveSheetをやめる 簡単なことだ
387 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 08:45:44.43 ] えー、でもこうしておけば変な挙動もしないし、ループも一回で済むし。 何で駄目なの?
388 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 09:42:45.98 ] 本人が満足してるならそれでいいんじゃない?
389 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 10:15:48.43 ] あれだろ、シートを変数に突っ込んで使えば Activeなシートを使うみたいに他からの影響を受けないって奴だろ。 別に動作が保証されてるんならどっちでもいいよ。 むしろそういう方法でなければいけないと言う奴は .NetフレームワークとかからExcelオブジェクトをクリエイトした時、同じ処理を.Net側からやらせたい時 どういうコードを組むのかが見もの。
390 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 11:07:35.37 ] はぁ、だめだこりゃ。
391 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 11:27:06.30 ] 白桃以下のが出てきたw
392 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 12:19:00.08 ] >>389 .NETから呼ぶと何か変わるの?
393 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 13:14:07.52 ] ピラフがやれ
394 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 15:42:01.88 ] ピラフは生理中だからだめだ
395 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 16:37:53.61 ] 食べ物がどうして生理になるんだよ
396 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 17:07:00.51 ] すみませんが、excel2007で次のマクロ普通に動いていたのが nextでエラーになってしまいます。 ネットで拾ったもので自分ではさっぱりわかりません。。 誰か助けていただけますでしょうか? 大量のシートの不要行に"1"を立てて非表示化させるマクロです。 Sub macro1() On Error Resume Next Dim w As Worksheet For Each w In Worksheets w.AutoFilterMode = False w.Range("Am:Am").AutoFilter field:=1, Criteria1:="<>1" Next End Sub
397 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 17:18:26.74 ] >>396 ハード-ディスクの内容がすべて消去される可能性のあるコードを実行する気があるのかな? 全くコードを知らないというのはそういうリスクを背負ってることも理解する必要はある。
398 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 17:26:47.88 ] >>396 せめて、どういうエラーがでたかぐらい書け つか、On Error Resume Nextでエラーでるか?
399 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 17:38:06.66 ] >>398 On Error Resume Nextはエラー無視の暴走モードですよね? これで動いてたんですが。。 コードの実行が中断されました というダイアログがでて、 デバックを押すとnextが黄色になっています。 継続を押すと次のシートの処理に移行し非表示は実行されますが、 100シート以上あって繰り返し実行するにはちょっと。。
400 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 17:40:30.78 ] エラートラップの設定次第でエラー出るよ
401 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 17:50:07.72 ] >>399 こっちじゃ再現しないからわからんけど コードの実行が中断されました でググるとなんか情報あるね
402 名前:デフォルトの名無しさん [2013/09/08(日) 17:55:03.18 ] >>401 ググってみます パッと見たところこれという解決策が。。 って感じみたいです。 もちょっと見てます
403 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 18:07:17.76 ] >>399 再現しないな 中断されたあと、継続押したらまたNextで止まるのか? Breakキーの上になんか乗ってないか
404 名前:396 [2013/09/08(日) 18:13:03.97 ] みなさん ありがとうございます。 ググってたらPCの問題かもと思い、 念のため別のPCに移したらエラー出ず無事実行出来ました。 なんかPCにごみが出来ちゃったのかしら。。 コードの問題じゃないことがわかりまして、 みなさん大変お騒がせしてすみっませんでした。
405 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 18:52:21.09 ] 数か月ぶりにここ見るようになったんだが、桃白白はわかるんだがピラフがどういうキャラか意味わからん。。
406 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 18:59:55.59 ] 知る必要があるのかね
407 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 19:03:27.82 ] 生理キャラだろ?
408 名前:デフォルトの名無しさん [2013/09/08(日) 20:23:00.90 ] VBAでIEの操作を試みています。 以下のようなコードができたのですが、IEウィンドウが複数開いているとうまくいきません。 最も最新に開いたウィンドウに対して以下の操作を行いたいのですが、 ヒントでもいいので教えてください。 一応ググってはみましたが、自分の書いたコードにはうまく組み込めず困っています。 Dim IE Dim Word As String Word = "****" With CreateObject("Shell.Application") For Each IE .Windows On Error Resume Next If TypeName(IE.Document) = "HTMLDocument" Then On Error GoTo 0 IE.Document .all . Item("ID") .Value = Word Application .Wait (Now + TimeValue("0:00:03")) Exit Sub End If Next End With End Sub
409 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 20:53:58.78 ] せめてどう上手く行かないのかぐらい書け
410 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 21:24:56.46 ] >>408 タイトルとかURLとかで特定した方がいいんじゃない?
411 名前:デフォルトの名無しさん [2013/09/08(日) 23:04:56.05 ] 開くたびにURLが変わるページでして、 手動でそのページを開いてから、以下のような感じで一番後ろのIEと決め付ける方法で捕捉しようとしているのですが・・・ Dim IE Dim NewIE Dim Word As String Word = "****" Set IE = CreateObject("Shell.Application") Set NewIE = IE.Windows(IE.Windows.Count - 1) For Each NewIE .Windows On Error Resume Next If TypeName(NewIE.Document) = "HTMLDocument" Then On Error GoTo 0 NewIE.Document .all . Item("ID") .Value = Word Application .Wait (Now + TimeValue("0:00:03")) Exit Sub End If Next End With End Sub
412 名前:デフォルトの名無しさん mailto:sage [2013/09/08(日) 23:33:24.25 ] >>411 URLが変わるったって、ホスト名とかパスは変わらないんじゃないの?
413 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 00:05:09.46 ] というかよく見たら構文からダメなコードなのね Shell.Applicationの順番って必ずウィンドウを開いた順になるのかな? もしそうならFor Eachで最後まで回せば取れるけど 確実じゃない気がするからやっぱりURLとかで特定したいところ Set IE = CreateObject("Shell.Application") For Each w In IE.Windows If TypeName(w.Document) = "HTMLDocument" Then Set NewIE = w Next
414 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 08:28:02.89 ] プロセスの起動日時が一番若いものでいいのでは?
415 名前:デフォルトの名無しさん [2013/09/09(月) 11:03:01.30 ] ExcelのVBAでいろんなExcelファイルから抽出・加工・編集した複数の表データなどを Wordに貼り付けるというマクロを組みたいです。 もちろん表の大きさに応じて、Wordの何ページ目のどこに貼るかというのもVBAでコードを組んで自動処理したいです。 そのために「覚えるべきこと」は何ですか? この目的に沿う「本」や「Web解説サイト」はどこですか?
416 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 11:24:55.39 ] >>415 >そのために「覚えるべきこと」は何ですか? 礼儀作法
417 名前:415 [2013/09/09(月) 11:26:14.61 ] 次は?
418 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 11:26:27.75 ] ある程度はVBAが使えるってのを前提条件に オフィスの達人〈5〉VBA活用術―Excel/Word/Access/PowerPoint/Outlook Office 2003対応 (オフィスの達人 (5)) [単行本] www.amazon.co.jp/%E3%82%AA%E3%83%95%E3%82%A3%E3%82%B9%E3%81%AE%E9%81%94%E4%BA%BA%E3%80%885%E3%80%89VBA%E6%B4%BB%E7%94%A8%E8%A1%93%E2%80%95Excel-Access-PowerPoint-Outlook-%E3%82%AA%E3%83%95%E3%82%A3%E3%82%B9%E3%81%AE%E9%81%94%E4%BA%BA/dp/4839916055 とかか
419 名前:415 [2013/09/09(月) 11:28:38.31 ] >>418 それは下で質問したけど、中古でも値段が高騰しすぎて困っています。 toro.2ch.net/test/read.cgi/tech/1376371376/323 もっと安い、あるいは最新の本はないですか?
420 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 15:25:19.01 ] >>419 値段が高騰するのは、その本に需要があるから 裏返せば、代わりになるような本がない
421 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 18:31:50.30 ] 質問じゃなくてクレクレじゃないか 桃白白、出番だぞ
422 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 21:25:21.82 ] いや、ないものねだり でしょ
423 名前:デフォルトの名無しさん mailto:sage [2013/09/09(月) 22:48:13.94 ] >>419 MSDNライブラリだと何が不足なの?
424 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 22:30:20.32 ] 流れぶった切って質問すまん outlookの送信確認マクロを組んでて、ネットで調べた所 Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) For Each Mailto In Item.Recipients CCList = CCList & Mailto.Address & vbCr Next Mailto MSGText = “題名:「” & Item.Subject & “」” & vbCr & “下記が送信予定アドレスです。” & vbCr & CCList & “送信してもよろしいでしょうか?” & vbCr If MsgBox(MSGText, vbExclamation + vbYesNo) = vbNo Then Cancel = True End If End Sub ってマクロで”送信相手のアドレス”と”件名”を表示させることは出来るんだが、
425 名前:424 mailto:sage [2013/09/10(火) 22:31:49.40 ] 続き。 複数アカウントでメールを送信させてて、 「***@****というアドレスから送ります」 ってな感じの記述を加えたいんだ 上の記述から「Mailto.Address」を「Mailfrom.Address」に変えたらいけるかなー と思ったんだが無理っぽい。 だれかわかる人いるかな?
426 名前:デフォルトの名無しさん [2013/09/10(火) 23:50:22.23 ] >>424 発信者アドレスの偽装って事? だとしたら、だれも答えないと思うよ。 なぜって、「オレオレ詐欺」以上に危険な「オレオレ メール」に応用可能。
427 名前:424 mailto:sage [2013/09/11(水) 00:05:13.18 ] >>426 言い方が悪かった・・偽装でもなんでもないんだ。 複数アカウントを登録していて、 現状、Aアドレス、Bアドレスから送信することが出来る状態なんだ。 何も考えずに送信を押すとデフォルト(仮にAアドレス)のアカウントから送信してしまい、 送信する際に 「Aアドレスから送りますがよろしいですか?」 みたいなメッセージボックが出てくれたらいいな、と思ってるんだ リファレンスとかで調べると”宛先””CC””BCC"の表示はできるっぽいけど”FROM”の表示については書かれて無くて・・・
428 名前:デフォルトの名無しさん [2013/09/11(水) 02:25:18.40 ] >>427 「MailItem.SendUsingAccount」プロパティ が使えそう、Outlook無いので検証出来ず。 『MailItem の送信に使用するアカウントを表す Account オブジェクトを設定します。値の取得および設定が可能です。』 だそうです。
429 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 04:19:22.15 ] >>425 せめてコードが何やってるか理解してから改変しようぜ 送信者のアドレス出すだけなら If MsgBoxの前に、 MSGText = MSGText & "「" & Item.SenderEmailAddress & "というアドレスから送ります」" を追加すれば行けるんじゃないかな
430 名前:デフォルトの名無しさん [2013/09/22(日) 11:46:30.95 ] EXCELのVBAで質問があります。 シートに直接設定したコンボボックスについて、以下の処理をしたいです。 1.まず選択したセルの値によってコンボボックスの中身(リスト)を 変更する 2.次にコンボボックスでの選択をしたときに、その値を取得する方法 (1.で選択したセルの右セルに表示させたいのです) どのイベントを使えばいいのか分からず、どうもうまく行きません。 何かヒントを頂けますか?
431 名前:デフォルトの名無しさん mailto:sage [2013/09/22(日) 11:56:27.89 ] >>430 1.ワークシートのSelectionChangeイベント 2.コンボボックスのClickイベント
432 名前:デフォルトの名無しさん mailto:sage [2013/09/22(日) 20:58:39.16 ] >>431 >>430 は入力規則で作ったコンボボックス(ドロップダウンリスト)のような気がする。 そうだとしたら、イベント引っ掛けるならWorksheet -> Changeじゃね? 2.なんてあったっけ?
433 名前:430 [2013/09/23(月) 16:20:18.65 ] >>431-432 レスありがとうございます。
434 名前:430 [2013/09/23(月) 16:25:14.81 ] コンボボックスはリストボックスではなくActiveXコントロールを 設定しました。
435 名前:デフォルトの名無しさん mailto:sage [2013/09/23(月) 23:17:31.31 ] >>434 ありがとうございました
436 名前:デフォルトの名無しさん [2013/10/01(火) 08:27:31.37 ] VBAでファイル名を変更したいです。フォルダ・ファイル構成は下のような感じです。 [Folder01] img001.jpg img002.jpg img003.jpg img004.jpg img005.jpg ・ ・ [Folder02] img001.jpg img002.jpg img003.jpg img004.jpg img005.jpg ・ ・ [Folder03] img001.jpg img002.jpg img003.jpg img004.jpg img005.jpg ・ ・ [Folder04] ・ ・
437 名前:436 [2013/10/01(火) 08:28:14.80 ] 何がしたいかと言うと、各フォルダのファイル名のimgXXXが、001から始まっているのですが これを前フォルダの最後のjpgファイルの番号の次の番号から、次のフォルダのjpgファイルの番号を始めたいのです。 フォルダとファイルはたくさんあります。(フォルダは50くらい、各フォルダにファイルは30くらい) どういうコードを書けばいいですか?
438 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 08:42:24.31 ] ファイル名用のカウンタ変数を保持してそこからリネームすればいい。
439 名前:436 [2013/10/01(火) 08:45:51.91 ] >>438 なるほど、すばらしいですね! ところでそれってどういうコードをかけばよいのでしょう?
440 名前:436 [2013/10/01(火) 08:46:47.27 ] ちなみにExcelのVBAの標準モジュールというところにコードは書きたいです
441 名前:デフォルトの名無しさん [2013/10/01(火) 11:47:07.85 ] >>437 お前、Excel VBA 質問スレ Part31 で紹介したリンク先を見た上でいってるんだろうな? そこを参照すれば出来るはずだろ? それすらも理解できない?
442 名前:436 [2013/10/01(火) 11:59:06.04 ] >>441 出来ないから聞いておるのだ >>みなさま どなたかわかるかたはいらっしゃらないでしょうか?
443 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 12:48:43.47 ] >>442 素直にコードが欲しいと言えばいいのにwww
444 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 14:29:08.15 ] > 出来ないから聞いておるのだ アホか 何様のつもりだよガキが
445 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 14:58:20.50 ] 質問スレなのだから質問者様が一番偉いのである
446 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 16:11:06.71 ] >>445 それをやりたかったら回答料寄こせや 1レス1万でいいぞw
447 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 16:29:25.32 ] >>444 > 何様のつもりだよガキが 荒らさないでくれるかな。
448 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 16:40:50.01 ] >>447 > 出来ないから聞いておるのだ これを吐いた時点でお前の居場所はない 今更話をそらして逃げようとしても遅い
449 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 16:51:48.60 ] >>436 擬似コードだとこんな感じ。再帰使えそう。 sub foo() folders = get_all_folders(path) folders.sort ' 最初のフォルダの最終番号を取得する last_file_name = get_last_file_name(folders(i)) last_number = parse_file_name(last_file_name) ' 次のフォルダの開始番号を計算する first_number = last_number + 1 ' 二個目以降のフォルダ内のファイルを全てリネーム for i = 1 to folders.size - 2 first_number = rename_files(folders(i + 1), first_number) next end sub function rename_files(folder, first_number) as string files = get_all_files_of_folder(folder) files.sort current_number = first_number for i = 0 to files.size - 1 rename files(i), build_file_name(current_number) current_number = current_number + 1 next rename_files = current_number end sub
450 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 16:53:06.38 ] 間違えた。 誤:last_file_name = get_last_file_name(folders(i)) 正:last_file_name = get_last_file_name(folders(folders.size - 1))
451 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 16:54:06.28 ] さらに間違えてた。 正: last_file_name = get_last_file_name(folders(0))
452 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 16:54:58.55 ] おちつけ
453 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 17:42:42.63 ] ___ ガスッ |___ミ ギビシッ .|| ヾ ミ 、 グシャッ ∩_∧/ヾヽ | ,| ゚∀゚). .| |;, ゲシッ / ⌒二⊃=| |∵. .O ノ %`ー‐'⊂⌒ヽ ゴショッ ) ) ) )~ ̄ ̄()__ ) ヽ,lヽ) (;;;;;;;;;;;;;;;;;)(_(
454 名前:桃白白 ◆9Jro6YFwm650 [2013/10/04(金) 06:12:18.01 ] >>449 ソートといったらバブルソート、バブルソートといったら桃白白、 桃白白はかわいい、ゆえに桃白白はかわいい。証明終了。 >>442 桃白白もやってみるのだ。ちょっと待っててくれればいいのだ。
455 名前:デフォルトの名無しさん mailto:sage [2013/10/04(金) 10:39:31.16 ] また糞コードを叩く流れか 胸が熱くなるな
456 名前:桃白白 ◆9Jro6YFwm650 [2013/10/04(金) 23:01:49.33 ] >>455 とーなりどーしあなたとあたしたおぱいぱーい♪ >>442 できたのだ。 https://friendpaste.com/3Tm2uY4MkIuhJLIGoaCK6D
457 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 00:41:02.96 ] Sub Sample1() Folder = "C:\images" ' このパス以下を処理 Files = "img???.jpg" ' 処理するファイル名 ChDir Folder Set WSH = CreateObject("WScript.Shell") sCmd = """dir /s /b """"" & Files & """"" 2> nul | sort""" ' ファイルの一覧をソート Set wExec = WSH.Exec("%ComSpec% /c " & sCmd) Do While wExec.Status = 0 ' コマンドの終了待ち DoEvents result = result & wExec.StdOut.Read(100) ' バッファあふれ対策 Loop result = result & wExec.StdOut.ReadAll ' ソート済みの一覧を取得 D = Split(result, vbCrLf) ' 一覧を改行で区切って配列に counter = 1 ' ここから連番リネーム処理 For i = LBound(D) To UBound(D) - 1 ' リストの末尾にも改行があるので1つ減らす NewName = Left(D(i), Len(D(i)) - 7) & Format(counter, "000") & ".jpg" ' 超手抜き注意 Name D(i) As NewName Debug.Print i, D(i), NewName ' 確認 counter = counter + 1 Next End Sub
458 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 00:43:34.39 ] あ、ごめん >>457 は無し 書き込んだ瞬間に大きなバグに気付いた
459 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 00:54:05.80 ] 後半だけ訂正 ' ここから連番リネーム処理 For i = UBound(D) - 1 To LBound(D) Step -1 ' リストの末尾にも改行があるので1つ減らす NewName = Left(D(i), Len(D(i)) - 7) & Format(i + 1, "000") & ".jpg" ' 超手抜き注意 Name D(i) As NewName Debug.Print i, D(i), NewName ' 確認 Next End Sub
460 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 03:13:58.77 ] >>456 ○ num = 0 × num = 1
461 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 03:14:35.26 ] まちがえた >>456 ○ num = 1 × num = 0
462 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 03:15:59.18 ] 間違いだらけの青春
463 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 03:44:35.42 ] >>456 各フォルダのThumbs.dbが巻き込まれて全部jpgにリネームされたんだけど
464 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 08:05:51.30 ] 何で現場には、Option Explicitなしで、一部の変数は宣言せずに使ってる 糞コードがあまりにも多いのか。基本中の基本だろうが。
465 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 08:22:43.71 ] >>464 現場に進言すればいいじゃん。
466 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 19:21:00.77 ] お前の現場が糞現場なだけ
467 名前:桃白白 ◆9Jro6YFwm650 [2013/10/05(土) 23:34:19.45 ] >>461 修正した。Σd(゚∀゚)グッジョブ!! >>463 えーそれは困るよじゃあここをこう修正したらいいよとかそういう提案ある? 桃白白お耳傾けちゃう。
468 名前:デフォルトの名無しさん mailto:sage [2013/10/06(日) 09:21:31.54 ] ありすぎて困る 一から書いた方が早い
469 名前:桃白白 ◆9Jro6YFwm650 [2013/10/06(日) 09:54:54.10 ] >>468 困ることはないでしょう。その中からこれがベストだっていうのをひとつ選べばいいだけなんだから。 恋人選ぶのとはちがうんだよ。教えてよ。
470 名前:デフォルトの名無しさん mailto:sage [2013/10/06(日) 10:22:04.15 ] 取り敢えず桃白とピラフとか言う生理キャラとどっちかにして欲しい。 ベストだって言うキャラのを一つ選んで。
471 名前:桃白白 ◆9Jro6YFwm650 [2013/10/06(日) 10:53:00.49 ] あー話逸らせちゃった。 まあほんとに書けるんだったらとっくに書いてなきゃおかしいわけで できもしないくせに見栄張っちゃったってところかな。
472 名前:桃白白 ◆9Jro6YFwm650 [2013/10/06(日) 10:54:29.47 ] これだけ煽れば桃白白に教えざるをえないよ。策士桃白白。
473 名前:デフォルトの名無しさん mailto:sage [2013/10/06(日) 13:22:21.85 ] ってかさ、未だにトリップキー漏れてるトリをつける神経を疑うわな。 というより本人じゃないやつが成りすましてる可能性が非常に高い。 俺の知ってる桃白白はコードなんか書かなくて、もっと紳士な奴なんだが。 本人に失礼だからいい加減成りすましやめたら?
474 名前:デフォルトの名無しさん mailto:sage [2013/10/06(日) 13:45:02.42 ] 取り敢えず桃白白は尻の穴キャラ ピラフは生理キャラでOK?
475 名前:デフォルトの名無しさん mailto:sage [2013/10/08(火) 23:01:07.19 ] WORDマクロってここで良いのかな? エクセルと違って少ないですよね
476 名前:デフォルトの名無しさん mailto:sage [2013/10/08(火) 23:09:26.96 ] >>475 このスレは間口広いから大丈夫のはず
477 名前:デフォルトの名無しさん mailto:sage [2013/10/08(火) 23:11:48.37 ] >>475 何がですか?
478 名前:デフォルトの名無しさん mailto:sage [2013/10/08(火) 23:24:58.30 ] すみません、スレとかマクロのサンプルが少ないってことです 今、WORDファイルの結合マクロを作ろうと考えているのですが 1つ目のファイル(名前.dot)の内容 [001] cat [002] dog [003] monkey 2つ目のファイル(b.dotx)の内容 (001) ねこ (002) いぬ (003) さる のようになっています これを [001] a.docx cat (001) b.dox ねこ [002] a.docx dog ・・・ のように、ファイル名を付けて並び替えて1つのファイルにしたいのです 何かサンプルなどないでしょうか。 本物はもっと長文で、書式や校正履歴が有るために エクセルでセルに張り付けてソートという方法が使えないのです おねがいします
479 名前:デフォルトの名無しさん mailto:sage [2013/10/08(火) 23:39:36.62 ] だが断る!
480 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 00:12:34.20 ] >>478 まず、何がわからないの? ExcelのVBAは使える?
481 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 00:42:34.73 ] >>480 あまり使えないです 乱数発生してランダムにソート?とか 文字列の置換、取り出し(Left、Right、Mid)、変換(StrConv)とかくらいならなんとか C、C++とかは少しだけ出来たんですが(MFCはわからないのでWin32APIで) なんだかVBって記号的というか関数名とか変な感じでよく読めないです やろうとしたのは、まずファイルa.doxから Selection.MoveEndUntil Cset:="[", Count:=wdForward みたいにして、[の前までを選択してファイルの一番上にコピペ 次はb.dox(の前までを選択してファイルの一番上にコピペ これを交互に繰り返せば行けるのではないかと思ったのですが…
482 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 00:58:59.94 ] 名前.dot b.dotx a.docx b.dox 訳がわからん
483 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 01:01:11.58 ] おっと a.dox ってのも追加か
484 名前:デフォルトの名無しさん [2013/10/09(水) 20:28:46.52 ] >>478 WordのVBAはあまり使わなかったが、下の様なフローで出来た、Word2007使用。 1:文書a.docxを開く、全文を変数に代入、文書a.docx閉じる、各行に分割し配列に記録 2:文書b.docxを開く、同上 3:VBA入りの結合用ファイルをアクティブに 4:配列上で各行に分割 5:カッコの位置を工夫し、ファイル名を入れた物をWordに書き出し 6:Word上で、ソート 7:Word上で、各行のカッコの位置を戻す WordのVBAは、慣れていないから難解。
485 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 20:37:56.64 ] 書式と校正履歴はどこ行った
486 名前:484 [2013/10/09(水) 20:43:02.94 ] 書式と校正履歴が必要なんだ、じゃだめだ。 あぁ勘違いでした。
487 名前:484 [2013/10/09(水) 23:16:42.80 ] WordのVBAだけでやると、校正履歴・書式も残る物が出来た、 Wordは変な癖が有るし、いゃ〜めんどくさい、WordのVBAなんかもう触りたくない。 でもいい勉強になった。
488 名前:デフォルトの名無しさん mailto:sage [2013/10/09(水) 23:44:09.07 ] WordはVBAじゃなくてもよく分からないからな。 余り好きじゃない。
489 名前:デフォルトの名無しさん mailto:sage [2013/10/16(水) 08:28:03.32 ] エクセル2003です。 コマンドボタンを直接エクセル画面に貼り付け➡コマンドボタンのプロシージャにプリントアウトのプログラムを記入➡コマンドボタンをクリック➡コマンドボタンが左側にかってに移動(プリントアウトは出来る) コマンドボタンが左側に移動しない方法を教えて下さい。
490 名前:デフォルトの名無しさん mailto:sage [2013/10/16(水) 09:38:11.85 ] >>489 普通の「→」を使わないのが気に障るから教えない
491 名前:デフォルトの名無しさん [2013/10/16(水) 13:43:15.14 ] 効いてる効いてるw
492 名前:デフォルトの名無しさん mailto:sage [2013/10/16(水) 13:48:09.87 ] 2003ってサポート終了するポンコツじゃん。 いまさらそんなの使えるようになっても食っていけないよ。
493 名前:デフォルトの名無しさん mailto:sage [2013/10/16(水) 18:27:10.73 ] >>491 お前は早く普通の→を入力できるように頑張れよw
494 名前:デフォルトの名無しさん mailto:sage [2013/10/16(水) 18:55:25.96 ] iPhoneからの入力だと 最初に出るね。➡︎。
495 名前:デフォルトの名無しさん mailto:sage [2013/10/16(水) 21:51:27.03 ] Appleは、そういう独善的なところが嫌い。 そういうマシンに心酔するユーザも嫌い。
496 名前:ピラフ [2013/10/20(日) 02:37:44.24 ] >>495 ピラフのことは?好き?
497 名前:デフォルトの名無しさん mailto:sage [2013/10/20(日) 02:45:46.58 ] たまにキチガって暴れるから嫌い。
498 名前:デフォルトの名無しさん mailto:sage [2013/10/20(日) 06:02:53.70 ] 桃白を含めて好きって程でもないけど嫌いじゃない。 ひと波乱あった今のEXCELVBAスレなら書き込むと荒れるかもしれないけど意外に有難がられるかもしれない
499 名前:デフォルトの名無しさん mailto:sage [2013/10/21(月) 00:45:14.12 ] 荒らし投稿した時点で既に論外
500 名前:デフォルトの名無しさん mailto:sage [2013/10/22(火) 18:20:53.28 ] 助けてください! Aセルの中に、東京都千代田区永田町1-7-1と入力されてます。 Aセルの中にある数字だけを抽出する事は可能でしょうか?(Bセルに1 Cセルに7 Dセル1) 可能であれば、マクロ組んでいただけませんか?
501 名前:デフォルトの名無しさん mailto:sage [2013/10/22(火) 19:36:40.31 ] 簡単過ぎて食指が動かないからやだ
502 名前:デフォルトの名無しさん mailto:sage [2013/10/22(火) 20:40:01.55 ] >>500 Range("B1")=1 Range("C1")=7 Range("D1")=1
503 名前:500 mailto:sage [2013/10/22(火) 20:40:34.13 ] では難しくしましょう。 Aセルの中の数字は、3つだけとは限りません。 「東京都千代田区大便町1-2-3-101」みたいに4つのこともありますし、 0個のときも、1個のときも、2個のときも、5個以上のこともあります。 さあ、お願いいたします。
504 名前:ピラフ [2013/10/22(火) 20:42:51.33 ] >>503 ピラフ挑戦してみようかな 4つ目の数字はEセルってことでいいの?
505 名前:デフォルトの名無しさん mailto:sage [2013/10/22(火) 20:52:19.98 ] >>484 478です お返事遅くなり申し訳ありません。 レスありがとうございます。 事故に遭い、レスをすることが出来ませんでした 皆様も車にはお気をつけて。
506 名前:デフォルトの名無しさん mailto:sage [2013/10/22(火) 21:02:14.04 ] >>503 それ、難易度の変化無いです。 つか>>500 本人とは思えんww
507 名前:デフォルトの名無しさん mailto:sage [2013/10/22(火) 21:19:32.45 ] >>503 ちょっと前にEXCEL VBAのスレで似た様な質問が挙がってたね。
508 名前:500 mailto:sage [2013/10/22(火) 21:43:36.77 ] みなさん、すみません。 住所の数字が増えた場合は、EセルFセルと右に移動できたらと思います。 よろしくお願いします。
509 名前:506 mailto:sage [2013/10/22(火) 21:51:51.73 ] でも実際、中小企業の事務所ってこういうレベルなんだよね。
510 名前:デフォルトの名無しさん [2013/10/22(火) 22:00:03.49 ] 住所のデータは分割しない方がいいよ 塊全部でひとつなのだから
511 名前:ピラフ [2013/10/22(火) 22:00:28.83 ] >>503 動きますかしら https://friendpaste.com/1IJsAt4r0u4ESjQuNgDXLE
512 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 03:14:08.82 ] わけがわからない なんのために番地をバラバラにするのか 漢数字には対応しなくていいのか 本当は処理したいのは住所じゃないと見た
513 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 04:45:42.24 ] そもそも、Aセルと言うのが俺には理解できないのだが 今だとA列にセルは100万個ぐらいあるんだがなぁ
514 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 08:19:36.09 ] >>513 マジで言ってんのか 馬鹿じゃないのか…
515 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 08:36:05.32 ] やっぱりまともなのはピラフちゃんだけだね ピラフちゃん好きだよ
516 名前:デフォルトの名無しさん [2013/10/23(水) 08:59:22.90 ] 住所の分割の必要性はまじでわからんな
517 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 10:48:12.66 ] アスペかよ
518 名前:デフォルトの名無しさん [2013/10/23(水) 11:37:44.47 ] 「住所から数字だけ抽出」をfor〜nextの自作で試してみた 25万件で1分55秒、50万件で3分33秒(シングルコア、画面更新・再計算停止) A列全ての1048576件はこれ以上と思うので試してない。
519 名前:500 mailto:sage [2013/10/23(水) 15:33:24.66 ] できたわ。 カス共サンクス
520 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 17:45:21.39 ] いえいえどういたしました
521 名前:ピラフ [2013/10/23(水) 19:59:57.25 ] >>519 なん・・・だと・・・
522 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 20:04:49.42 ] VBA初心者です。教えて下さい。数値で0があった時、その下のセルは斜線をつけるようにしたいです。また、0以外の数値の時は下のセルに薄いグレーの網掛けをしたいです。試してはいるもののうまくできません。よろしくお願いします。
523 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 20:16:17.55 ] >>522 ここのスレでもいいけど、 EXCELのVBAに関してはこっちの方が賑わっているから 返事も早いし色んな人の意見が聞けると思うよ。 Excel VBA 質問スレ Part32 toro.2ch.net/test/read.cgi/tech/1381151717/
524 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 20:20:30.14 ] >>522 とりあえずマクロの記録ってのを試してみよう。それが判らないってんでは話にならん
525 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 20:24:21.16 ] >>523 自演で賑わってるように見えるだけでしょ。 >>522 はクレクレ君のようだからそっちでいいと思うけど。 本スレはこっち Excel VBA 質問スレ Part32 toro.2ch.net/test/read.cgi/tech/1381151995/
526 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 20:33:33.23 ] 522です。ありがとうございます。教えていただいたスレに行って見ます。
527 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 20:39:08.22 ] >>525 行ってみましたが、何故本スレなのに10レスしか付いていないんでしょうか?
528 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 21:00:15.81 ] >>527 元々過疎スレだから。 コード作成依頼スレは自演してるからレス数が多くついてるだけ。 実際スレの中で自演してるって認めてるし。 toro.2ch.net/test/read.cgi/tech/1381151717/92 92 返信:デフォルトの名無しさん[sage] 投稿日:2013/10/17(木) 21:17:20.32 >>91 ここまで全部俺の自演でもいいから とっとと自分の立てた糞スレに帰りなさい。 羨ましそうに荒らしに来ない様に。 因みに過去スレが見れるのならテンプレを見れば こっちが本スレなのが分かると思うけど。 Excel VBA 質問スレ Part32 toro.2ch.net/test/read.cgi/tech/1381151995/
529 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 21:08:19.13 ] >>528 過去スレみて大体状況が分かりました。 何故レスが少ないのかも理解しました。 ありがとうございました。
530 名前:デフォルトの名無しさん mailto:sage [2013/10/23(水) 21:14:56.55 ] w
531 名前:デフォルトの名無しさん [2013/10/28(月) 08:01:59.06 ] ExcelのVBAからWebページを操作したいのですが (1)すでにあるページがひらいてるか調べる (2)もしひらいていたらそのページをアクティブにして前面に出し、そうでなければ新しく開く という手順を実行したいです。 苦労してるのは、InternetExplorerというブラウザを使っているのですが そのタブ機能があるのでブラウザは1個だけどその内部にタブが複数開いてるのを どうアクティブにするかで悩んでいます。 どうかよろしくお願いします
532 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 16:28:16.09 ] 嫌です
533 名前:デフォルトの名無しさん [2013/10/28(月) 18:17:37.88 ] >>531 タブを複数開いていてもプロセスはタブごとに個別にあるよ
534 名前:531 [2013/10/28(月) 23:01:50.31 ] >>533 なるほどぉ。 ありがとぅ。 でも該当のやつをアクティブに、つまり前面に出すにはどうやるの?
535 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 23:12:22.77 ] >>534 今どこまでできてんのか見せてみて
536 名前:デフォルトの名無しさん [2013/10/29(火) 00:08:08.87 ] >>534 しらね IEのオブジェクトをFor Eachでとれるんじゃね? それかOSレベルでのプロセス見つけてアクティベートとかできるんじゃね? しらねしらねー
537 名前:デフォルトの名無しさん [2013/11/02(土) 23:27:43.69 ] unlhaのAPI絡みの話ってここでしても良いんですか? ExcelのVBA上からなんですけど
538 名前:ピラフ [2013/11/02(土) 23:35:26.33 ] >>537 いんじゃない。書いちゃいなよ。
539 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 23:47:49.12 ] 537です ソースは memopa.applest.net/d/112d26e7d487c3c35f に 内容は このマクロがあるフォルダにあるlzh圧縮ファイルを解凍し、出来たフォルダが xxxx なら それに " old" を付加しもう一つ xxx を作るというものです 解凍処理そのものは いろんなサイトで見てwなんとか出来たんですが、時たま(これが?なんですが)UNLHAが動作中ですというメッセージを 出して落ちてしまうことがあります。 んでUNLHAのドキュメントでは UnlhaGetRunningとかで動作確認をするとか。これをVBA上で実現する方法をしりたいのですが。 ↑に貼ったソースでは該当部分はコメント化してあります。 'Public Declare Function UnlhaGetRunning Lib "UNLHA32.DLL" Alias "Unlha" () As Boolean 'If UnlhaGetRunning() Then ' MsgBox "UNLHAが現在動作中 一旦このブックを閉じて再度実行してください" ' Exit Sub 'End If の部分です
540 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 02:02:16.59 ] >>539 UNLHA32.DLL は複数同時実行に対応していないんだから、 調子に乗って連続で実行してる時とかに間に合わなくて普通にExitしてるんだろ 適当にループでもさせとけば?
541 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 08:18:57.49 ] >>540 レスありがとです。unlha32.dllはスレッドセーフではないっていうことですよね。 で、その「適当にループさせる」ってのは具体的にはどういうことなんでしょうか
542 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 08:37:12.78 ] >>539 使ってないからよくわからんが引数とか戻り値の型とか違うんだけど? www31.ocn.ne.jp/~heropa/vb05.htm
543 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 11:51:58.89 ] >>542 api定義の部分はさすがに同じだと思うのですが… 後、引数については、、取り敢えずあとで見返してみます^^; 自分のソースの 'UNLHA32.DLL呼出API Public Declare Function UNLHA Lib "UNLHA32.DLL" Alias "Unlha" _ (ByVal hwnd As Long, ByVal szCmdLine As String, _ ByVal Lpstr As String, ByVal wsize As Long) As Long Dim lngRet As Long www31.ocn.ne.jp/~heropa/vb05.htm Declare Function Unlha Lib "UnLHA32.DLL" _ (ByVal hwnd As Long, _ ByVal szCmdLine As String, _ ByVal szOutput As String, _ ByVal dwSize As Long) AS Long Dim lngResult As Long
544 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 12:06:57.35 ] >>543 はあ? >>539 は自分のソースじゃないのか? 悪いけど、抜けるわ。
545 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 16:10:28.85 ] >>541 俺は>>540 じゃないけど スレッドセーフって意味わかってる? 今までの情報ではunlha32.dllがスレッドセーフかどうかは判断できない 適当にループさせるってのは、何も考えなければ 実行中の状態が実行中で無くなるまで、ひたすら実行中かどうかをチェックするってことだ 極端に言えばこんな感じ Do While UnlhaGetRunning() Loop 実際には時間切れとかシステムの占有率とか考えないとダメかもしれんが
546 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 17:07:50.83 ] >>545 情報不足ですいません Unlhaがスレッドセーフでないってのは、unlha32.dllの作者である人がそのAPI 説明ファイルの冒頭で UNLHA32.DLL はスレッド・セーフではありません。(^^;) 従って, 複数スレッドからの同時使用は行えませんので 注意してください。 と書いているんで、そうなのですかということで。
547 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 18:21:28.23 ] >>546 作者がそう言ってるのならそうでしょう そもそもVBAはシングルスレッド前提の言語なんで、VBAで複数スレッドから同時に使用するのは大変ですが
548 名前:537 mailto:sage [2013/11/04(月) 21:38:21.65 ] 宣言部分が間違っていたみたいで Public Declare Function UnlhaGetRunning Lib "UNLHA32.DLL" Alias "Unlha" () As Boolean ↓ Public Declare Function UnlhaGetRunning Lib "UNLHA32.DLL" () As Boolean で If UnlhaGetRunning() = True Then MsgBox "UNLHA動作中" Exit Sub Else MsgBox "test **** UnlhaGetRunningの動作確認 UNLHAはFALSE ****" End If ではtest **** UnlhaGetRunningの動作確認 UNLHAはFALSE ****が表示され、以下の処理も正常に終了 これで正しいのかどうか不安には思いながらも取り敢えずお終い
549 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 15:38:59.33 ] VBAからZip32jを呼び出してファイルをZIP形式で圧縮しているのですが、 ファイル名が「@@file.xls」のようにアットマークで始まるファイルが 圧縮できません。 strCommand = "-u ""file.zip"" ""@@file.xls""" lngSize = Len(str) RC = Zip(hwnd, strCommand, str, lngSize) ざっくり書くとこんな感じでZip32jに渡しているのですが、 こういう場合はZip32jにどういう風にファイル名を渡せば 良いのでしょうか。
550 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 18:15:51.32 ] えすけーぷしーけんす?
551 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 18:31:02.89 ] ふるぱす?
552 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 18:31:42.41 ] ティンコ?
553 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 20:35:05.46 ] マンコ?
554 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 20:39:15.37 ] (´・ω・`)b
555 名前:555 mailto:555 [2013/11/22(金) 20:40:13.16 ] 555げっち(´・ω・`)b
556 名前:デフォルトの名無しさん [2013/11/25(月) 17:34:43.29 ] 質問です。 Set res = Rows(1).Find(What:="2013") これでオブジェクトが必要です。とエラーが出てしまうのですが、原因わかる方いますか? 検索結果がない可能性があるので、この後resのNothing判定をする予定です。
557 名前:デフォルトの名無しさん [2013/11/25(月) 17:45:00.48 ] >>556 この1行ならエラー出なかったょ 他でエラー発生してるんじゃない?
558 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 17:56:44.97 ] >>556 Findの罠だな これで動くこともあるからタチが悪い 面倒でも検索条件を省略せずにきちんと書いてみ
559 名前:デフォルトの名無しさん [2013/11/25(月) 17:57:01.51 ] >>556 Dim res の記述はどうなってる? 'Dim res As Integer 'オブジェクトが必要です エラー 'Dim res As Single 'オブジェクトが必要です エラー 'Dim res As Double 'オブジェクトが必要です エラー 'Dim res As String 'オブジェクトが必要です エラー を再現した。 By 557
560 名前:デフォルトの名無しさん [2013/11/25(月) 18:04:14.58 ] 実際のコードです。エラーのあとデバッグを選択するとp.findの行で止まるので間違いないと思います。 Dim res As Variant ←これはいれてもいれなくてもエラーになります。 以前自分が作ったコードでは、同じような記述で動いていたのでこれでいいのかと。。。 省略せずに書くというのは、どこまで書けばいいのでしょうか? p = Rows(1) o = Year(DateAdd("m", mo, Cells(r, 2))) Dim res As Variant Set res = p.Find(What:="2013")
561 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 18:05:49.51 ] set p = rows(1)
562 名前:デフォルトの名無しさん [2013/11/25(月) 18:08:29.33 ] ありがとうございます。 解決しました・・・・ほんとバカで申し訳ない。
563 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 18:55:09.63 ] ズコー
564 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 12:53:02.32 ] プロシジャが operation1 operation2 operation3 とあって通常だったらoperation1からoperation2,opration3を 一連の流れで実行するのがあります。 operation3にはoperation1でGetOpenFilenameで得たフォルダ名を引数にして call opration3(フォルダ名) と書いてるんですが、このoperation3だけを単独で実行したい場合 どうします?勿論フォルダ名をどうにかして引数に与えるなりしないといけないん ですが。
565 名前:564 mailto:sage [2013/11/26(火) 15:46:06.67 ] ope3_tandokuプロシジャを作り、そこでフォルダを与え、このプロシジャ中で operation3(フォルダ) で、このope3_tandokuをボタンで起動することにしました
566 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 19:14:50.03 ] よくできました
567 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 19:59:41.41 ] call operation3(フォルダの取得関数())じゃないのか、普通は
568 名前:デフォルトの名無しさん mailto:sage [2013/12/10(火) 21:24:24.39 ] 64ビット版Excel VBAでmscomctl.ocxのListViewが使えなくて困っています。 ListBox以外で、64ビット版対応方法を知っている人はいませんか?
569 名前:デフォルトの名無しさん mailto:sage [2013/12/29(日) 13:03:57.51 ] ググれば出てくるじゃん
570 名前:デフォルトの名無しさん [2013/12/29(日) 20:03:14.90 ] マクロでリストを作ろうと思い、試しに簡易版のマクロを組みました。 しかし、リストで参照してしるところが相対参照したいのですが、Formula1:="=$A$25:$D$25をどう変更したらいいでしょうか? ご教示ください。 Sub Macro1() ' ' Macro1 Macro Range("E24").Select ActiveCell.Offset(1, 0).Select Do With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$A$25:$D$25" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With ActiveCell.Offset(25, 0).Select Loop Until ActiveCell.Row = 100 End Sub
571 名前:デフォルトの名無しさん mailto:sage [2013/12/29(日) 20:07:55.37 ] すいません 下げわすれてました。
572 名前:デフォルトの名無しさん mailto:sage [2013/12/29(日) 23:10:51.30 ] 全くソース読む気も無いが、$A$25:$D$25は相対指定じゃない事はわかるぞ A25:D25でいいんじゃないかね
573 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 07:32:19.42 ] >>572 そこは絶対参照のままでもいいんじゃないの? やりたいことが、漏れなく書かれてるわけじゃないから違ってるかも知れないが エスパーすると、たぶんこういうことがしたいのだと思われ >>570 Sub Macro1() Dim r As Long For r = 25 To 75 Step 25 Cells(r, 5).Validation.Delete Cells(r, 5).Validation.Add xlValidateList, xlValidAlertStop, xlBetween, _ "=" & Cells(r, 1).Resize(1, 4).Address Next r End Sub 因みに相対参照にするなら、.Address → .Address(0, 0) しかし、自分の知ってる事というか自分が思い描いてることは 相手も把握している前提で話をするおバカさんって厄介だよね ここはVBAの質問に答えるスレのはずなのに、VBAレベル的には初心者でも回答できるものばかりだが 正しい日本語で齟齬無く要望を伝える能力に欠けた奴の意図をエスパー的に酌み取る事の方ばかり 高レベルの能力が必要とされている気がする まぁ俺もエスパーは本分じゃないんで、上記のコードも要望通りじゃないかもしれないけどw
574 名前:18 mailto:sage [2013/12/30(月) 09:44:13.82 ] >>573 > .Address(0, 0) とか書く奴に偉そうなこと言われても...
575 名前:デフォルトの名無しさん [2013/12/30(月) 09:44:24.16 ] 質問がある。 その質問内容についてはすべてエスパーしてくれ。 で回答は具体的で詳細に。 ではよろしく頼む。
576 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 10:24:26.23 ] >>574 何勘違いしてるの?
577 名前:18 mailto:sage [2013/12/30(月) 12:38:10.77 ] >>576 >>574 の指摘内容が理解できてないの? (w
578 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 12:38:38.33 ] すいません。 事の発端の>>570 です。 自分のやりたいことを詳細に書き込まず、予想して補完してもらうような、質問をして申し訳ありませんでした。 >>572 さん>>573 さんありがとうございました。
579 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 10:44:06.16 ] >>577 まぁ、、、がんばれw
580 名前:18 mailto:sage [2013/12/31(火) 11:12:02.61 ] >>579 理解できてないのか... て言うか、普通インテリセンスが効くから 0 なんて書くわけないと思うんだが。
581 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 13:03:01.75 ] もしかしてAddress(False, False)って書け、なんてレベルの話? しかし、Addressの第一、第二引数は、規定値がTrueとはいえ、Boolean型ではなくVariant型で それ故にインテリセンスも効かないし、そういうコードの明示性で言うなら、25や75を定数化しろって方が先な上に こういう金を貰えるわけでもない場では明示性や読解性を犠牲にしてでも簡略化するのは常套手段なので Addressの第一、第二引数には効かないインテリセンスがどうこう言ってることからしても、 0ではなく、Falseや相対参照を意味する定数を定義してそれを使えなんて単純な話じゃないよね? いったい、どう書くのが正しいと言いたいのだろう?
582 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 20:31:10.76 ] あんまり虐めるな
583 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 20:45:45.07 ] エクセルは表計算が少しできます。マクロとかは知りません。 VBAをマスターしたく本屋へ行きましたがたくさんあり悩みました。 「10日間でマスター・・・」みたいなのがありましたが初心者でも大丈夫で しょうか?そもそも10日間でマスターできるほど簡単?とは思えないのですが 初歩ですかね?
584 名前:デフォルトの名無しさん [2013/12/31(火) 21:05:06.28 ] >>581 は虐めてはいないだろ >>574 が井の中の蛙なだけ 小山の大将が、飛行機から見下された
585 名前:デフォルトの名無しさん [2013/12/31(火) 21:19:31.20 ] >>583 初心者の入門用には、その程度から始めるのが良いかも。 ただ、同時に分厚いVBAの辞書みたいなのも買う事を勧める。 少しできるようになったら、疑問が出るだろうから本を買足すのも良いだろう。 また、「参照設定」での機能を説明している本は少ないので、 そこら辺はネット併用で情報収集して行けばよいと思う。
586 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 21:41:38.76 ] >>583 そもそも何がしたいかなんて人によって違う デカい本屋で一日潰して立ち読みでもしてみて、一番自分がやりたいことが 分かるように書かれてる本を買え ただ関数・メソッドの癖なんかは一々細かく覚えてられんので、リファレンス本は持っておけ
587 名前:583 [2014/01/01(水) 10:02:50.80 ] 皆さん、ご丁寧に回答頂きありがとうございます。
588 名前:デフォルトの名無しさん [2014/01/01(水) 10:42:09.00 ] >>585 「参照設定」を話題にするということは、これはものすごく便利なものということですね? IEを操作するという本で見たことだけはあるけど これは何のために使い、何が便利なのですか?
589 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 16:04:34.73 ] >>588 キーワードが分かってるなら少しはggks 便利かどうかは自分で判断しろ
590 名前:588 [2014/01/04(土) 10:07:28.34 ] >>589 そりゃないよかあちゃん。 参照設定とはなにかどなたかおしえてくださいませんでしょうか?
591 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 10:44:10.13 ] >>590 アプリケーションを「インストールする」みたいなそれ単体では無意味な言葉w
592 名前:588 [2014/01/04(土) 10:46:02.02 ] >>591 レスありがとうございます。 ん、どういうことでしょう? 言葉の意味がよくわからないのですが・・・
593 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 12:43:00.21 ] アプリケーションをインストールするとは、広義では、アプリケーションを実際に使える状態にすることをいう レジストリ登録は必須ではない
594 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 12:48:49.63 ] USBメモリに入れて持ち運べるアプリケーションも それを入れたUSBメモリを接続すること自体がインストール
595 名前:588 [2014/01/04(土) 13:10:34.76 ] ?
596 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 15:59:41.71 ] SDDのインストロールをファイルしてディスクトップのコピペをオーエスするんだよ
597 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 16:30:54.74 ] >>588 別に詳しいこと知らなくても使い方だけ知ってればそれでいいじゃん 俺も知らないけど特に困ってないよ。 とりあえずエクセルの標準的な設定では使えない機能が ライブラリっていう形で用意されてて、 それを参照するように設定することでライブラリの機能が利用できるようになるってことらしいよ。 参照設定の内容はブックごとに保存されるから別のPCにコピーしても同じように動く。 ただし、用意されてるライブラリはエクセルのバージョンごとに違ってるから コピー先のマシンにインストールされてるエクセルのバージョンによっては エラーが出て動かない場合もある(らしい)。 あと、参照設定しないでライブラリの機能を利用することも出来るけど、 その時はインテリセンスが働かないからコード書くときにちょっと面倒だったりする。 一例としてFileSystemObjectを使うときには Microsoft Scripting Runtimeっていうライブラリを参照設定しておくと Dim fso As New FileSystemObject って宣言するだけでFileSystemObjectが使えるけど、 参照設定してないと Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") みたいに書かないといけない。 そして、参照設定していればコード中でインテリセンスが働くから fso.とタイプしたらその後に続くメソッドとかが表示されるけど 参照設定してないとそれが出てこない。 大体こんな程度しか知らないけど、今のところ特に困ってない。
598 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 17:40:10.13 ] >>588 プログラミングの学習は、いくら言葉を覚えて知識だけ詰め込んだって全然ダメだ。 最初はサンプルの丸写しでもいいから、とにかく手を動かせ。
599 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 19:49:40.93 ] > ただし、用意されてるライブラリはエクセルのバージョンごとに違ってるから エクセルではなく大抵はOSやIEな よく使用されるのは、Excelに付属するライブラリより、OSやIE付属のライブラリだから 例に挙げてるFSOも、Excel付属ではなく、OSに付属するIEに付属するWSHに付属するライブラリだから
600 名前:597 mailto:sage [2014/01/07(火) 20:31:40.45 ] >>599 そうなんですか、それは知りませんでした。 (この辺が良く知らないと言う由縁) 教えていただきありがとうございました。
601 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 04:38:24.94 ] FSOはもともとOS付属ではなかったが 参照設定は、ある共通ルールに従って作られたプログラムを使用するために使うもの 別に何かの付属のライブラリじゃなくても良いんだぞ
602 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 05:17:40.58 ] FSOが付属するようになったのはWin98SEからだっけ? 確かWin95やWin98だと、IEのバージョンアップするか、WSHの単体パッケージ入れる必要があったような
603 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 11:57:08.30 ] intにキャストすると小数部四捨五入するのやめれ。
604 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 13:53:01.88 ] >>603 暗黙の変換に頼る方が悪い 適切な関数なり数式なりで処理しろ
605 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 14:09:14.80 ] ところがclng()より速いのがVBA
606 名前:デフォルトの名無しさん mailto:sage [2014/02/07(金) 23:57:24.63 ] >>603 四捨五入じゃないんだけどな それ以前にintにキャストってそれホントにVBAの話か
607 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 00:51:47.10 ] CType関数は小数点以下丸めることがあるから、小数切り捨てたい場合は使ったらあかんのね。
608 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 01:19:57.82 ] >>607 切り捨ては丸めの方法の一つだから、その日本語はおかしい
609 名前:デフォルトの名無しさん [2014/02/13(木) 14:00:02.20 ] テキストボックスに文字を設定する時に 通常はチェンジイベントで設定された文字を処理するように書いてますが とあるタイミングではチェンジイベントを実行したくないのです その、とあるタイミングの前に、テキストボックスのEnabledプロパティをFalseにすれば チェンジイベントが発生しないのかと思ったら発生しますね そうなると、とあるタイミングの前に、グローバル変数を設定して イベントの中でその変数を見て抜けるようなベタな方法しかないですか?
610 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 14:12:23.89 ] >>609 そこで一時的に全部のイベントを殺してもいいのならEnableEvents 止めたいのがテキストボックスのチェンジイベントだけなら自前でフラグ変数を用意しかない
611 名前:デフォルトの名無しさん [2014/02/13(木) 14:24:24.41 ] >>610 VBAにはそんなのがあるのですか、良いですね VB6のスレが無かったので、同じだろうと思ってここでお聞きしましたがVB6にはないようでした ありがとうございました
612 名前:デフォルトの名無しさん mailto:sage [2014/02/13(木) 14:56:01.33 ] EnabledがFalseでイベント発生したっけ? イベントが発生してから無効にしてるんじゃないかと言う気がするが
613 名前:デフォルトの名無しさん [2014/02/14(金) 12:48:25.84 ] 説明が足りませんでした Enabled=Falseでユーザー操作はできなくなりますが コードからは操作できて、その時にイベントが発生してしまいます
614 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 13:24:45.38 ] VBAならAfterUpdate使え それ以外なら知らん
615 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 20:19:21.38 ] Enabled=Falseの時のイベント発生を除外したいなら、 イベントハンドラでEnabledの値を確認すれば解決。
616 名前:デフォルトの名無しさん [2014/02/16(日) 07:35:43.11 ] なるほど、本来の使い方ではないけど、それでいいわけですよね 対象のコントロールが少ないならグローバル変数を用意するよりスマートだし
617 名前:デフォルトの名無しさん [2014/02/16(日) 21:56:15.35 ] スマートは大事
618 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 02:35:55.66 ID:oH1Ugruw] ID発行記念カキコ
619 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 07:03:26.55 ID:FLjN0SBh] 実現の可否が分からないため、質問させて下さい。 Excel VBAでShell関数を使い、Powershellを呼び出し、その出力結果をtxtに出力して取り込んでいます。 Powershellを走らせて待っている間、Powershellの処理に時間がかかる場合に「(応答なし)」が表示されます。 待っていると動いてくれるので「(応答なし)」は表示させたくないのですが、DoEventsを使ってもだめでした。 「(応答なし)」を表示させない方法はあるのでしょうか。
620 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 07:37:44.08 ID:kKPzvMNA] 「Powershellを走らせて待っている間」について詳しく
621 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 07:47:18.40 ID:IpiW3W82] ついでに、その応答なしってどこに表示されるかも
622 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 10:15:49.53 ID:FLjN0SBh] >>620 >>621 powershellで「compare-object」という比較のコマンドを実行しています。 比較するデータと結果の差分が多いと出力に時間がかかり、作成したユーザフォームの左上にあるcaptionに「(応答なし)」と表示されてきます (10秒位経っただけで表示されてしまう印象)。 その「(応答なし)」を表示させない方法があるのかどうか、知りたいと考えています。
623 名前:622 mailto:sage [2014/03/15(土) 10:19:01.52 ID:FLjN0SBh] 処理の流れとしては、 ユーザフォームでファイルを選択させて、 もろもろのオプションを指定した上で、 実行してpowershellを呼び出してcompare-objectで比較して出力、 という内容になります。
624 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 10:33:33.89 ID:bmQ5jObQ] VBA側のCaptionに表示させたくない文字列の内容が分かってるなら、 単に条件分岐させて消すなりなんなりすればいいじゃん
625 名前:622 mailto:sage [2014/03/15(土) 11:08:40.69 ID:FLjN0SBh] >>624 すいません、正式名称が何というのか分かっていなかったのですが、「タイトルバー」ですかね、、、 Captionの右側に「(応答なし)」が表示されてきたので、622の箇所ではCaptionと書いてしまっています。 622の質問の段階で、Captionで意味が通じているようであれば、 条件分岐をさせて「(応答なし)」を出さない方法がよく分かっていないです。
626 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 11:52:35.81 ID:kKPzvMNA] 『待っている間』について詳しく
627 名前:622 mailto:sage [2014/03/15(土) 14:12:17.82 ID:FLjN0SBh] >>626 コードの必要な箇所を抜き出すと以下になります。 ====================== Public Const PROCESS_ALL_ACCESS As Long = &H1F0FFF Public Const INFINITE As Long = &HFFFF Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _ ByVal dwMilliseconds As Long) As Long Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long If 〜 Then Dim TaskId As Long Dim hProc As Long DoEvents TaskId = Shell("powershell " & Chr(34) & "& { " & 〜 & "}" & Chr(34), vbMinimizedNoFocus) hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, TaskId) If hProc <> 0 Then Call WaitForSingleObject(hProc, INFINITE) CloseHandle hProc End If End If ====================== 実のところ、shell関数の所で止まっていると思い込んでいたのですが、確認したところだと、powershellというよりは後続の同期処理、「Call WaitForSingleObject(hProc, INFINITE)」のところで起きているようでした。 おそらくこの部分を変えてやればうまくいくと思うのですが、しかしどうすればいいのか、分からない状況です。
628 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 16:15:36.48 ID:3ah5yf0J] >>627 同期処理用のAPIではどうしても応答なしになってしまう Powershellのスクリプトの最後で、処理の完了を通知するぐらいしか思いつかない たとえばテンポラリファイルを使うとか原始的な方法で
629 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 16:37:06.66 ID:IpiW3W82] >>627 > WaitForSingleObject 一番最後の引数に 1000 ぐらいを指摘して、1秒毎にポーリングすればいい。 タイムアウトかプロセスが終了したのかは戻り値を見ればわかる。
630 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 16:42:00.26 ID:bmQ5jObQ] >>628 Function findMyBook($bookname) $books = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application") foreach ($mybook in $books.WorkBooks){ if ($books.Name -eq $bookname){ return $mybook } } 実行するVBAのブック名が固定されるんなら、PS側の必要な処理が終わった後に PS側でそのブック名見つけてやればいいんじゃないかね多分
631 名前:622 mailto:sage [2014/03/15(土) 22:02:16.82 ID:FLjN0SBh] >>629 VBAを以下のように修正し、応答なしが出なくなったことを確認しました。 ====== (前) If hProc <> 0 Then Call WaitForSingleObject(hProc, INFINITE) CloseHandle hProc End If ====== (後) Dim RC As Long If hProc <> 0 Then Do RC = WaitForSingleObject(hProc, 1000) DoEvents Loop While (RC = &H102) If RC <> 0 Then Exit Sub End If CloseHandle hProc End If ====== >>630 VBAの方でうまくいったのでpowershellの方は試していませんが、別の機会に試してみます。 皆様、ご協力ありがとうございました。
632 名前:デフォルトの名無しさん mailto:sage [2014/03/15(土) 22:29:46.48 ID:IpiW3W82] >>631 > If RC <> 0 Then > Exit Sub > End If > CloseHandle hProc RC <> 0 の時もハンドルクローズしないとリークするよ。
633 名前:デフォルトの名無しさん mailto:sage [2014/03/16(日) 09:30:39.93 ID:cyT7e+/z] >>632 ご指摘助かります。 入れておきます。
634 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 01:09:57.92 ID:HkRxLSsC] 配列(A,B,C,D) 配列(123,456,789) これを下記のようにDebug.Printしたいのですが、コードをご教授ください。お願いします。 A123 B123 C456 D456 E789 F789
635 名前:ピラフ [2014/03/30(日) 02:33:17.39 ID:aRmbpBvo] >>634 ピラフが教えてあげちゃう。 Dim A A = Array("A", "B", "C", "D", "E", "F") Dim B B = Array("123", "456", "789") Dim I I = 0 Dim E For Each E In B Debug.Print A(I) & E Debug.Print A(I + 1) & E I = I + 1 Next
636 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 03:21:41.62 ID:HkRxLSsC] >>635 ピラフ様 あなたが私を救って下さいました。ありがとう。(心臓)
637 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 07:21:17.99 ID:5cM6x3wc] 二人ともよく見ろ できてないじゃん タオパイの自演か?
638 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 01:17:01.74 ID:+/Q0rb5y] Debug.Print A(I + I) & E Debug.Print A(I + I + 1) & E
639 名前:デフォルトの名無しさん [2014/03/31(月) 13:20:56.18 ID:dIVDD8y4] 天津飯が好きです@22歳OL
640 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 19:39:21.01 ID:+xOJ5BKc] >>638 なんじゃそりゃw ふつーは I = I + 2 だろ
641 名前:桃白白 ◆9Jro6YFwm650 [2014/03/31(月) 21:27:38.02 ID:N162Y8AS] >>639 桃白白のことは?好き?
642 名前:デフォルトの名無しさん mailto:sage [2014/03/31(月) 21:47:20.15 ID:DtbGifhU] 桃(も)白(ちろ)白(ん)
643 名前:デフォルトの名無しさん [2014/04/01(火) 23:08:43.56 ID:iMQ7tFIo] Excel VBAで、シートのOELobjectsとしてファイルを追加しましたが、 そのファイルをまたファイルとして出力する方法がよくわかりません。 ご教示いただけないでしょうか。 一時的なバックアップとしてファイルをシート上に保管して、問題があったらそこからファイルを復元しようとしてます。
644 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 08:27:13.26 ID:112XWAfL] ここは貼ってもいいんでしょうか? 作ったものが全く思い通りに動かず悩んでます。 初心者なので別スレがあるのであれば教えていただけますと移動いたします。
645 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 09:14:36.93 ID:jEbNeAxo] 短いのならここに直接貼ってもいいよ 長いのはコード貼るサイト使った方がいいと思
646 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 10:04:40.69 ID:112XWAfL] ありがとうございます。技術が無いので無駄に長くなってしまっています。
647 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 10:12:07.35 ID:jEbNeAxo] とりあえず、コード貼れるサイト https://friendpaste.com/ 選択肢にVBAがないからVB.netでも選んどいて
648 名前:デフォルトの名無しさん mailto:sage [2014/04/20(日) 23:00:50.17 ID:s+35q5Om] >>644 コードまだー? 俺も初心者だから他人の書いたコードを参考にしたいんだよー
649 名前:デフォルトの名無しさん mailto:sage [2014/04/21(月) 07:31:38.50 ID:4zlYEuTE] 自己解決しました どうも
650 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 20:07:42.26 ID:xveRB+Bl] ExcelのA1〜F1に任意で入れた数字を降順で並べたいんだけどよくわからん… バブルソートさせるのはわかるが、表から数値を持ってくるにはどうしたらいいんですか?
651 名前:デフォルトの名無しさん mailto:sage [2014/04/23(水) 20:44:27.34 ID:ZM+hJQpr] >>650 a = Range("A1:F1")
652 名前:デフォルトの名無しさん mailto:sage [2014/04/24(木) 00:53:35.48 ID:m6J4LtNe] >>651 sub sort() Dim a As Integer Dim i As Integer Dim j As Integer Dim min As Integer a = Range(A1:F1) Do While j < a - 1 i = j + 1 Do While i < a End Sub よくわからん
653 名前:デフォルトの名無しさん mailto:sage [2014/04/24(木) 01:40:46.12 ID:nXU9pvpI] >>652 aは配列 Rangeは初心者にはおすすめしない Dim a() As Integer Dim i As Integer For i = 1 To 6 a(i) = Cells(1, i) Next 宿題は自分でやれ
654 名前:デフォルトの名無しさん mailto:sage [2014/04/24(木) 18:08:41.31 ID:NeL4TUu8] デフォルトプロパティ省略するのやめた方が良いぞ
655 名前:デフォルトの名無しさん [2014/04/24(木) 18:30:46.52 ID:ZALVHb/C] >>654 それはなぜですか?
656 名前:デフォルトの名無しさん mailto:sage [2014/04/24(木) 19:43:11.79 ID:nXU9pvpI] 左辺がVariantじゃないから大丈夫
657 名前:デフォルトの名無しさん mailto:sage [2014/04/24(木) 20:07:59.57 ID:mnsZs1hI] 今時学校でVBAを教えるところがあるのか
658 名前:デフォルトの名無しさん [2014/04/29(火) 17:43:11.79 ID:cd9z2Wuk] PDFで問題となっているものを、マクロを使って以下のように以下のようにできますでしょうか? もし、可能ならばご教示ください。 1、PDF上の問題記号を選択すると解答選択肢が出てくる。(リストボックスのように) 2、その中から解答を選択できる。 3、最後に正答率、間違ったところの答え、間違ったところの根拠表示
659 名前:sage [2014/04/29(火) 17:44:53.56 ID:cd9z2Wuk] すいません。上げてしまいました。
660 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 17:55:04.83 ID:KFswrGoL] すいません。
661 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 17:59:31.75 ID:AVYTmVui] >>658 とりあえずPDFのサンプルをどっかにアップしてください
662 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 18:09:22.14 ID:KFswrGoL] www.pref.kochi.lg.jp/soshiki/310601/h24itijisinnsamondaitokaitou.html の一番上にある教職・一般教養 [PDFファイル/1.93MB】です。 よろしくお願いします。
663 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 18:21:18.11 ID:/qylVqTc] >>658 そのPDFの内容のうち、どこが問題記号でどこが解凍選択肢か、正解はどれか そう言った情報が機械的に判断できる必要があるんだが、それは可能なのか?
664 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 18:25:24.29 ID:8Pfgcz1/] >>658 ttp://pdf-file.nnn2.com ここでも嫁
665 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 18:35:52.24 ID:hNJPTToz] >>663 そうですね。確かに正解と回答を参照することが頭から抜けていました。正解は正解のPDFを元に手打ちで、Excelに打ち込もうかと思うのですが、良い方法はありますでしょうか?
666 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 18:37:58.44 ID:hNJPTToz] >>663 >>>658 >そのPDFの内容のうち、どこが問題記号でどこが解凍選択肢か、正解はどれか >そう言った情報が機械的に判断できる必要があるんだが、それは可能なのか? このすべてどうやればいいかわかりません。
667 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 20:11:16.39 ID:7Qss/xhP] 対象のPDFが最初の1本だけの場合、問題数は28、回答のパターンは5つかな? この分量だと全自動化は非効率すぎる コード書く手間を考えると手動でリストボックスを並べてった方が早い 全文をコピペしたあと、カッコの中に丸付き数字が入った部分を文字列検索してリストボックスに置き換え これぐらいはVBAでできるな 選択肢は丸数字、スペース、単語、スペースの繰り返しになってる行を検索、それ以外のパータンは手動で設定
668 名前:デフォルトの名無しさん mailto:sage [2014/04/29(火) 20:13:02.51 ID:7Qss/xhP] よく見たら全部画像じゃねーか まずはOCRからか こんなもんVBAの質問の範疇じゃないわ
669 名前:デフォルトの名無しさん mailto:sage [2014/05/03(土) 20:16:41.15 ID:zpOcxqmE] 何万回も計算とかするためにセルに入力されてる1000単位のデータを、いちいちシートから参照すると時間がかかりそうだから二次元配列に格納して取り扱ってるんですが、やっぱり計算に時間がかかるんで配列より早い方法ってないですか? そもそもシートから参照したほうが早かったりしますかね。
670 名前:デフォルトの名無しさん mailto:sage [2014/05/03(土) 20:20:45.14 ID:6uPX0+EP] その前にシートに計算式がてんこ盛りなら再計算をストップしてからするとか
671 名前:デフォルトの名無しさん mailto:sage [2014/05/03(土) 20:53:57.75 ID:Ucenml3N] >>669 すくなくともセル参照よりは配列を参照する方が早いというのが通説 頻繁に参照する場合は配列に入れてアクセスするのは常套手段 時間かかってるのが参照ではなく計算そのものなら、参照早くしてもあんまり効果ないだろ
672 名前:デフォルトの名無しさん mailto:sage [2014/05/03(土) 21:13:46.07 ID:pGt2sRew] >>669 計算量が多くてスピードが重要ならVBAじゃなくてせめてVBを使え
673 名前:デフォルトの名無しさん mailto:sage [2014/05/03(土) 21:20:32.55 ID:BzVjbdP5] >>66 > そもそもシートから参照したほうが早かったりしますかね。 1000単位のデータの内使うのがひとつだけとかの特殊な状況でない限り、ぜ〜〜〜っていあり得ない。 つーか、今配列使ってるならセル参照に変えてみなよ。
674 名前:デフォルトの名無しさん mailto:sage [2014/05/03(土) 22:48:42.50 ID:zpOcxqmE] どうも回答ありがとうございます。 配列のほうが早いみたいですね。 シートでの計算も一切してませんし、会社のPCなのでVBを導入することも難しいので 計算式を見直して速度を上げたいと思います。
675 名前:デフォルトの名無しさん mailto:sage [2014/05/03(土) 23:04:23.60 ID:pGt2sRew] まともなコンパイラも許可せずに、そんな大変な計算をさせるなんてどんなブラック企業だ
676 名前:デフォルトの名無しさん mailto:sage [2014/05/03(土) 23:53:50.92 ID:8kppz192] >>674 計算式を見直すんじゃなくて、処理を見直したほうがいいと思う
677 名前:デフォルトの名無しさん mailto:sage [2014/05/04(日) 10:30:37.54 ID:A7LETp9o] エクセルVBAのunicode文字列をdllに渡す処理のことで質問があるんだけど このスレでOKですか?
678 名前:デフォルトの名無しさん [2014/05/04(日) 10:46:31.65 ID:PkGldEjn] 構造体の変数が2つあるんですが 1つを他のもののコピーとしたいんですが 単に代入すると同一のものの参照となります。 そうじゃなくて構造体の全メンバの変数の値をコピーするにはどうするのが一般的ですか?
679 名前:デフォルトの名無しさん [2014/05/04(日) 10:47:16.38 ID:PkGldEjn] Structure Student Dim name as String Dim age as integer Dim sex as String Dim first_time_sex_date as Date End Structure Dim student(2) as Student student(1).name="Taro" student(1).age=16 student(1).sex="Male" student(1).first_time_sex_date="2012/7/7" student(2)=student(1) student(2).name="Jiro" みたいにすると変になる。
680 名前:デフォルトの名無しさん [2014/05/04(日) 10:48:20.51 ID:PkGldEjn] VBAでIEを操作するとき タブ(複数開いてる)でアクティブになっているページをgetするためには どういうコードになりますか?
681 名前:デフォルトの名無しさん [2014/05/04(日) 10:49:41.57 ID:PkGldEjn] あ、そういえばExcelで他シートをActivateしたらそのシートでActiveCellになるはずのセルのアドレスを そのシートをActivateせずに取り出す方法を以前発見したのですが それはどういう方法だったのでしょうか?
682 名前:デフォルトの名無しさん mailto:sage [2014/05/04(日) 14:59:19.38 ID:ifQjgP9H] >>678 構造体の全メンバをコピーする関数はないの? クラスによくある、cloneとか コピーには、Shallow Copy(浅いコピー)と、 Deep Copy(深いコピー)の2つがある 構造体の中に、構造体の参照があったらどうする? クラスの中にクラスの参照とか、または相互に入っていたら? さらに、2重、3重になっていたら? 深いコピーだと、参照なら本体を新しく作って、 本体もコピーするが、 浅いコピーだと、参照をコピーするだけなので、 本体は同じものを使ってしまう
683 名前:デフォルトの名無しさん [2014/05/04(日) 15:10:16.41 ID:PkGldEjn] >>682 すんません、なにも知らんです。 ExcelのVBAには全メンバコピーの方法ってないのですか? cloneってなにかのクラスのメンバメソッド? あれ、VBAはクラスって使えるの? ところで他言語でクラスの勉強はじめたけど、よく考えたら構造体とクラスって似てるよな。
684 名前:682 mailto:sage [2014/05/04(日) 17:21:28.68 ID:ifQjgP9H] VB.netには、Copy, Cloneがあるが、 VBAはV6仕様なので、無いかも? クラスはある クラスモジュールにクラスを定義して、new して使 なので、ここにCloneを自分で定義したら? 漏れもよく知らない 検索で調べただけだから、自分でも調べて それと、複数のスレで同じことを聞く、 マルチポストは禁止なので、どちらかを取り消すこと
685 名前:デフォルトの名無しさん mailto:sage [2014/05/04(日) 18:18:53.17 ID:MnWuoZnQ] >>683 >ところで他言語でクラスの勉強はじめたけど、よく考えたら構造体とクラスって似てるよな。 ちょっと待て。VBAは普通構造体というとユーザー定義型のことを指すけど、 VB.NetやC#の構造体とごっちゃに考えていないか? VB.Netとかの構造体でクラスと似ていると言うなら、 そりゃそうだろとしか言いようがない。と言うか、 どういう時にクラスを使ってどういう時に構造体を使うのかを調べれば すぐに分かると思う。
686 名前:デフォルトの名無しさん mailto:sage [2014/05/06(火) 22:58:33.18 ID:moIIdFlD] かなり低レベルな内容だとは思いますが、判らないので教えてください。 日付をmm/dd/yy形式で出力してくるログをyyyy/mm/dd形式で取り込みたいのですが、 普通にformat(date,"yyyy/mm/dd")みたいにするとうまくできません。 (たとえば05/05/14は、2014/05/05とならず、2005/05/14となってしまいます) とりあえず仕方なく前6桁と後ろ2桁で分離してくっつけなおすという格好悪い方法でやってますが、 もっとスマートなやり方があったら教えて欲しいです。 よろしくお願いします。
687 名前:デフォルトの名無しさん [2014/05/06(火) 23:12:00.35 ID:Avr/JzZk] 低レベルとは 0100011011010101 みたいな話だ。
688 名前:デフォルトの名無しさん mailto:sage [2014/05/07(水) 00:35:08.77 ID:uh4oWvq+] >>686 前5桁じゃなくて6桁? ログってことはテキストファイルだろうから、テキストファイルウィザードで日付→MDYを選択すればいい imo73.eek.jp/up/imo0105.png
689 名前:デフォルトの名無しさん mailto:sage [2014/05/07(水) 07:35:46.76 ID:SH7lri32] >>688 即レスありがとうございます。 そうです5桁でした。 そして対象が行ごとに違う内容が入ってくるログなのと、 読み込んだ日付を基準に処理を分岐させたいのでその方法は使えないです。
690 名前:デフォルトの名無しさん mailto:sage [2014/05/07(水) 08:31:27.71 ID:FZZA6k3k] >>689 > とりあえず仕方なく前6桁と後ろ2桁で分離してくっつけなおすという格好悪い方法 で、やれてるんじゃねーのかよ。 まあ、条件後だしする奴にはなに言っても無駄か...
691 名前:デフォルトの名無しさん mailto:sage [2014/05/07(水) 12:49:17.67 ID:oO9n6rpk] 次の行が読めなかったんだな。可哀想に。
692 名前:デフォルトの名無しさん [2014/05/07(水) 13:43:37.48 ID:rXgxEPuc] セールスマン問題にアニーリング法をうまく組み込めない…
693 名前:デフォルトの名無しさん mailto:sage [2014/05/07(水) 14:17:10.39 ID:uh4oWvq+] >>692 VBA無関係 データ構造,アルゴリズム,デザインパターン総合スレ 2 toro.2ch.net/test/read.cgi/tech/1362301811/
694 名前:デフォルトの名無しさん [2014/05/07(水) 14:52:43.45 ID:eMxnpyoF] >>689 方法はあまり変わらんけど、こんなのも有るよ moto = "05/07/14" Debug.Print "moto= " & moto moto20 = Left(moto, 6) & "20" & Right(moto, 2) Debug.Print Format(moto20, "yyyy/mm/dd") 2099年までこの方法は使える、2007では識別出来たけど、他Verは判らない。
695 名前:デフォルトの名無しさん mailto:sage [2014/05/07(水) 18:18:55.57 ID:MZ01fZnX] ゴミ
696 名前:デフォルトの名無しさん mailto:sage [2014/05/07(水) 22:57:09.28 ID:VZywwylY] >>686 Splitで"/"で分割して、年の部分だけ頭に"20"でもくっつけて、 順番かえて"/"で結合するようなんじゃダメ?
697 名前:デフォルトの名無しさん mailto:sage [2014/05/08(木) 00:00:54.73 ID:UhAEWxzw] 年が2000年代固定ってどうなのよ ログで99年が2099年ってどこの未来から来た人ですか
698 名前:デフォルトの名無しさん mailto:sage [2014/05/08(木) 00:46:43.35 ID:E+ainyFV] それはシステムの特性によって切り分ければいい話だ どのみち入力の年が2桁の時点で判断は必要になるわけで
699 名前:デフォルトの名無しさん mailto:sage [2014/05/08(木) 01:06:45.17 ID:8vH2dr8E] 年数の二桁→四桁変換はOSの設定に任せとけば良い。 とか思ったけど、書式指定でDateに変換する方法が無い罠だった。
700 名前:デフォルトの名無しさん mailto:sage [2014/05/08(木) 16:40:16.01 ID:UhAEWxzw] スマートなやり方ってのがどんなのをご希望か知らんが moto = "05/07/14" Debug.Print "moto= " & moto saki = DateSerial(Mid(moto, 7, 2), Mid(moto, 1, 2), Mid(moto, 4, 2)) Debug.Print Format(saki, "yyyy/mm/dd") まあこんな感じか
701 名前:デフォルトの名無しさん mailto:sage [2014/05/08(木) 18:22:31.60 ID:uOW3clqT] どうやっても大差ない moto = "05/07/14" saki = DateValue(Right(moto, 2) & "/" & Left(moto, 5)) Debug.Print Format(saki, "yyyy/mm/dd")
702 名前:デフォルトの名無しさん [2014/05/09(金) 10:23:43.29 ID:QVvO9eKk] ノートン 問題 裁判 ノートン 問題 裁判 ノートン 問題 裁判 ノートン 問題 裁判
703 名前:デフォルトの名無しさん [2014/06/12(木) 22:38:54.01 ID:JGtl8L6J] 日別の購入データの通し番号から、マスターを参照してジャンル分けして、ジャンルごとの合計金額を出したいです。 light.dotup.org/uploda/light.dotup.org28231.png ↑ データはこのような画像の通りにシート3つに分かれて存在しています。 どのようなマクロを組めばいいかお教え願いたいです。 ジャンルごとに変数というものを持たないといけないのでしょうか? 実際は母が使うので、ボタン一つで出来るのだとありがたいのですが・・・ 大変面倒な質問ですが、お願いします 具体的なコードを教えてください 本当に困っていますお願いします
704 名前:デフォルトの名無しさん mailto:sage [2014/06/12(木) 22:54:39.12 ID:LMWZ0+/Q] >>703 ピボットテーブル使うってのは? 答えに全くなってないわけだが、、、、
705 名前:デフォルトの名無しさん [2014/06/12(木) 22:55:17.66 ID:JGtl8L6J] >>704 ボタンひとつで計算してくれるようにしたいんですが そのコードを教えてください
706 名前:デフォルトの名無しさん mailto:sage [2014/06/13(金) 00:07:26.49 ID:3uExzG0V] 凄まじいマルチw
707 名前:デフォルトの名無しさん mailto:sage [2014/06/13(金) 10:30:47.32 ID:jJMpWNsU] >>705 コード作ってもいいが保守するのが大変。 まずは標準の機能でできないものかトライするよろし。
708 名前:デフォルトの名無しさん mailto:sage [2014/06/14(土) 15:16:41.92 ID:UnUM1hDE] こんにちは。セルの不一致部分を取り出して、1から並べ直し、 修正したデータを入力するというマクロを作成しているのですが、 同じ列で複数の間違いがあった場合、iを進めないように、コメントアウトしているif文を入れたのですが、 そうすると、2行目で 実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです が表示されてしまいます。 列に間違いは2つ以上ないということで、コメントアウト部分を削除したままなら問題なく稼働するのですが、 この1文を入れるとどうしても進みません。 Arrayには、不一致部分のセルの座標が入っています。 全然ここから進まなくて困っていますので、どうかご教授お願い致します。 Do ws.Cells(Array_l(j), Array_r(j)).Value = s1.Cells(i + 1, Array_r(j)).Value 'B1の数値を修正する ws.Cells(Array_l(j), Array_r(j)).Interior.Color = xlNone 'B1のセル背景を元に戻す ws2.Cells(Array_l(j), Array_r(j)).Interior.Color = xlNone 'B2のセル背景を元に戻す 'If Array_l(j) = Array_l(j + 1) Then i = i - 1 'End If j = j + 1 i = i + 1 If Array_l(i) = Empty Then Exit Do Loop
709 名前:デフォルトの名無しさん mailto:sage [2014/06/14(土) 15:23:57.74 ID:UnUM1hDE] コメントアウトしている部分は i=i-1 の部分です 'つけ忘れです、すみません。
710 名前:デフォルトの名無しさん mailto:sage [2014/06/14(土) 16:30:49.01 ID:Je/qq0DA] >>708 省略してる部分が多すぎて何がやりたいかわからん ステップ実行するかなんかでロジック追ってみたら 昔ならこれフロー書いてみろとか言われるんだろうな しかし、変数名って大事だなと思うわ
711 名前:デフォルトの名無しさん mailto:sage [2014/06/14(土) 17:00:57.85 ID:UnUM1hDE] >>710 返信ありがとうございます iを調節するIF文を入れるとなぜか s1.Cells(i + 1, Array_r(j)).Value にエラーが出るんです。 s1.Cells( 2 , 4 ).Value という風に変えてもエラーが出るんです。 IF文を消せば消えるんですが。
712 名前:デフォルトの名無しさん mailto:sage [2014/06/14(土) 17:23:19.85 ID:UnUM1hDE] 事故解決できました!ありがとうございました!
713 名前:デフォルトの名無しさん mailto:sage [2014/06/14(土) 22:49:14.29 ID:jhtRx4NU] KING SOFTのVBAは完全互換ですか?
714 名前:デフォルトの名無しさん mailto:sage [2014/06/15(日) 06:28:01.21 ID:sZLgElUH] >>713 何と?
715 名前:デフォルトの名無しさん mailto:sage [2014/06/15(日) 15:24:53.85 ID:+yTvRbGG] まったく同じプログラムなのに保存したらファイルサイズが違った これでは完全互換とは言えない
716 名前:デフォルトの名無しさん [2014/06/17(火) 03:20:53.05 ID:HVt3rccc] >>715 エクセルでブックを別PCにコピーして開き、 何もせずにそのまま保存してもファイルサイズが変わることがある