1 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:42:39.57 ID:K1uuwFLt.net] ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part56 mevius.5ch.net/test/read.cgi/tech/1534976724/
847 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 18:53:25.90 ID:E+8/TrgC.net] 少なくとも、SIerに委託するより>>806 の給料の方が遥かに高くつくくらいの期間は間違いなくかかるよ
848 名前:デフォルトの名無しさん [2018/10/30(火) 19:15:41.01 ID:bEYZFX0T.net] >>808 因みに幾らくらいかかるものでしょうか?
849 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 19:49:51.22 ID:wPm+kt3H.net] >>809 仕様がわからないので見積もれません 4000億円ぐらいみとけば間違いない
850 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 20:01:06.67 ID:UXC/r+zj.net] テーブル(lo)を列毎に配列で取り出して処理したいのですが、キーを列名、値に列範囲を格納すればforループで代入できて簡潔なのでDictionaryを使ってみようと思っています。 Dim dic As Dictionary: Set dic = New Dictionary Dim lc As ListColumn For Each lc In lo.ListColumns _dic.add lc.name, WorksheetFunction.Transpose(lc.DataBodyRange.value) next lc 以上で作成した「Dictionaryの値」に格納した「配列の値」に代入が出来ません。 例えば debug.print dic(見出しA)(1) '「ピカチュウ」が表示 dic(見出しA)(1) = "ライチュウ" debug.print dic(見出しA)(1) '「ピカチュウ」が表示 となってしまいます。しかし以下の様に配列を格納し直すと反映されます。 debug.print dic(見出しA)(1) '「ピカチュウ」が表示 dic(見出しA) = Array("","ライチュウ", dic(見出しA)(2),・・・ debug.print dic(見出しA)(1) '「ライチュウ」が表示 修正があるたびに配列を代入し直すのは面倒なので出来れば値を直接書き換えたいのですが、どうすればいいのでしょうか。
851 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 20:25:09.48 ID:4tQqoM/4.net] >>811 そもそもlo.ListColumns(lc.Name).Range.Item(Index).Value でテーブル内のセル値のセッターにアクセス出来るので、わざわざそんなことをやる必要がないと思う 仕様上ListObjectは列名重複が許されないし、ListColumnsコレクション自体がDictionaryと殆ど等価のハッシュテーブルになる
852 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 20:50:28.74 ID:UXC/r+zj.net] ありがとうございます 現在はそうしているのですが(元々それがやりたくて全部テーブルに置き換えたのですが) 値を取り出すときに毎回ListColumns(lc.Name).DataBodyRange(Index).Valueと長々書く為コードが読みづらいのと、配列にすればちょっと速度改善が見込めるかなと思って試していました。
853 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 13:51:41.06 ID:OKzw5dxl.net] Dictionaryの代替以外の回答もお待ちしてます。 あと追加で質問なのですが、先ほどのTransposeの様にワークシート関数を利用するなら配列ではなくセル範囲の方が速いという記事を見つけました。 どういう原因でそうなるのでしょうか?
854 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 17:54:26.42 ID:Dz4usJiG.net] 一般的にユーザーによる同等のVBAコードよりワークシート関数の方が速い C#とかよりC++ネイティブの方が数〜倍速くなるのと同じ
855 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 18:27:27.91 ID:b54HYVzl.net] >>814 組込みの機能はアプリケーション内でリソース管理が最適化されてるのでね VBAで
856 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 18:30:36.22 ID:b54HYVzl.net] >>814 組込みの機能はアプリケーション内でリソース管理が最適化されてるのでね VBAでやると不要な大きさのバッファを確保してたりして無駄が多くなる
857 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 07:11:29.46 ID:hEMz+97b.net] シートにボタン配置して押したら、オートシェイプの直線を引ける段階までって出来る?いわゆるショートカットキー的な感じの。 実際に直線を引いちゃうのは山ほどネットに転がってるけど、引くのは任意でやりたい。
858 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 10:46:24.36 ID:Uh6mdsZK.net] >>818 出来ない。
859 名前:デフォルトの名無しさん [2018/11/01(木) 18:36:00.35 ID:Nl3jEz8g.net] Excelのセルに入ってるデータを使ってOutlookでメールをVBAで書きたいのですが それぞれの行やある文字についてフォントや色などで装飾したいんです。 そんなことはできますか? なんかできなそうなんですが。 でもこれをしないとものすごく不便なのです。 うまくいけば残業せずに遊びながら居残りしてお金だけはたくさんもらえるのですが・・・
860 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 18:51:35.86 ID:4wthv7uM.net] >>818 できるよ。
861 名前:デフォルトの名無しさん [2018/11/01(木) 19:09:06.19 ID:Nl3jEz8g.net] >>818 サルでもできるよw 単にボタンにマクロの登録をすればいいだけ。
862 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 19:13:58.18 ID:9hAL4zo4.net] >>822 う〜ん... 俺もできるとは思うけどそんなに簡単か? 何を登録するんだ?
863 名前:デフォルトの名無しさん [2018/11/01(木) 19:18:10.81 ID:Nl3jEz8g.net] >>823 ボタンを挿入して右クリックしてマクロの登録を選び実行させたいプロシージャを選ぶだけ
864 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 19:22:20.09 ID:9hAL4zo4.net] >>824 直線を引く直前の状態にするプロシージャって簡単に書けるのかい?
865 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 19:24:41.75 ID:9hAL4zo4.net] >>820 やったこと無いけどHTMLメールにして本文をHTMLにすれば良いんじゃない? あとはテキストメール作成と同じじゃないの?
866 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 19:26:55.17 ID:1Z/ZXoar.net] >>820 HTML書けるならこの辺りを見ればわかるだろ https://docs.microsoft.com/en-us/office/vba/api/outlook.mailitem.bodyformat
867 名前:デフォルトの名無しさん [2018/11/01(木) 19:30:44.64 ID:Nl3jEz8g.net] >>826 じゃ具体的なコードはどうなるの? 例えば、「こんにちは、うんちと申します。」の文で、うんちを太字で茶色にしたい場合。
868 名前:デフォルトの名無しさん [2018/11/01(木) 19:33:37.59 ID:Nl3jEz8g.net] >>827 こんにちは、<B><font color=brown>うんち</font></B>と申します。 ?
869 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 23:23:17.57 ID:EZF4jYAF.net] >>822 できないから聞いたんだが?
870 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 23:35:45.63 ID:NdKTTFxC.net] できるって言ってる人は質問をよく理解してないんだと思う
871 名前:デフォルトの名無しさん [2018/11/01(木) 23:45:47.15 ID:BwvtJmQs.net] この板は日本語が読めない低学歴知恵遅れが多いのはあってる えてして書いてある要件とまったく違うもんをあげてくるよくいる軽い池沼入ってるのと似てる
872 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 23:59:15.18 ID:8GU0aFYB.net] お互い様
873 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 00:46:25.82 ID:iMC20ra8.net] >>16 Excelのマクロの記録はVBAコードで表現できないものは原則できない 操作自体の記録再生ができるUWSCとかRPAといったツールを呼び出せばできる
874 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 06:47:30.99 ID:Cpir13NG.net] Sendkeysで無理くりリボンメニューの直線を選択するコードを作ってショートカット割り当てる位しかないと思う
875 名前:デフォルトの名無しさん [2018/11/02(金) 07:54:22.50 ID:EKeu1zQN.net] >>830 あなたはサル以下ということだ。ウイッキー。
876 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 10:00:17.95 ID:IpqW30ow.net] >>818 あれ? まだコードあがってないですね。 じゃぁExcel2010用ですが、サンプルを、、、 目的に合わせてShapeIDを変えてください。 Sub CreateShape() Dim ShpID As Long ' ShapetypeID Dim iShpCnt As Long ' Shape Cou
877 名前:nt (追加待ち判定) Dim SHP As Variant ' Loop用Shape ' Create Shape '-------------------------------- ShpID = 409 'Freeformの場合 ' ShpID = 1119 'Ovalの場合 ' ShpID = 1042 'LineConnectorの場合 iShpCnt = ActiveSheet.Shapes.Count Application.CommandBars.FindControl(ID:=ShpID).Execute Do DoEvents Loop While iShpCnt = ActiveSheet.Shapes.Count End Sub 描かずに連続で押すと処理が入れ子になってしまうのが 難点ですが、、、 [] [ここ壊れてます]
878 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 10:56:22.32 ID:N4XXlewl.net] >>837 なるほど
879 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 12:39:25.94 ID:ouVO3wBC.net] >>837 できた!ありがとうございます!
880 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 12:40:29.21 ID:m6WMCehM.net] >>837 これで出来たんだね。 コード書ける環境じゃ無いから試せなかったけど、この方法かUIAutomation使うかどちらかかなあと思ってた。 CommandBarControl.ExecuteでもShapeの場合トグルっぱい動作だから思う状態になるか自信が無かった。
881 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 12:44:20.35 ID:m6WMCehM.net] あれ、Do〜Loopの処理は気付かんかったなあ。 自分が作成してたら動かんかったと結論出してたかも。
882 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 12:50:59.79 ID:IpqW30ow.net] >>841 StackOverFlowかどっかのサイトの受け売りなんですけどね。 どこからもらったのか忘れた、、、
883 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 12:57:46.92 ID:IpqW30ow.net] >>837 あ、後続の処理用の変数消し忘れてた。 Dim SHP の行は不要です。
884 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 17:17:11.16 ID:ouVO3wBC.net] ちなみになんだけどDoLoopはなんの為にあるんですかね? なくても同じ動きすんだけど。
885 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 17:57:06.50 ID:oqBXcCoW.net] 書き終わってShapeオブジェクトが作成されるまで、次の処理を待機 元々書いた後に何か処理をするプログラムの一部だったんだと思う 今回はCommandBarControlのコマンドが実行された時点で仕事は終わってるから要らないかと
886 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 18:54:32.40 ID:m6WMCehM.net] >>845 ループ無くても動くんなら思った通りだった。 違いが有るとすれば自分はFindControlは使わず、コントロールの指定もIDじゃなくて名前使う所。 名前はFor Each使ってCommandBarを列挙して名前をDebug.Print、そのCommandBarに対してFor EachでCommandBarControlを列挙して名前をDebug.Printなどで調べる。
887 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 19:49:18.45 ID:IpqW30ow.net] >>844 ん? Do - Loop 部分ないとちゃんと動かんよ? VBEから実行してない? ボタンに割り付けると、ボタン押した瞬間に十時カーソル消えるはず。 Excel2010より新しいVersionは動きが違うの?
888 名前:デフォルトの名無しさん mailto:sage [2018/11/02(金) 20:57:01.00 ID:/dr4nYVn.net] >>847 ボタン押したらクリックしたら線がかけるようになったよ。 2003でも動いたし、2007でも動いた。
889 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 00:21:42.99 ID:N3tWJlln.net] Excel2010でも試したけど、ループのないプロシージャで描けたよ 勿論ボタンのクリックイベントから
890 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 00:44:19.57 ID:N3tWJlln.net] フォームコントロールに割り当てると描けないっぽい ActiveXコントロールのイベントで呼べば描けるが フォームコントロールって何のために有るんだろう・・・
891 名前:デフォルトの名無しさん [2018/11/03(土) 04:34:07.93 ID:/0NNzwPk.net] 任意のセルをコピーして所定の場所にペーストするマクロを作りたいです。 セルをコピーした状態からマクロ記録を取って、ペーストするだけのマクロを作ったのですがうまくいきません。 教えてください!
892 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 06:28:54.02 ID:5ShzkuEH.net] >>850 VBAで作るフォームと処理を共有できる、とか?
893 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 06:31:10.97 ID:5ShzkuEH.net] >>851 マクロの記録だと余計な処理が追加されるから、それを削るだけでうまくいくはず まずは記録したマクロをここに書いてみ ただしCtrlを押しながら複数のセルをコピーした場合はかなり難しくなる
894 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 06:39:13.96 ID:IAxxklmh.net] >>850 ああ、なるほど。 確かにフォームボタン使ってた。 そのために余計な苦労をしたってわけか。 情報Thx!
895 名前:デフォルトの名無しさん [2018/11/03(土) 11:31:29.48 ID:/0NNzwPk.net] >>853 Sub Macro5() ' ' Macro5 Macro ' ' Range("AH11").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub こんな感じです。これはセル1つ選択です。(最終的には複数選択してシート間でコピペする予定です)
896 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 11:43:19.50 ID:S6AysWL6.net] 社名 金額 部門 ================ A社 1000円 営業 A社 2000円 事務 A社 1500円 事務 A社 3000円 販売 B社 1500円 事務 B社 3500円 営業 C社 1000円 営業 C社 3000円 営業 C社 1500円 販売 D社 2000円 事務 こんな感じのA社⇒D社のように整列されたデータに対して
897 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 11:43:51.55 ID:S6AysWL6.net] 社名 金額 部門 ================ A社 1000円 営業 A社 2000円 事務 A社 1500円 事務 A社 3000円 販売 A社 営業計 1000円 < 事務計 3500円 < 販売計 3000円 < 計 7500円 < B社 1500円 事務 B社 3500円 営業 B社 営業計 3500円 < 事務計 1500円 < 計 5000円 < C社 1000円 営業 C社 3000円 営業 C社 1500円 販売 C社 営業計 4000円 < 販売計 1500円 < 計 5500円 < D社 2000円 事務 事務計 2000円 < 計 2000円 < 全社 営業計 8500円 < 事務計 7000円 < 販売計 4500円 < 計 20000円 < こんな感じに行の間に小計、最後に合計を挿入するようなコードありますか?( < が追加行) 小計は必ず 営業、事務、販売の順番に並び、0円の場合は行自体挿入しません 実際ののデータは会社数、部門共に30以上あるので速度重視であれば望ましいです
898 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 12:46:22.45 ID:q2N3VeHV.net] そんなもんExcelのグループ集計で一発 お前に必要なのはVBAではなくExcelの入門書
899 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:03:36.46 ID:3VcH/mb2.net] >>829 span使え
900 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:12:27.13 ID:78HW/kSp.net] >>857 とりあえずピボットでググったら?
901 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:18:18.27 ID:3VcH/mb2.net] 標準のエディタインライン展開できないとかsubの引数名自動で変えられないとかクソすぎ 誰かもっと開発しやすいやつをくれ
902 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:30:31.88 ID:S6AysWL6.net] 集計したい訳じゃなくデータを作成したいんだって
903 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:33:02.71 ID:N8ATSODS.net] >>862 だからそれはグループ集計でできる
904 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:38:02.57 ID:S6AysWL6.net] VBAで作るには?
905 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 13:47:38.58 ID:N8ATSODS.net] グループ集計の操作をマクロで記録するといいよ
906 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 15:14:54.13 ID:NeGXChns.net] >>855 単にシート間で複数セルの値を同期させたいだけならそもそもクリップボードを経由しない方が早いのでは? VBAでコピーしないでワークシート関数でシート間参照させるとか、コピー元のセルのValueプロパティなりFormulaプロパティなり、必ずコピーしなきゃいけないプロパティだけをコピー先のプロパティに直接代入するとか ユーザーによるコピー操作そのものを再現しなきゃいけない理由でもあるの?
907 名前:デフォルトの名無しさん [2018/11/03(土) 18:06:58.76 ID:/0NNzwPk.net] >>866 シート間で照合するデータだとマクロ使わずできるのですが、 コピー元のシートのデータが大きいので、ペースト先のシートには必要なものだけを張り付けて、 印刷用のフォーマットに変換させて、終わったらペースト先のシートは保存せず元に戻すという操作をしたいと考えています。 お願いします。
908 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 19:32:11.39 ID:NeGXChns.net] >>867 元データの書式や印刷用シートの体裁、印刷するデータの抽出方法などがわからないが、やりたいことからすると、Range.TextプロパティかValueプロパティの値をコピー先にそのままコピーするだけで良さそう コピー元とコピー先のデータの体裁によっては、Range.AdvancedFilterメソッドで印刷用シートの方にフィルタ結果を出力するとかもできる
909 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 22:51:34.85 ID:MUI16VQU.net] クラサバシステムを作るのは現実的なのでしょうか? DBは相性からいってSQLServerで
910 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 22:58:31.43 ID:zFR/cOIP.net] >>869 Excelで作ろうとしてる理由が能力の問題なのか、それともExcelのワークシートの機能が必要だからなのか、それ次第だな C#やVB.NETやJavaで作れる能力があるなら普通に作れるし、無いなら無理 能力が無いならAccessでも使ってろ
911 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 23:03:55.31 ID:e+FwThFa.net] 能力の問題なら今ならOffice365のPowerAppsおすすめ たぶん>>869 が手作りするより遥かに高品質なものが一瞬で作れるよ
912 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 23:12:01.99 ID:MUI16VQU.net] 作りたいのは、Activitiのエンジンを使ったWFシステムです Excelで検討する理由は、ADによるシートとセルの権限管理ですかね
913 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 00:03:26.74 ID:Ujv6OCQm.net] いやクラサバだったら権限管理はSQL Server側でやるもんだろ 当然、SQL Serverなら問題なくADで制御できる その調子じゃ厳しそうだね
914 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 00:32:40.13 ID:xCAdckZO.net] Excelのレベルで権限制御したところで、別のExcelシート作ってデータソース参照するだけでやりたい放題やで Excelに限った話ではなくC#などでクライアント作る場合でも同じことで、プロなら絶対にありえない設計
915 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 07:35:57.46 ID:dL+sv/7f.net] ここで板違いの質問を堂々とするレベルなんだから w
916 名前:デフォルトの名無しさん [2018/11/05(月) 12:48:07.93 ID:g2XKp1gu.net] またプロさんイキっとるのw
917 名前:デフォルトの名無しさん [2018/11/05(月) 23:37:43.98 ID:Vz2xlIAK.net] >>868 Range.Textプロパティ、Valueプロパティが良く理解できなくて困ってます。 セルの指定で合ってますか? コピー元の表の中からから1行(5セル分)コピーして、隣のシートの所定の位置に貼り付けたいです。 1行選択した後、マクロ起動させて隣のシートに張付けという操作です。頼みます、教えてください!
918 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 00:56:10.22 ID:bmwIjcqH.net] >>877 Sub CopyToPrintForm() ThisWorkbook.Worksheets("データ用シート名").Range("コピー元セルの行番号:コピー元セルの行番号").Copy Destination:= ThisWorkbook.Worksheets("印刷用シート名").Range("コピー先セルの行番号:コピー先セルの行番号") End Sub
919 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 01:09:36.50 ID:bmwIjcqH.net] >>877 印刷するデータの行をユーザーに選ばせる場合、ユーザーに行選択させた状態で以下のマクロを実行させるようにするとかでいいだろ 文字通り一行コピーしてしまうので要注意 >>877 Sub CopyToPrintForm() ThisWorkbook.Worksheets("データ用シート名").Activate ActiveCell.EntireRow.Copy Destination:= ThisWorkbook.Worksheets("印刷用シート名").Range("コピー先セルの行番号:コピー先セルの行番号") End Sub
920 名前:デフォルトの名無しさん [2018/11/06(火) 01:38:13.14 ID:ca/fCdtD.net] >>879 ありがとうございます。 Pasteはいらないのでしょうか?
921 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 02:06:44.79 ID:hX39oSae.net] 教えてください!とか言ってるから荒しかと思ってたがガチか
922 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 02:42:45.06 ID:hX39oSae.net] >>867 >ペースト先のシートは保存せず元に戻す マクロを実行すると「元に戻す」は使えなくなるから、一々開きなおさないといけないけど大丈夫なのかな もしその作業が連続して行われるなら、テンプレート用シートと印刷用シートを別に用意した方が楽な気がする
923 名前:デフォルトの名無しさん [2018/11/06(火) 06:33:12.72 ID:ca/fCdtD.net] >>882 保存せずは間違えでした。 ペーストしたものをデリートするマクロを作って、元に戻す予定です。
924 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 07:50:07.02 ID:hqcuocq7.net] >>880 引数付きでCopyメソッドを実行するときはPasteメソッドは書かなくていい
925 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 08:01:03.35 ID:hqcuocq7.net] >>883 印刷用シートはデータと切り離してテンプレート用の別のファイルにした方が良い そうすれば、印刷処理のとき一時的にテンプレートから印刷用フォーマットを書き起こした後、印刷用フォーマットのブックを削除するだけで済む 印刷後に印刷用シートを初期化するマクロを更に走らせるなんて、手間を増やしてるだけだと思うぞ
926 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 19:36:10.55 ID:gYvutDKX.net] 複数端末で使用しているマクロがあります 端末aのデスクトップに目当てのファイルがあり、他の端末はネットワークで繫がっている端末aのデスクトップを覗きに行く感じになってます ファイルパス & filenameで参照したいんですがどのように書くべきなんでしょうか
927 名前:デフォルトの名無しさん [2018/11/06(火) 19:50:54.72 ID:S8pHBi6C.net] >>886 のぞいてる? スケベ!
928 名前:875 [2018/11/06(火) 19:57:59.09 ID:ca/fCdtD.net] みなさんありがとうございます。自分のイメージしてたものが100%出来ました。
929 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 22:30:23.08 ID:hKUAUjlF.net] VBAベーシックの資格取得がてら基本情報の午後問対策にしようと思ってるんですけど出題範囲とかレベル感的に同じくらいですかね?
930 名前:デフォルトの名無しさん [2018/11/07(水) 10:26:42.01 ID:d5oBs1zX.net] VBAの資格って新しくできたのか?
931 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 10:35:52.33 ID:XvVrOgoe.net] >>886 ネットワークにつながったPCの名前に「\\」を付けるとアクセスできる officetanaka.net/other/extra/tips15.htm
932 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 10:44:51.43 ID:t8cEHMAy.net] >>891 \\端末a:\Users\Admin\Desktopみたいな感じですね、ありがとうございます ちなみにこれは端末aでも端末a以外でもこの書き方一つで参照出来るんでしょうか
933 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 10:53:48.53 ID:XvVrOgoe.net] >>892 端末aのフォルダを共有設定にしておかないとアクセスできない 共有になってれば、どのPCでもアクセスできる エクスプローラーで共有フォルダを開いて、アドレスバーをコピペしてみると書き方が分かる
934 名前:875 [2018/11/07(水) 11:49:07.56 ID:4XVkNdGZn] シート間の切り替えで我慢が揺れるんですが、防ぐ方法は有りますか? 1行丸々コピーはデータが重いんでしょうか?
935 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 11:32:15.04 ID:nZWGaJPv.net] 会社なのに共有フォルダはないの?
936 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 11:34:31.05 ID:+HyKX3eQ.net] >>889 基本情報はJavaやCできない文系カスならExcel選べばいいでしょ ワークシート関数を使いこなせれば十分で、VBAなんか全く要らん
937 名前:875 [2018/11/07(水) 20:36:23.84 ID:TW51zyDp.net] マクロ起動でシートの切り変わりで画面がブレるというか、もう少しスムーズに動いて欲しいと感じます。 1行まるごとコピーしているので重いのでしょうか?
938 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 22:08:04.86 ID:Qojc5OuV.net] 配列に入れるとか? dim a a = sheet1.Range("コピーしたい範囲") sheet2.Range("sheet1と同じ大きさ") = a シート切り替える必要あんの?
939 名前:デフォルトの名無しさん [2018/11/07(水) 23:56:50.98 ID:kdSj6Mns.net] text.txtの中身 1,"my name is taro" 2,""hello,world"" 3,"hello,world" これをエクセルに変換して期待値は以下としたい どうしたらいい? A B 1 my name is taro 2 "hello,world" 3 hello,world
940 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 23:58:12.32 ID:Z9bNZaPm.net] 拡張子を.csvに変えてダブルクリックしてみよう あら不思議!
941 名前:デフォルトの名無しさん [2018/11/08(木) 00:00:20.32 ID:+1CERcyT.net] ちなみに拡張子をcsvにすると以下のような変な出力になる。 A B C 1 my name is taro 2 hello world"" 3 hello,world
942 名前:デフォルトの名無しさん [2018/11/08(木) 00:02:21.00 ID:M68F6j6d.net] "が一個足りない csvで"をインポートするには "を""にして "でくくらないといけない
943 名前:デフォルトの名無しさん [2018/11/08(木) 00:10:13.02 ID:+1CERcyT.net] 手順としては以下でよいか? 1. test.txtの中身を置換で「""」にマッチする箇所を「"""」として保存する 2. 拡張子をcsvにする。 期待値になったのでよしとする。 さらに一歩質問いいですか?
944 名前:デフォルトの名無しさん [2018/11/08(木) 00:19:54.15 ID:+1CERcyT.net] test.txtの中身 1,"my name is taro" 2,"""hello,world""" 3,"hello,world" これをエクセルにして期待値として以下としたい A B 1 (※) 2 "hello,world" 3 hello,world B1セル内に my name is taro が格納され、適切に改行が入っていることを期待。 が、csvにしたら、ちゃんと期待値になってた。。 んー、、途中で改行が入るケースではまってた記憶があったんだが、、、、。これでよしとするか。。
945 名前:デフォルトの名無しさん [2018/11/08(木) 00:35:58.02 ID:+1CERcyT.net] ああ、思い出した "がつかないケースで、改行が入っている場合 test.txtの中身 1,my name is taro エクセルにして期待値として以下としたい A B 1 (※) (※) B1セル内に my name is taro が格納され、適切に改行が入っていることを期待。 拡張子をcsvに置き換える前に、"で囲むようにすればいいが、置換でなんとかならないものか。
946 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 01:33:19.87 ID:QHwNiY6E.net] ExcelのCSV読み込みでセル内改行がある場合 d.hatena.ne.jp/stealthinu/20170127/p1
947 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 07:54:15.59 ID:u+iZKjOm.net] なんかもう最初のカンマまでの文字数だけ切り取るほうがシンプルなんじゃ