1read 100read
2012年5月プログラム20: Excel VBA 質問スレ Part24 (540) TOP カテ一覧 スレ一覧 2ch元 削除依頼
awkについて語るスレ $2 (681)
★★ Java の宿題ここで答えます Part 71 ★★ (977)
いもうとデスクトップを実際に作ってみないか?3 (844)
Google NaCl プログラミング 2mol (247)
Google Maps API 質問箱 (314)
おまいら最強の麻雀プログラムしてみろよ Part5 (525)

Excel VBA 質問スレ Part24


1 :12/04/13 〜 最終レス :12/05/30
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元 削除依頼
Rubyについて(アンチ専用) Part004 (723)
3Dアルゴリズム全般 (399)
C#終了のお知らせ (848)
【node.js】サーバサイドjavascript【Rhino】 (755)
Subversion r14 (332)
C、C++の最適化について語るスレ 3 (686)
--log9.info------------------
昔の北陸鉄道のこと (303)
【万世橋】懐かしの交通博物館【秋葉原】 (236)
寝台特急★富士★はやぶさ★なは★あかつき★132レ (185)
分断された路線について (147)
省型電機の最高傑作 EF57・EF12 Vol.1 (226)
懐かしの南武線 (118)
【さよなら】119系車両とは一体なんだったのか? (197)
「現在まで残ってれば良かったのに」と思う廃止路線 (409)
【重厚】旧駅舎スレ【優雅】 (162)
爆音立てて突っ走る京浜東北線103系に萌えるスレ (168)
北海道の昔の鉄道の思い出を語ろう6!! (180)
四国急行黄金時代を語らないか (194)
【大阪】特急白鳥の思い出【青森】 (541)
かつて『新しい時代の到来』を感じた鉄道車両 (215)
懐かしの相鉄車両 (662)
【EF62】碓氷峠の思い出 その2【EF63】【EF63】 (506)
--log55.com------------------
【PS4】ダークソウル3オンライン協力スレ37【テンプレ必読・厳守】
【PS3/PS4】テイルズオブゼスティリア【TOZ】part798
【PS4】Bloodborne ブラッドボーン質問スレ part38
【PS3/PS4】テイルズオブゼスティリア【TOZ】part817 ワッチョイなし
【PS4/PS3】戦場のヴァルキュリア-第176陣-
最近の中堅RPGの売り上げ低下は異常218
【Switch】Xenoblade2 ゼノブレイド2 part291【モノリス】
CODE VEIN コードヴェイン Part10