1read 100read
2012年6月プログラム31: Excel VBA 質問スレ Part24 (908)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
■暗号技術【ROUNDsurea】■ (537)
C#で仕事ある? (807)
ACM/ICPC 国際大学対抗プログラミングコンテスト2 (306)
各プログラミング言語を日本語よりに (353)
Emacs Lisp 3 (915)
CVS導入スレ〜 Rev.3 (836)
Excel VBA 質問スレ Part24
1 :12/04/13 〜 最終レス :12/07/04 ExcelのVBAに関する質問スレです ★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。 ★2 ExcelのVBA以外の部分に関する質問はNGです。 但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。 ★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。 VBAとは、『Visual Basic for Applications』の略で Application ├Workbooks |└Workbook | ├Worksheets | |└Worksheet というApplication以下のオブジェクトを、VB言語で操作するものを指します。 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。 ★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。 ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、 コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。 ★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R) 前スレ: Excel VBA 質問スレ Part23 http://toro.2ch.net/test/read.cgi/tech/1327763113/
2 : いちおつ 新すれなんで再投下 前>>1000 えっ えっ *やりたいこと* シート内のセル設定情報をテキストで保存して、読み出し →帳票のテキストデータ化 *必要なこと* セルに設定された各種プロパティの保存 *知りたいこと* プロパティがデフォルト以外に変更されたセルを発見する方法 *ばーじょん* xp以降 excel2000以降
3 : >>2 質問内容がよくわからないけど デフォルトのセルと比較する以外にないんじゃないの?
4 : 会社でつこてる社内システムのWebなんだけど 30分くらいつこてなかったらログアウトされて また自分のIDとPWを入力せんとあかんのが非常にうざい。 VBAを使ってこれを防ぐ自動にIDとPWを入力する方法はないですか? 会社PCではソフトインストールはもちろんダウンロードも禁止されてるので URLに「&xx=xx&xx=xx」を追加する方法とか、htmlファイルを改造するとか、可能な方法で提案をお願い。
5 : それ、Excelを使ってやることか?
6 : >>4 >>1 の★3以降をよく読め
7 : Excelとは限らんが?
8 : そんなこと言わずに教えれ
9 : >>4 コマンド渡してネットアクセス >>3 やっぱないのかなあ 全セルで全部のプロパティ参照して構造化するのか・・・ 読み出し時はセル範囲指定すればまだマシだけど
10 : >>9 なんのコマンド? ネットアクセスとは? さっぱりわからん
11 : >>10 VBAからコマンドプロンプトを経由してネットワークにアクセスできる。 とっても簡単。 ユーザー名、パスワード入れてエクセルからネットワークのパソコンを開けるわけだ。 コマンドプロンプトってのは、キーボードから「コマンド」を打ち込んで操作するソフトな。 例えばIPアドレスを調べたりするときに、ウインドウズのスタートからコマンドプロンプトを起動して、 「ipcomfig」とか入れてやれば出てくる。 ネットワークで繋がってるパソコンにアクセスしたりいたずらしたりできる。 あとはggr
12 : >>11 とても興味があるのですが詳しく教えてくださらんじゃろか? 具体的にはどんな呪文を書けばいいの? ネットワークとはインターネットのアドレスも含むんですかね? ないかびっくりすることができそうだけど 具体的に教えてくださらんか? 質問の永久ログインのことに限らずいろいろと。
13 : かわいいおにゃのこなら・・・
14 : >>2 いったんxmlで保存して適当にゴニョゴニョすればいいんじゃない つか俺ならそのままエクセルで保存しとくか、その帳票とやらを作成するのに使った元データ保存しとくが
15 : フォームコントロールで作ったCheckBoxが6つあって それが例えば リンゴ・バナナ・ミカン・イチゴ・スイカ・メロンとあったとして、 チェックの入っている項目の1文字目を一つのセルに入力したいです。 (例) リ・ミ・イ の様に。何かいい方法をご教示下さい。
16 : >>11 それだと別セッションになるから無理じゃない? VBAからIEを起動するようにして業務はその起動されたIEでやって 離籍するときはマクロ実行ボタンかなんか作っといてF5アタックを かけ続けるとかかなあ http://billboardtop100.net/excel/vba-ie/
17 : F5連打するソフトをスクリーンセーバーにすれば
18 : >>15 Private Sub CommandButton1_Click() Dim c As Control Dim s As String For Each c In UserForm1.Controls If TypeName(c) = "CheckBox" Then If c.Value Then If s <> "" Then s = s & "・" End If s = s & Left(c.Caption, 1) End If End If Next ActiveCell.Value = s End Sub
19 : セルの入力した数式がどのようなタイミングで実行されるのかがわかりません。 VBA実行する前後で数式が実行されるのでしょうか?
20 : >>19 ワークシートの数式は入力した瞬間に実行される
21 : >>19 http://support.microsoft.com/kb/214395/ja
22 : >>18 ありがとうございます。 でもユーザーフォームでなくてシート上の フォームコントロールなんです。 その場合はどうしたらいいですか?
23 : >>22 Shapesで回してControlFormat.Valueみるとか タイプの判別方法は解らんなぁControlFormatのプロパティいくつかたたいてエラーでるかどうかでみるぐらい?
24 : >>22 Dim cb As Excel.CheckBox Dim s As String s = "" For Each cb In ActiveSheet.CheckBoxes s = s & IIf(cb.Value = 1, IIf(s = "", "", "・") & Left(cb.Caption, 1), "") Next ActiveCell.Value = s
25 : >>24 ありがとうございます。完璧です! 散々苦労して出来なかったので思わずスゲーって声が出ました!
26 : >ActiveSheet.CheckBoxes こんなプロパティあったのか。知らんかった つかオブジェクトブラウザで見たら、プロパティじゃなくて非表示なメソッドだな なんで非公開なんだろうな
27 : ActiveChart.SeriesCollection(1).Selectを、Selectを 使わずにSeriesCollection(1)を変数に入れて使い回し対のですが、 変数への入れ方を教えて下さい。
28 : >>27 SET
29 : BeforeDoubleClickイベントで得たRangeオブジェクト(Target)の n個隣のRangeオブジェクトはどうやって得ればいいでしょうか? offsetでどう書けばいいか分かりません…
30 : Cells(Target.Row, Target.Column - n)
31 : >>29 n個右なら Target.Offset(,n) >>30 変なもの教えるなよ
32 : >>31 おお、こんな簡単なのがあったとは >>30 みたいな感じでCellsプロパティから引っ張ってくるものばかりと 有難うございました
33 : 質問者がoffsetでどう書けばって言ってるんだが... つか質問者もoffsetのヘルプ見れば解りそうなもんだが
34 : 16進数をiniファイルへ書き込み、読み込みをするにはどうしたらいいでしょうか。 ユーザーフォーム上のコマンドボタンの色の管理のために、現在はVal関数を 使っているのですが色が今一正確に再現出来ません。 宜しく御願いします。
35 : >>34 excel vba iniファイル でググればヒントがたくさん見つかるよ
36 : 何らかのマクロ処理後XLSで保存するマクロを、2003と2010両方で 動くようにするには、2010では2003の形式で保存するようにすればいいと思うんだけど、 この部分って2003でも通用しますか? 自分でテストすれば良いだけなのですが、調べなからじゃないと分からないので 考え方が正しいかどうか知りたいです。 宜しく御願いします。
37 : >>36 問題ありません
38 : 保存せずにブックを閉じたいのですが、ThisWorkBook.Saved=True は 標準モジュールに書いても無効でしょうか? ブックのCloseイベントに書かないと駄目ですか?
39 : 実行した時点で無効化が有効になる
40 : ?
41 : どこに書いても問題ないよ いつ実行されるかが重要なんだから
42 : close部に記述すると、ブック終了時に実行されるので、有効になる。 それ以外の部分に記述すると、実行されtrueを維持している場合のみ、ブック終了時に有効。 実行していない場合はその限りではない。
43 : Wordのオートシェイプにクリックイベント仕込むのは無理ですかねぇ。 Excelの用にOnActionが使えないようで・・・。 自前チェックボックスのため、押すたびに□>■になるものを作っていまして、 ラベルコントロールで代用してたのですが、ラベルって50個も置くと重くて重くて・・・。
44 : >>43 Wordの質問スレに行ってみればいいんじゃない?
45 : シート上のフォームコントロールで ドロップダウンリストを作成しているのですが、 エクセル一行空白を設定しており、 エクセル立ち上げ時には空白状態にしておきたいのですが、 コードが解りません。 ちなみにテキストボックスは TextBox1.Text = vbNullString の様に記述しています。 解る方ご教示下さい。
46 : >>45 1行目が空行なのであればこんな感じ? Dim d As Excel.DropDown For Each d In ActiveSheet.DropDowns d.ListIndex = 1 Next
47 : >>46 ありがとうございます。 出来ました。
48 : いいってことよ
49 : 気にすんな!
50 : 誰だよwww
51 : かまわんよ
52 : グラフの右隣の行番号を取得するにはどうすればいいでしょうか?
53 : >>52 右隣の行番号ってのが何のことかよくわからんが グラフの左上端にあるセルの行番号ならこれで取得できる Dim c As ChartObject For Each c In ActiveSheet.ChartObjects Debug.Print c.TopLeftCell.Row Next
54 : 質問です。 OSはwindows7 professional SP1 Excellは2007です。 現在、小文字で500〜600文字程度ある文字列が500列あります。 その中に存在する特定の文字列、たとえばaggtcaを検索し、大文字にし色を変えるというマクロを組んでおります。 それが以下になります。 Sub Try1() Dim c As Range For Each c In Selection RepChar c, "aggtca", 3 ' サブプロシージャ呼び出し Next End Sub 'c: 対象セル What:検索文字列 ColorIndex:Font色Index Sub RepChar(ByVal c As Range, What As String, ColorIndex As Long) Dim j As Long Do j = InStr(j + 1, c.Text, What) If j = 0 Then Exit Do With c.Characters(j, Len(What)) .Text = UCase$(What) ' 大文字にする .Font.ColorIndex = ColorIndex ' Font色 変更 End With Loop End Sub しかしながら、検索対象文字列が255文字までなら思う通りに動きますが、256文字以上になったら色が変わるだけになってしまいまいました。 なにかいい解決案を思い浮かぶ方がいたらご教授願います。
55 : >>54 一旦文字列変数に代入して大文字に変換したあとにセルに代入し直して文字色を変えるとか
56 : >>54 VBAの制限 セルから文字列を取り出す時に、Textプロパティを含むいくつかの命令では255文字以下しか扱うことができない 大文字への変換と色の変更は別々にやるしかない Sub RepChar(ByVal c As Range, What As String, ColorIndex As Long) Dim j As Long Dim str As String, WhatU As String WhatU = UCase$(What) str = c.Text j = 0 Do j = InStr(j + 1, str, What) If j = 0 Then Exit Do Mid(str, j, Len(What)) = WhatU ' 大文字にする Loop c.Value = str j = 0 Do j = InStr(j + 1, str, WhatU) If j = 0 Then Exit Do c.Characters(j, Len(What)).Font.ColorIndex = ColorIndex ' Font色 変更 Loop End Sub
57 : 初歩的な事で申し訳有りませんが、教えて下さい。 B3=VLOOKUP($A3,sheet2!$A:$J,6) B4=VLOOKUP($A4,sheet2!$A:$J,6) と、A列の検索値が空白になるまで続くのですが、 マクロで計算結果のみを表示する方法を教えて下さい。 宜しくお願いします。
58 : >>57 WorksheetFunctionプロパティを使えばいい Range("B3").Value = Application.WorksheetFunction.VLookup(Range("$A3"), Worksheets("sheet2").Range("$A:$J"), 6)
59 : ネットから下記のようなカンマ区切りのCSVを読み込むコードを使っています。 Do Until EOF(intFF) ' レコードを読み込む Input #intFF, X(1), X(2), X(3), X(4), X(5), X(6), X(7), X(8) : : Loop CSVファイルのある1行に 2012/3/11,12:00:05,・・・とあると 2012/3/11が2012、12:00:05が12としか読み込まれません。 例えば 日付2012/3/11,時間12:00:05 等、何か文字がついていると 日付2012/3/11 と読み込まれます。 数字のみでも読み込むにはどうしたらいいですか? 宜しく御願いします。
60 : >>59 >>1 >★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
61 : これってVB6のコードなの?
62 : >>59 Excelの機能でCSVファイルを読み込めばいいよ
63 : >>60 csv読み込みまでいかんと申すか!
64 : いい加減、>>1 のテンプレ見直そうよ。 ずーーーーと前から何回か話題に出してるんだけど、このテンプレPart4で誰かが勝手に作った奴で、 それ以降★○だから駄目とかいう奴がうざいんだわ。同一人物かもな。
65 : >>64 そんな昔からの経緯を知ってるならお前が率先して見直せよ 何もせずに文句だけ言うやつが一番うざいわ
66 : そして誰も答えない やったことないからわからんけど、文字列に格納して自分で加工したら? 読み出しが出来ればだけど
67 : ある処理をしたときに Cells(i, 2).Value = "Error" と値を入れるのですが、そのセルはシートの保護が掛かっているいる為 エラーになります。 ループでまわし、かつその途中で人的操作が入る為 一番最初に保護の解除を行い、最後に保護をするのは避けたいです。 ただ、Cells(i, 2).Valueのループの回数分、保護/保護の解除のするのは、 無駄に処理が重くなりそうなので避けたいのですが。 なにか妙案はありませんか?
68 : >>67 On Error Resume Nextでスルーするのは駄目なのか? 嫌なら Err.Numberで判定すれば
69 : >>67 UserInterfaceOnly
70 : >>59 配列変数XをString型で宣言すればいい Dim X(1 To 8) As String
71 : >>67 セルに入れるだけなら 仮シート作って最後に転写 配列に格納して最後に書き出し のどちらか 俺なら後者だが
72 : >>68 >>69 >>71 ありがとうございます。その手で解決できました
73 : そういうの嫌いじゃない
74 : >>66 >>62 で答えてるじゃん。 コード書かないと回答とは思わなかったのかな。
75 : 質問があります VBA初心者です 会社でVBAマクロを作っていたのですが、サーバーにあるファイルにたいしてWorkbooks.OpenやCloseしかしてなかったのですが、サーバー上のファイルが消えてしまいました 基本的に書き込みや削除などの操作は行っていないのですが、OpenやCloseのみでも参照先のファイルが消える可能性があるのでしょうか ちなみにOPENには特にオプション指定はしていません また、ローカルのファイル対するOpenでは現象が再現せず、再現しなかったファイルをそのままサーバーに置いて、それを参照すると消えました。
76 : >>75 ソースコードも見ずに第三者が答えられるわけがない
77 : >>76 失礼、ファイルの持ち出し不可能なのでソースをもってくることはできませんでした 聞きたかった事としてOpenやCloseによってはファイルが消える可能性があるかということを知りたかったのです
78 : 2003と2010で同じマクロを使っています。 2010で使用する時にリボンを畳む方法を教えて下さい。 2010で使用する時のみマクロファイルを読み込まないといけない気がするのですが やり方がわかりません。
79 : >>75 workbook.open,workbook.closeだけならないよ 他のコードなり操作なり見ないとわからんけど vba側だけじゃなくて、サーバー上でどういう管理されてるかも含めんとね ローカルなcloseは問題ないんだろ? ネットワークを介さないサーバー上でのopen,closeの挙動も見ておいたら
80 : >>78 Application.VersionでExcelのバージョンを判定して処理を分けるとか?
81 : >>79 ありがとうございます また明日コードみてみます 実はバグがあって 最初に読み込んだ(Openした)ファイル(参照ファイルA)の、あるセルに書き込まれてる「ファイル名(参照ファイルB)」を開きに行くんですが、セルに何も入力されていなくてもOpenするようになってました (おそらくファイル名「""」をOpen。Closeは""でもパスが通るようになっていたか未確認) ちなみに、この状態になるファイル(参照ファイルA)にアクセスした時に消えました。 この時、参照ファイルAは消えないのですが、同一フォルダにあるファイル(ファイルBの候補(?))が全て消えました(ローカルで試した場合は発生せず、サーバーは100%発生します)
82 : ものすごく分かりにくい文章になりましたので注釈します; サーバー上に(参照元となる)ファイルAと、ファイルAのセルから参照先が判断されるファイルB群があって、参照先を示すセルが空欄になってました この時、異常処理が入ってなかったので、無理やりファイル名""で参照にいってると思われます 明日また調べてみます
83 : >>81 サーバ上のファイルを監視しながらステップ実行すれば どのタイミングでファイルが消えるかわかると思うよ
84 : >>73 × そういうの嫌いじゃない ○ そういうの好き 素直になりなさい
85 : >>81 openに渡すときにパスがないとコンパイルエラー起こす気がするんだが・・・
86 : >>80 レス、有難うございます。 マクロの記録でリボンを畳むときの命令を見ようとしたのですが、マクロに記録されません。 と言うことは、VBAではできないということですよね?
87 : >>86 Excel4.0マクロを使うとできる。 リボン、非表示、Excel4.0マクロ、でググれ。携帯電話からなのでコードは書かない。
88 : チュートリアルをひと通り読んだのですがわからりません。 質問させてください。 変数Aにセルのデータを配列として代入したいのですが、 |りんご,みかん,パイナップル| |アボガド| |きゅうり| このようにカンマ区切りと、そうでないセルが混在しています。 A=りんご,みかん,パイナップル,アボガド,きゅうり B=Split(A, ",") このようにして最終的に別のセルに一つづつ抜き出したいのですが、 どのようにして上のようなデータを配列としてAに代入すればいいのでしょうか?
89 : 昨日、不正な(エクセルファイル指定しない)方法でブックをオープンしようとするとファイルが消えると言っていた者です 今日、会社で確認してきました ステップ実行してOpenの際にファイルが消えます 新しくエクセルファイルを作って、最小構成(ファイルパスも直値)のマクロで確認してみたところ、以下のコードでも消えました Sub Button_Click() Workbooks.Open "Y:共有サーバー\問題のあったフォルダ\", ReadOnly:=True End Sub このマクロでエラーメッセージが発生後、「Y:共有サーバー\問題のあったフォルダ」内のファイルが全て消えました ローカルで(パスは変えて)確認した場合は、やはりファイル消えてませんでした
90 : 多分ここじゃ解決しないだろうけど ローカルっていうか、サーバー上のシステムでネットワークを介さないで開けたってことでいいのか サーバー側のシステムは? Workbook.Open渡されてちゃんと開けるのが前提だぞ、win入っててもexcelか.netのライブラリないと 作業ディレクトリも気になる
91 : >>88 例えば、A1:E1セルに値をセットしたいならこんな感じでできる A = "りんご,みかん,パイナップル,アボガド,きゅうり" B = Split(A, ",") Range("A1:E1").Value = B
92 : >>90 ファイル名を正しく指定すればOpenで開けます
93 : あっそ
94 : >>89 ホントにファイルが消えるならMSのサポートに言った方がいいよ んで、できれば結果を報告してくれるとうれしい
95 : >>91 返信有り難うございます。 配列のデータをセルに書きだす方法はどうにかわかったのですが、 カンマ区切りのデータと、区切られてないデータを 変数Aに入れる方法がわからないんです。 例えばですが Dim A As Variant A = Range("A1:E1") B = Split(A, ",") Range("A1:E1").Value = B このように指定するとデータの型が合いませんと出て困っています。 A = Range("A1:A1")と指定すれば問題なく出力されるんですが・・・
96 : >>95 こんな感じ? Dim A As String Dim r As Range A = "" For Each r In Range("A1:E1") A = A & IIf(A = "", "", ",") & r.Text Next
97 : >>96 ありがとうございます。動きました。まさに理想の動作です。 このコードがどんな意味かをじっくり勉強させてもらいます。 ありがとうございました!
98 : >>89 そもそも「Y:共有サーバー\問題のあったフォルダ」というパス指定があやしいが ネットワークドライブとしてY:を割り当ててるのか? 共有サーバーの部分は、実際のサーバ名が入ってるのか? Y:の後に\はないのか? ネットワークドライブなら、割り当てたユーザとエクセルを実行しているユーザは同じか? サーバとクライアントのOSやエクセルのバージョンとかもよくわからんが まあエクセルの問題じゃない気がするな
99 : >>98 >ネットワークドライブとしてY:を割り当ててるのか 割り当ててます >共有サーバーの部分は、実際のサーバ名が入ってるのか? 入ってます。実際のフォルダはもう2個くらい深いところにあります 会社のフォルダ構成をそのままネットにアップするのもどうかと思ったので、スレ説明用に簡略化しました >Y:の後に\はないのか? 書き忘れてました。実際には入ってると思います >ネットワークドライブなら、割り当てたユーザとエクセルを実行しているユーザは同じか? 同じです
100read 1read 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
【ActiveScript】RubyをWindowsで使うスレ【GUI】 (821)
【GUI】wxWidgets(旧wxWindows) その5【サイザー】 (432)
日本語プログラミング言語『なでしこ』スレ5 (794)
Objective-C [ObjC part:7]; (513)
DarkBASIC (449)
Squeakでマターリ語りましょうや (812)
--log9.info------------------
喪女大生なんだがどうすれば異性としてみてもらえるか (727)
AB型にありがちなこと (281)
おなかすいた (259)
ID確認 (279)
詰 ん だ \(^o^)/ (344)
【まったり】おっさんスレ【のんびり】 (223)
同級生がスレ立てしてた (276)
私に彼氏が出来ない理由を教えてくれるスレ (553)
27歳のBBAがお前らの相談のってやるください (219)
そして嵐は過ぎ去った (448)
ももいろクローバーZ可愛すぎpart2 (345)
眠くないヤツ集まれ! (316)
さーて、そろそろ… (240)
イン東京って床屋行った事ある奴いる? (253)
てst (616)
行き当たりばったり (848)
--log55.com------------------
【不正ランキング操作問題】新・小説家になろう4892【相互評価クラスタ・複垢ポイント水増し】
【地味な剣聖はそれでも最強です】明石六郎
【この素晴らしい世界に祝福を!】暁なつめ/自宅警備兵/戦闘員三号 60【戦闘員、派遣します!】
【スカスカ】スカドラ(と類友の話題)隔離スレ【頭】
神様へのお願い
【新人賞】ファンタジア大賞【富士見】part32
暁〜小説投稿サイト〜 について語るスレ 27
ヒロインが都合がよすぎるならいっそのことアンドロイドに