Excel VBA質問スレ Part10
at TECH
1:デフォルトの名無しさん
09/02/23 04:56:43
ExcelのVBAに関する質問スレです
前スレ スレリンク(tech板)
★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Application』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
2:デフォルトの名無しさん
09/02/23 04:57:08
過去スレ
01 スレリンク(tech板)
02 スレリンク(tech板)
03 スレリンク(tech板)
04 スレリンク(tech板)
05 スレリンク(tech板)
06 スレリンク(tech板)
07 スレリンク(tech板)
08 スレリンク(tech板)
09 スレリンク(tech板)
3:デフォルトの名無しさん
09/02/23 09:36:10
あー、またコピペしちゃったよ、この馬鹿
4:デフォルトの名無しさん
09/02/23 18:19:49
On Error Resume Nextってことで
5:デフォルトの名無しさん
09/02/23 18:23:07
投げっぱなしにするな
インラインで処理しろ
6:デフォルトの名無しさん
09/02/24 06:04:01
淫乱で処理?
7:デフォルトの名無しさん
09/02/24 17:27:40
イランで再処理?
8:デフォルトの名無しさん
09/02/24 18:47:53
On Error GoTo 0ってことで
9:デフォルトの名無しさん
09/02/24 19:55:52
Newって昔のBASICだとソースプログラム消去なんだよな。
一番使い方の変わった予約語の一つだろうな。
F5で実行ってのはPC-8001の時代から変わってないのが面白い。
10:デフォルトの名無しさん
09/02/24 22:21:08
多次元連想配列というか、dictionaryに配列挿入して捜査は無理ですか?
自作関数作ったりしたんだけど、やっぱりobjメソッドで配列を取りだして操作ができなくて。
何かに使うとかではなくて、好奇心なのでお気軽な回答を頂ければ幸いです。
11:デフォルトの名無しさん
09/02/24 23:08:05
よくわからん、具体的なコードで
12:デフォルトの名無しさん
09/02/25 00:42:33
こんなか?
Option Explicit
call hoge
call hogehoge
sub hogehoge()
Dim a(2)
a(0)="apple"
a(1)="berry"
a(2)="cucumber"
dim d
set d=CreateObject("Scripting.Dictionary")
d.add(1),a
dim f
for each f in d(1)
wscript.echo f
next
end sub
sub hoge()
Dim a
a=Array("apple","berry","cucumber")
dim d
set d=CreateObject("Scripting.Dictionary")
d.add(1),a
dim f
for each f in d(1)
wscript.echo f
next
end sub
13:デフォルトの名無しさん
09/02/25 02:50:47
>>12
何の言語?
14:デフォルトの名無しさん
09/02/25 06:02:29
ある列に下と同じ文字があればそのセルの下にあるラインの消去を行う。
また、ある列に上の値と同じ文字があれば行の高さを80とする
ある列に下と同じ文字があればそのセルの下にあるラインの消去を行う。
また、ある列に上の値と同じ文字があれば行の高さを80とする
プログラムを作ったが動きません。
どこが間違っているのか、だれか教えてください。
For N = 1 To LastRaw 'LastRaw は最終行
If WorkSheets("OutPut").cells(N,12).value = WorkSheets("OutPut").Cells(N+1,12).value
Then WorkSheets("OutPut").Cells(N,12).xlEdgeBottom = False
ElseIf WorkSheets("OutPut").cells(N,12).Value <> WorkSheets("OutPut").cells(N+1,12).value And
WorkSheets("OutPut").Cells(N,12).value <> WorkSheets("OutPut").Sells(N-1,12).value
Then
Rows("N:N").Select
Selection.RowHeight = 80
End If
Next
エクセル 2003 XP です。
15:デフォルトの名無しさん
09/02/25 06:08:31
誤 また、ある列に上の値と同じ文字があれば行の高さを80とする
正 また、ある列に上の値と同じ文字が無くまた 下にも無ければ、行の高さを80とする
16:デフォルトの名無しさん
09/02/25 08:27:14
>>14
1 With Worksheets("OutPut")
2 For N = 1 To LastRaw 'LastRaw は最終行
3 If .Cells(N, 12) = .Cells(N + 1, 12) Then
4 .Cells(N, 12).Borders(xlEdgeBottom).LineStyle = xlNone
5 ElseIf .Cells(N, 12) <> .Sells(N - 1, 12) Then
6 .Rows("N:N").RowHeight = 80
7 End If
8 Next
9 End With
1行目 全体をWithで囲めば、いちいちワークシートを指定しなくてもよくなる
3行目 Valueは省略可能。ただしこれは初心者にはおすすめしない
4行目 罫線の消し方はマクロの記録で調べる
5行目 この時点で下とは違うことが判明してるから上だけ調べればいい
6行目 いちいちSelectしない。ワークシートの指定が抜けてる
あと、行番号(左端の数字)は消さなくても丸ごとコピペで動くよ
17:デフォルトの名無しさん
09/02/25 08:32:02
ごめん。タイプミスとかあったんで上げ直し
With Worksheets("OutPut")
For N = 1 To LastRaw 'LastRaw は最終行
If .Cells(N, 12) = .Cells(N + 1, 12) Then
.Cells(N, 12).Borders(xlEdgeBottom).LineStyle = xlNone
ElseIf .Cells(N, 12) <> .Cells(N - 1, 12) Then
.Rows(N).RowHeight = 80
End If
Next
End With
18:デフォルトの名無しさん
09/02/25 08:35:35
For N = 2 To LastRaw 'LastRaw は最終行
↑
にしないと、1行目と2行目が違ってた時に0行目を調べようとしてエラーになる
19:デフォルトの名無しさん
09/02/25 08:48:28
>>14
VBAって論理式のショートサーキットしないんだっけ?
だとしたらこうかな?1行目の扱いが今ひとつ不明なんでループから出した。
With Worksheets("OutPut")
If .Cells(1, 12) = .Cells(2, 12) Then
.Cells(1, 12).Borders(xlEdgeBottom).LineStyle = xlNone
EndIf
For N = 2 To LastRaw 'LastRaw は最終行
If .Cells(N, 12) = .Cells(N + 1, 12) Then
.Cells(N, 12).Borders(xlEdgeBottom).LineStyle = xlNone
ElseIf .Cells(N, 12) <> .Cells(N - 1, 12) Then
.Rows(N).RowHeight = 80
End If
Next
End With
20:デフォルトの名無しさん
09/02/25 08:49:52
うわ、逆だった…
With Worksheets("OutPut")
If .Cells(1, 12) <> .Cells(2, 12) Then
.Cells(1, 12).Borders(xlEdgeBottom).LineStyle = xlNone
EndIf
For N = 2 To LastRaw 'LastRaw は最終行
If .Cells(N, 12) = .Cells(N + 1, 12) Then
.Cells(N, 12).Borders(xlEdgeBottom).LineStyle = xlNone
ElseIf .Cells(N, 12) <> .Cells(N - 1, 12) Then
.Rows(N).RowHeight = 80
End If
Next
End With
21:デフォルトの名無しさん
09/02/25 08:53:05
まだおかしい。何度もすまん。こんどこそ…
With Worksheets("OutPut")
If .Cells(1, 12) = .Cells(2, 12) Then
.Cells(1, 12).Borders(xlEdgeBottom).LineStyle = xlNone
Else
.Rows(1).RowHeight = 80
EndIf
For N = 2 To LastRaw 'LastRaw は最終行
If .Cells(N, 12) = .Cells(N + 1, 12) Then
.Cells(N, 12).Borders(xlEdgeBottom).LineStyle = xlNone
ElseIf .Cells(N, 12) <> .Cells(N - 1, 12) Then
.Rows(N).RowHeight = 80
End If
Next
End With
22:デフォルトの名無しさん
09/02/25 11:54:02
試してから書き込め
23:デフォルトの名無しさん
09/02/25 14:30:58
セルA1〜セルA10にある一次元の要素と
セルZ1〜セルZ10にある一次元の要素を
一つの二次元配列に格納する方法を教えてください><
24:デフォルトの名無しさん
09/02/25 14:42:25
>>23
dim v() as variant
dim i as long
v()=range("A1").resize(10,2).value
for i=1 to 10
v(i,2)=cells(i,"Z").value
next i
25:デフォルトの名無しさん
09/02/25 17:50:38
VBAはショートサーキットしないね。(現状では)
26:デフォルトの名無しさん
09/02/25 17:50:59
グラフのマーカをRGB関数で現したいです
ネットでも『RGB関数を使うと近い色になる』との答えが多く、
自分でも試したのですがその通りでした
良い方法があればご教授ください
OSはXP エクセルは2003です
27:デフォルトの名無しさん
09/02/25 17:52:31
VBAから秀丸マクロを呼び出すことって可能ですか?
28:デフォルトの名無しさん
09/02/25 18:13:30
RSS.EXEを起動していないなら、RSS.EXEを実行するというマクロ
を書いてください。よろしくお願いします。
29:デフォルトの名無しさん
09/02/25 18:28:33
お断りします。
30:デフォルトの名無しさん
09/02/25 19:55:57
書けもしない香具師の、わざわざの断り口上、ごくろうwww
31:デフォルトの名無しさん
09/02/25 20:56:43
Absolutely not.
32:デフォルトの名無しさん
09/02/25 21:25:09
>>26
ヒント パレット
33:デフォルトの名無しさん
09/02/25 21:35:11
>>27
可能です。
34:デフォルトの名無しさん
09/02/25 21:42:25
どうやれば呼び出せますか?
35:デフォルトの名無しさん
09/02/25 23:36:51
>>28
そのロジックはまずいよ
> RSS.EXEを起動していないなら、RSS.EXEを実行するというマクロ
の途中でもしRSS.EXEが起動したら2重起動になっちゃう
36:デフォルトの名無しさん
09/02/25 23:54:14
>21
ありがとうございました。
参考にして 成功しました。
37:26
09/02/25 23:59:13
カラーパレットは56色までなので無理という事でしょうか?
以下のマクロできれいなグラデーションの様なグラフを作成したいのです
Sub test()
Dim aaa As String
Dim i As Integer
aaa = ActiveSheet.Name
'仮データ作成(1列目に1〜225の数字を入れる−−−−−−−−−−−−−−−−−−−−−−−
For i = 1 To 225
Cells(i, 1) = i
Next
'グラフ作成−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Columns("A:A").Select
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("Sheet3").Range("A1:A225"), PlotBy _
:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:=aaa
ActiveChart.HasLegend = False
'マーカの色付け−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
For i = 1 To 225
ActiveChart.SeriesCollection(1).Points(i).Border.Color = RGB(0, i, 225)
ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColor = RGB(0, i, 225)
ActiveChart.SeriesCollection(1).Points(i).MarkerForegroundColor = RGB(0, i, 225)
Next
End Sub
38:デフォルトの名無しさん
09/02/26 00:15:11
>>37
フルカラー使いたいなら画像を貼り付けるかExcel2007に乗り換え
39:デフォルトの名無しさん
09/02/26 00:24:59
>>35
このマクロを必要とする場面は、RSS接続をせずに現在使用中のマクロを実行すると
外部接続確認メッセージの応答を300回しなければならなくなるのを回避するためです。
2重起動は、RSS.EXEの場合は、やっても問題は発生していませんので、気にしてません。
shellと変数名の扱い方が肝腎かなとは思っているのですが、さっぱり、出来なくなっている
のでここに来ました。
40:デフォルトの名無しさん
09/02/26 00:35:32
>>39
基本、アプリの起動確認はAPI使わないと無理。まずはこのあたり読んで勉強汁
URLリンク(www.happy2-island.com)
41:39
09/02/26 15:53:02
>>40
サンクス。踏ん切りがつきました。APIでやります。
42:デフォルトの名無しさん
09/02/26 19:21:46
それってExcelのDDEInitiate(app, topic)でやってる話じゃないの?
appがなければ起動する。
その場合appがPATHにないと失敗する。
なので、RSS.EXEのショートカットを作って
ファイル名をapp.lnk、RSS.EXE.lnkかRSS.lnkか、にして
PATHに置けば済む話とちゃう?
43:39
09/02/26 20:34:24
URLリンク(office.microsoft.com)
を読むと、返値がとらえられるということなので、そうゆう話です。
DDEInitiateやDDEの初期化に関することも、他の場面で調べてたことはあるのですが
いつも、形にならないまま終わってしまうので、ついつい、丸投げ質問形になります。
土日になりますが挑戦してみます。
44:デフォルトの名無しさん
09/02/26 21:51:25
>>40
嘘つくな。wshの方が簡単。
URLリンク(www.atmarkit.co.jp)
45:デフォルトの名無しさん
09/02/26 22:05:12
,.=-''' ̄ ̄ ̄ ̄ ̄ ̄` -、
/ \
./ .\
{ }
.| / ̄""''-=,,,,_,,,,,,==-'''"\ |
.l, .( ,. - ' .、 ,. - , .} |
l > ,=ニ\ ゛ | ''゛_,=ヘ、 r' {_
/~''i //_\_..`7| l、{''″/__`>ヽ |r`i
l .{`|./ ヽ二・ニゝチ、 ! .ゝrニ・二r } ! i l
{ {(l { ノ | | ヽ :: }| ソ/
ヽヽ|.{ / | | \ i.|//
\|.i / ,,.. | l._,, . \ i !/
乂i / - (__,)-゛ ' {丿
.l .!、. ,. !., ., / |
人 \ .!''''" ̄~ ̄`''! / 人
./ | .\ ,\ '-"" ゛-' / / | .ヽ
ノ .{ \ .ヽ,., .: ,イ / } ヽ
-'″ l `' 、`.──″ .} ヽ
46:デフォルトの名無しさん
09/02/26 22:54:05
>>44
それは
> RSS.EXEを起動していないなら
の答えになってないだろ?
47:デフォルトの名無しさん
09/02/26 23:40:33
>>46
全般的な使い方じゃなくて、
このこの方法で起動した分だけ気にすると言う要件なんじゃないの?
48:デフォルトの名無しさん
09/02/27 02:16:49
何を言ってるのか全然わかりません
49:デフォルトの名無しさん
09/02/27 15:44:21
わからないときはするーしよ
50:デフォルトの名無しさん
09/02/27 16:54:21
>>47
勝手に条件不可するなや
51:デフォルトの名無しさん
09/02/27 17:12:53
和文解釈能力と和作文能力には相関関係ありや?
52:デフォルトの名無しさん
09/02/28 00:15:42
OS:Win98 2000 XP 2003server vistaで
Ver:Excel2000 2003 2007についての質問です。
VBAはコードサイズに限界がある(?)のであまり複雑な事はさせられない
という話を聞いたのですが、具体的にどのくらいなのでしょうか?
コマンドボタンやテキストボックス等にイベントをガシガシ記述していたら
ワークシートへの入力がほとんどないにもかかわらず気が付いたらファイルサイズが1MBを超えていました
このくらいならどうという事はないと思うのですが、ふと気になりました。
よろしくお願いします。
53:デフォルトの名無しさん
09/02/28 09:01:12
300MB超えるときつい。
54:デフォルトの名無しさん
09/02/28 13:07:42
入門書は大村あつしのがいちばん分かりやすいんですか?
55:デフォルトの名無しさん
09/02/28 13:49:24
>>54
へたくそでもとにかく動けばいいってレベルを目指すならいいんじゃない?
56:デフォルトの名無しさん
09/02/28 14:06:01
入門書なら谷尻かおりがいいよ。
概念も説明してくれるので、プログラム初心者でも読めるから。
他のは使い方の説明ばっかで使い物にならない。
最近はvbaの入門書を探したときないから、
このごろ出版されたものについてはどうだか知らないけど。
57:デフォルトの名無しさん
09/02/28 14:09:29
ちなみに、大村あつしがダメって意味ではない。
大村あつしの本を使ったことがないだけ。
58:デフォルトの名無しさん
09/02/28 17:30:59
本って使うものなのか
59:デフォルトの名無しさん
09/02/28 17:56:59
枕とか?
60:デフォルトの名無しさん
09/02/28 18:02:48
使うだろ
61:デフォルトの名無しさん
09/02/28 23:02:38
文学書は読むが技術書は使うだろ?
62:デフォルトの名無しさん
09/02/28 23:41:49
エロ本もな
63:デフォルトの名無しさん
09/03/01 00:11:03
俺の場合
拝むな
64:デフォルトの名無しさん
09/03/01 00:15:25
技術書を1回読んで終わりってパターンはあるな。
65:デフォルトの名無しさん
09/03/01 10:09:34
誰が書いた本でも良いから、初級→中級→上級 と、3冊くらい読むのが良いよ。
レベルアップして行くのは当然として、3冊読んでみると同じ事が書かれているのが分かると思う。
「これ読んだからいらねー、飛ばそ」 じゃなくて、同じ内容を復習も兼ねて読んでみる事。
同じ事が書かれているって事は、それだけ重要な概念って事だからね。
あと、実例集やサンプル集は買う必要無い。裏ワザ系の本もいらない。
他の人が作ったプログラムを改編するだけじゃ自分の物にならない。
んで、基本的な概念が理解出来たならば、自分の業務に特化した本を買いあさると良いよ。
(今はネットで調べる方が便利だけど)
66:デフォルトの名無しさん
09/03/01 12:36:09
>>65
VBAに中級とか上級とかの本があるかねえ・・・?
67:デフォルトの名無しさん
09/03/01 14:33:22
谷尻かおりだか誰だか忘れたがとにかく女性の書いた本だったと思うが、中身を本屋で立ち読みしたらかなり下手糞だった。
やっぱ女は駄目だなと思ったよ。
68:デフォルトの名無しさん
09/03/01 17:39:05
奈良お前が書いてミロのビーナス
こき下ろすだけなら馬鹿でもできる
69:デフォルトの名無しさん
09/03/01 18:18:28
そんなのイランの核開発
70:デフォルトの名無しさん
09/03/01 19:32:33
>>66
マクロって何?なレベルの本
↓
OBJや変数が分かるレベルの本
↓
VBSやWIN32APIの呼び方が分かるレベルの本
↓
業務で必要なジャンルに特化した本
な感じで良いんでないかい?
71:デフォルトの名無しさん
09/03/01 20:18:29
>>70
> マクロって何?なレベルの本
> ↓
> OBJや変数が分かるレベルの本
> ↓
> VBSやWIN32APIの呼び方が分かるレベルの本
ここまで、ピンクいろのざっくりした入門書に載ってたレベルじゃね?
72:デフォルトの名無しさん
09/03/01 22:56:51
教えてください。
A1に1入れたらB1に丸一個
A2に2を入れたらB2に丸二個というようにAに数字を入れたら自動でBに○を数字分いれる式を作りたいのですがどのようにすればよろしいでしょうか。
73:デフォルトの名無しさん
09/03/01 23:22:00
>>72
>>1
>★2 ExcelのVBA以外の部分に関する質問はNGです。
> 但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
74:デフォルトの名無しさん
09/03/01 23:41:58
>>72
=LEFT("○○○○○",A1)
75:デフォルトの名無しさん
09/03/02 00:19:30
>>74
このコードはアツイ。
煽りじゃなくて、マジでこの考え方好きだ。
76:デフォルトの名無しさん
09/03/02 07:37:35
うん、おもしろいw
でも○が5個までしか表示できない件について。
rept関数にすれば幸せw
77:デフォルトの名無しさん
09/03/02 11:21:27
発想の転換とか出来るやつはマジ羨ましい
78:デフォルトの名無しさん
09/03/02 23:29:54
無駄な転換をしてしまうのはどうかと
この場合、ワークシート関数のREPT、VBA関数のStringと
目的そのままの関数があるのに、わざわざ弊害がある方法へと転換しなくても・・・・・
79:デフォルトの名無しさん
09/03/03 12:33:41
S=""
For I = Cells(1, 1)
S = S + "○"
Next
Cells(2, 1) = S
80:デフォルトの名無しさん
09/03/03 13:48:07
>>79
1個前のレスぐらい読めよ
81:デフォルトの名無しさん
09/03/03 21:51:12
>>79
なんつーでたらめw
82:デフォルトの名無しさん
09/03/03 22:01:26
マクロを起動するとOUTLOOKで特定の相手にメールを送る処理って作れませんか?
OSはXP、EXCELは2003です。
83:デフォルトの名無しさん
09/03/03 22:03:33
多分それが
発想の転換なんだと思っているんだと
思う
84:謝礼男
09/03/03 22:17:41
解決してくれた方にはマジで現金振込みで謝礼します。
解決スピードにもよりますが2万なら余裕で出せます。というかそれ以上に困ってます。
助けてください。クビになりそうです。
マクロあんまり詳しくないのにネットで探していじってたらわからなくなりました。
■現状:会社の機密書類に誤ったPASSをかけてしまいファイルが開けず困っています。明日取引先のプレゼンで使う資料が多数あって明日朝までに開けないとマジで上司に殺される。てかクビ。
■背景:上司のPCのエクセルファイルに全部passをかけてと頼まれたが1000個くらいあったので、マクロを使ってpassをかけようとした。途中までは順調だったが途中からpassが謎なものになってしまい、開けない。
■行動:とりあえずありえそうなpassは入力。フリーソフトでpass解読試みるが解読できず。
■依頼:可能性としてマクロが誤作動したのが原因ではないかと考えられるため、マクロ詳しい方にありえそうな誤作動ぶりを解明して、パスを解明してもらいたい。詳細は↓
85:謝礼男
09/03/03 22:18:20
■詳細:簡単に説明すると
指定したフォルダ(D1)にあるエクセルファイルに指定のpass(C4)をかけるというマクロ
また別のマクロを使ってD列にはPC内のフォルダを列挙しており、上記作業が終われば次のフォルダに移動する。
で、実行したのが以下のマクロ
86:謝礼男
09/03/03 22:18:46
Private Sub CommandButton1_Click()
Dim c As String
Columns("A:B").Select
Selection.ClearContents
Range("C1").Select
Selection.ClearContents
Range("A1").Select
a = Range("D1")
b = Dir(a & "\*", 2)
ChDir a
For l = 1 To 300
If b <> "" Then
Cells(l, 1).Value = b
87:謝礼男
09/03/03 22:19:32
If (Right(b, 3) = "xls") Or (Right(b, 3) = "XLS") Then
c = a & "\" & b
On Error Resume Next
Workbooks.Open (c)
If Err.Number = 0 Then
Workbooks(b).Activate
ActiveWorkbook.SaveAs Filename:=c, _
FileFormat:=xlNormal, _
Password:=Range("C4").Value, WriteResPassword:="", ReadOnlyRecommended:=False, _CreateBackup:=False, _
ConflictResolution:=True
Workbooks(b).Close
Cells(l, 2) = "○"
Else
Cells(l, 2) = "×"
End If
Else
Cells(l, 2) = "×"
End If
b = Dir(, 2)
Else
l = 300
End If
Next
Cells(1, 3) = "終了"
Range("D1").Select
Selection.Delete Shift:=xlUp
End Sub
88:謝礼男
09/03/03 22:20:35
■実際にした作業
・当初:マクロのとおり。ボタンクリックして、置き換えますかのyesをクリックして次へ次へ。
・途中1:そもそもパスがかかっているやつがあってそのファイルを開くpass入力求められたときは
面倒だったのでescおしてpass入力画面消して、置き換えますかのyesボタンも面倒になったのでyキー連打。
・途中2:さらにマクロ実行のコマンドボタン押すのが面倒になったので、マクロにショートカットキーをつけることに。
プライベートサブにショートカットのつけ方がわからず、
以下のマクロをプライベートサブではなくて普通のモジュールのマクロとして保存(macro1)し、macro1にショートカットキーを付加。ちなみにショートカットは ctrl+y
・途中3:↑のショートカットを使いctrl+yおしてescとyを連打する作業。
そしてその結果わかったのが。
プライベートサブでなくしてからは、passがかかっていない。(ほぼ全部)
しかし、時々passがかかっていて、なおかつ指定したpassではなくなっていた。
ってな感じでpassがわからなくなりました。
長文駄文失礼しましたが、本当に困っており、助けてくれる方をお待ちしています。
本気で謝礼いたしますので、なにとぞよろしくお願いします。
ちなみにwin2000のエクセルはなぜか97でした・・・・・
89:デフォルトの名無しさん
09/03/03 22:41:56
>>88
新規ブックに
Private Sub Workbook_Open()
MsgBox "一身上の都合により退職させていただきます。" + vbCrLf + _
"僕の事は探さないで下さい。[2009/3/3]"
End Sub
90:デフォルトの名無しさん
09/03/03 22:47:29
解決ですな。
91:デフォルトの名無しさん
09/03/03 22:49:41
ざっくりと見たところ、対象xlsのC4セルでパスワードかけるんじゃね。これ。
なので、「元エクセルのC4の内容」が必要かと・・・
パス有xls触ったこと無いが・・・
デバッグで対象xls開いた後のC4が元パスになってるか見てみてくれ。
92: ◆Q7C7fXiwHY
09/03/03 22:51:46
>>84-88
シートモジュールにマクロを置いた場合、Range("C4").Valueはそのモジュールが属するシートのC4になるが
標準モジュールにマクロを置いた場合、Range("C4").Valueはアクティブシート、つまりこのコードでは
パスを掛ける対象ブックのアクティブシートのC4になる
パスを掛けたブックの内容が解らないと、具体的なパスの予測は不可能
多少なりとも内容を覚えているか予測できるなら、その値を試してみることだ
ブックを送ってくれるなら、そこらのフリーソフトより強力な強制解除を試してみても良いが、
機密書類と言うからにはそれは無理だろうし、強制解除は不正にも使えてしまうから、
強制解除方法自体を教えるのも無理だ
それに、その背景と現状でバックアップすら無いなら責任は上司の方が重いぞ
93:デフォルトの名無しさん
09/03/03 22:51:49
んで、解決方法だが、
Public void TaisyokuProc()みたいな処理が必要かと。
元xlsねーのか?
94:謝礼男
09/03/03 22:53:18
>>91
糸口サンクス。
しかし、C4には本来のpass(仮にabc)がはいったままなんだが
開かないファイルはそのパス(abc)にはなっていないんだ。
ちなみに当初成功した分ははabcで開きます。
95:デフォルトの名無しさん
09/03/03 22:54:37
OpenOfficeをダウンロードして、Excelファイルを開いてみたら?
もし、開けたら別名で保存。
96:>>91
09/03/03 22:55:30
>>91
ん〜とね、
ActiveWorkbook.SaveAs Filename:=c,
FileFormat:=xlNormal, _
Password:=Range("C4").Value,
ここのrange(c4)が対象ExcelのC4内容ではないの?という意味。
つまり、対象C4で暗号化してるんではないかと・・・
97:謝礼男
09/03/03 22:56:20
>>92
ありがとうございます。
91さんのおっしゃっていた事もこれ読んでちゃんと理解できました。
プライベートじゃないから 元エクセルを参照してしまったということなんですね。
自分の無知具合に唖然です。
正直元ファイルの内容はほぼわからないので、解読は不可能そうですね。
98:91
09/03/03 23:01:27
グーグル先生で「excel パスワード 解除」でGigazineのやつ試してみたら?
うまくいくかもよ。がんがれ!
99:デフォルトの名無しさん
09/03/03 23:07:54
バイナリエディタかあらパス設定されてるワークブックを開いてみる。
そのなかからDPB=って文字列を検索してみそ。
その中のDPB=に挟まれたわけわかめの者がパス
ってのでいいんじゃないのかい????????
みなさんどうおもうよ
この惨めな男に慈悲あたえてあげようじゃないの
100:デフォルトの名無しさん
09/03/03 23:33:18
>>99
謝礼さんではないが、俺のExcel2000で[保存]-[ツール]のパスワードだと、DPBって無いんだが・・・
それって、マクロロックじゃまいか?
2000使ってるのは突っ込まないでくれ。軽いんだよね・・・
101:デフォルトの名無しさん
09/03/03 23:43:46
>>82
MAPIでググって見ればサンプルあるよ。
けど、MAPIだとOutlook系しか送信できなかったと思った。(違ったらごめん)
CDOだと送信のみOK。受信不可。
セキュリティー系の送受信するなら、BSMTP.DLL使うのが楽チン。
けれど、BSMTPやるならVBアプリ作ったほうが・・・
102:デフォルトの名無しさん
09/03/04 00:02:13
謝礼さん
暗号化とけないのは仕方ないでしょ。上司のBU取っとかなかったのは痛いが。
こんなんで辞職はないから大丈夫でしょ。(それこそ上司が悪い)
粘着厨といわれるからこれで退散。がんがってね!
最後にこんな感じで変数とか改行とかつけると良いかも。以上です。
'/**
' * Excelの列番号から、A1形式の文字を返す。
' * @param columnNumber Excelの列番号
' */ @return String A1形式のExcel列番号
Private Function ColumnNumberToString(columnNumber As Integer) As String
Dim columnString As String '戻り値用
Dim uBit As Integer '上位桁用
Dim remain As Integer '余り用
If columnNumber <= 26 Then '列番号 <= 26 ("A" - "Z")
columnString = Chr(columnNumber + 64)
Else
uBit = Int(columnNumber / 26) '列番号 > 26 ("AA" - "ZZ")
remain = columnNumber Mod 26 '列番号を26で割って、余りを出す
If remain = 0 Then
columnString = Chr(uBit + 63) & "Z 'Chr(63) = 'A'
Else
columnString = Chr(uBit + 64) & Chr(remain + 64)
End If
End If
ColumnNumberToString = columnString 'A1形式の列文字を返す
End Function
103:デフォルトの名無しさん
09/03/04 00:04:05
SendKeysでOutlookを操作
104:デフォルトの名無しさん
09/03/04 00:54:27
「そもそもパスがかかっているやつがあった」って書いてあるけど
それと自分が処理したファイルとの区別はついてるんかな?
パスのわからないファイルの更新日時は確認したの?
もともと上司がパスを設定していたのなら、謝礼男に開けなくても当然かと思う…。
105:デフォルトの名無しさん
09/03/04 21:30:16
で、その後どうなったの?
報告して〜!気になるじゃん!
106:82
09/03/04 23:44:12
>>101
サンプルは何個か見付けましたけど、これって全部なにかしらのソフトをインストールしないと
使えないんですかね?
この機能を作ってるのが、余計なソフトを入れられない会社のPCな上に
複数のPCから利用されるのを目的として作りたいんですけど。
利用するすべてのPCで何かしらインストールしないと無理なんですかね?
107:101
09/03/04 23:54:53
>>82
相当昔に業務ツール作成で使っただけなので間違いがあるかもしれないが・・・
MAPI :
特に無し。Office&OutlookExplessでOK。けど、Textの標準ソフトが秀丸とかだと動かなくなるので注意。
それと、OutlookがPopBeforeSMTPかなんかの暗号送受信ができなかった気がする。
MAPI対応MTUならOutlookじゃなくてもいけるはず。Beckyは無理だったと思う。
CDO:
2000系のCOMだかで動いたかな?送信NGでXP以降NGだったから早々にあきらめた。
.Netは違うのかな?
BSMTP:
フリーの超有名DLL。ツールとDLLを配布すれば誰でも使える。
このDLL自体がMTUなので、他にソフトはいらない。
しかし、25番とかのPort制限解除が必要。(ウィルスソフトとOS ポート制限)
108:デフォルトの名無しさん
09/03/05 00:00:54
>>82みたいなのってわざわざエクセルのマクロでやる必要あるんか?
ふつうにDelphiとかでアプリ作ればいいんでないの?いややり方は知らんけど
Exelファイルを添付したいとかか?
109:101
09/03/05 00:11:36
個人的にはPHPで作りますかね・・・PHPは初心者ですが、簡単に作れたはず。
企業だとサーバー立てるのメンドくて無理ですね。配布の制限とか無いんですが。
まあ、Excelで集計したデータをサーバーで自動更新したいのではないかと。
サーバーAPP作って、そこにxlsを放り込むとかでもできますよね。
110:デフォルトの名無しさん
09/03/05 00:12:10
>>108
操作しやすいExcelで登録した先に、スパムを送り付けたい。
111:デフォルトの名無しさん
09/03/05 02:05:57
Excelって10万件ぐらいデータ入れたら重くて開くのも大変にならんか?
この程度じゃSPAM業者として成立せんだろ。2桁ぐらい少ないと思う。
Excelの操作をケータイで監視したいんじゃね?
Outlookにこだわらなければコマンドラインツールを使うとか。
112:デフォルトの名無しさん
09/03/05 02:14:28
>>111
1000万件・・・
113:デフォルトの名無しさん
09/03/05 07:05:36
マクロを使ったWebクエリについて詳しく解説しているホームページ又は書籍を知っている人いたら教えてください。
114:デフォルトの名無しさん
09/03/05 07:55:30
ところで謝礼男は生きてるのだろうか?
気になるね。
115:デフォルトの名無しさん
09/03/05 12:12:01
ものすごく基礎の質問で申し訳ないのですが
Editorで作ったプログラムをワークシートで使うためにはどうしたらいいのでしょうか?
116:デフォルトの名無しさん
09/03/05 12:33:32
>>115
VBEのこと?
ワークシートにボタン貼り付けたり、[マクロ]-[実行]でいいんじゃまいか?
違うのかな?
117:デフォルトの名無しさん
09/03/05 12:50:54
>>116
VBEです
ユーザーフォームでプログラムを作り、VBE上で実行はできるのですがワークシートで実行する方法がわかりません
マクロのところにも作ったプログラムは表示されてないです
118:デフォルトの名無しさん
09/03/05 12:52:44
メニュー→マクロで実行できる
119:デフォルトの名無しさん
09/03/05 20:38:13
functionプロシージャでソルバーを使うことはできますか?
例えば
exp(x)+n*x=0 (n=1,2,3,など)
の解xを求めたいとき、nをfunctionプロシージャの引数として変化させ
ソルバーで求めたxを返したいのですが。
XP、Excel2003です。よろしくお願いします。
120:デフォルトの名無しさん
09/03/05 21:05:16
>>119
使ったこと無いけど、ググって見たかぎり出来ると思うよ。
教えてグーの質問見て思いました。
URLリンク(oshiete1.goo.ne.jp)
関数の引数に対象セルの位置 or 範囲を入れればよさげだね。
後はSolverOkに引数を与えて、SolverSolveでコピペと。
マクロの記録をして、それをカスタムするのが早いと思います。
2008は駄目みたいだね。VBAが無理臭い。知らなかった。
121:119
09/03/05 22:09:13
>>120さん
早速ありがとうございます。
試してみたのですが、なんかうまくいかない。。。
セルA1を =EXP(B1)+1*B1
セルC1を =test(A1,B1)
として次のプログラムを書いてみたのですが、B1の初期値を返すだけです。
Function test(y As Range, x As Range)
SolverOk SetCell:="y", MaxMinVal:=3, ValueOf:="0", ByChange:="x"
SolverSolve Userfinish:=True
test = x
End Function
できれば=EXP(B1)+1*B1もセルではなくFunctionプロシージャに記述したいのですがムリでしょうか。
122:デフォルトの名無しさん
09/03/05 22:34:52
>>119
引数の使い方間違ってると思う。
y As Range -> SetCell "y" では、A1:B1とかではなく、文字列"y"になる。あと、Val系引数は文字列でよいのかな?
引数をstringにするか、int x0,y0,x1,y1とかで、Range(x0 + ":" + y0)とかにしないと駄目かと。(書式とか文法は脳内変換よろ)
列番号をA1形式に変換するのは、>>102見てほしい。多分常套手段。
さっき書き忘れたけど、ソルブだっけ?はシート必須になるんじゃないかな。
何で、TempとかMacroといった作業シートが必要と思います。
さすがに関数そのものを取り込むのは無理かと。
どっかのHPで見たけど、マジでやる場合は2次方程式のルーチンを書いていたような・・・(これがソルブだよね?)
123:デフォルトの名無しさん
09/03/06 00:28:08
>>113
グーグル先生で[vba webクエリ]で上から10件以内でもろヒットなんだが・・・
株系がわんさか出てくるがこれじゃまいか?あまりVBAでやらないと思うが・・・
124:119
09/03/06 00:32:24
>>122さん。ありがとうございます。
ちょっと煮詰まってきまして。。。
セルA1を =EXP(B1)+1*B1
としてSubプロシージャで
Sub solv()
SolverOk SetCell:="A1", MaxMinVal:=3, ValueOf:="0", ByChange:="B1"
SolverSolve Userfinish:=True
End Sub
で解を求めることは確認できたのですが(上のA1をChr(65) & Chr(49)としても大丈夫でした)、
Function test1(x)
SolverOk SetCell:="A1", MaxMinVal:=3, ValueOf:="0", ByChange:="B1"
SolverSolve Userfinish:=True
test1 = x
End Function
についてC1セルを =test1(B1)とすると
「内部エラーが発生しました。またはメモリ不足です。」
となってしまいます。
せっかく回答いただいたのですが、もうすこし考えて見ます。
ソルブはシート必須であれば最適化プログラムを自分で書かないといけないのでしょうか。
125:デフォルトの名無しさん
09/03/06 01:35:21
久しぶりにVBAやったら意味がわからんくて吹いたwwwCDいるしwww
引数が4個必要だから、fx組み込み関数の用には使えるのかな?ごめん。セル直内のマクロ関数作ったこと無い。
VB6の代わりにしか思ってないから・・
セル = fx(B1, B2, B3, B4)が可能なら、下記Funcの引数を変えればOkかと。
>124の最後は、循環しているから。@B1=test() Atest()かB1を読みにいく →つまり、test() B以下無限ループ。
124の引数の意味は分からんが、下記のようにやればうまくいくのでは?
使い方が良くわからんが頑張ってくれ。仕事あるので寝るよ。
'/**
' * イチローの打率予測計算。Solverの初心者HPのを元にマクロ記録で起こす。
' */
Option Explicit
'テスト関数。
Private Sub test()
Call TestFunc("$B$6", 3, 0.4, "$D$5")
End Sub
'Solverテスト関数。
Private Sub TestFunc( setRange As String, maxMinval As Integer, targetVal As Double, changeRange As String)
SolverOk SetCell:=setRange, _
maxMinval:=maxMinval, _
ValueOf:=targetVal, _
ByChange:=changeRange
SolverSolve Userfinish:=True
End Sub
126:デフォルトの名無しさん
09/03/06 01:42:47
>>125
最小インストールかカスタムインストールでVBEを選択肢から外さない限りCDなんか使わんぞ
どうせHDDなんて有り余ってんだから男は黙ってフルインストール
127:デフォルトの名無しさん
09/03/06 01:44:52
>>126
Solverが追加アドインだからCD要求受けたのですわ。
基本全インスコだが、2000だからだろうか?基本VB6用でしか使わないから、アドインは良くわからん。
128:デフォルトの名無しさん
09/03/06 01:49:46
つーか>>125じゃ使えないぞ
129:デフォルトの名無しさん
09/03/06 01:54:19
おいおい、俺のxp & 2000では動くぞ。
参照設定でSolverいるがなwww俺はそこで10分以上はまったwww
それに、Solver用データがシートに必要だ。
質問者さんは基本データがシートにあるから、このソースで意味は分かる。
まじで眠い。これ以上は誰かよろ
130:デフォルトの名無しさん
09/03/06 01:58:13
あっ、ごめん。もしかして、Privateのせいか?
外から使うならFuncをPublicでやってくれ。デバッグしかしてないから、Privateで作ってるわ。
131:デフォルトの名無しさん
09/03/06 02:21:26
それだけじゃねーよ
つーか、本当にユーザー定義関数(ワークシート上から使う関数)作ったことないんだなw
132:デフォルトの名無しさん
09/03/06 02:29:03
>>131
(仰るとおりユーザー関数は無知です orz)
Subで作ってる理由はきちんとある。
Solverの結果がレンジの場合があるっぽいので、そういったものを単一セルで表現できるのか?
それが分かりませんでした。
なんで、質問者さんはTestFuncをPublic Functionにして利用してね。
戻り値の書き方は>>124見る限りわかるんだよね?
あとは>>131さんが教えてくれるよ。
歯磨き終わったのでおやすみなさい。
133:119
09/03/06 07:39:08
みなさん寝落ちしている間にいろいろありがとうございます。
当方のやりたいイメージは以下のように方程式をfunction内で定義し
ソルバーで解いた解を返すようなプログラムなのです。
Function test(n)
y = Exp(x) + n * x
SolverOk SetCell:="y", MaxMinVal:=3, ValueOf:="0", ByChange:="x"
SolverSolve Userfinish:=True
test = x
End Function
みなさんの回答をもとにまた今晩考えてみます。
134:デフォルトの名無しさん
09/03/06 11:49:34
どんだけスキル低いんだよ。125-132でFAだろjk
クレクレは帰れ
135:デフォルトの名無しさん
09/03/06 15:44:31
VBAのエディタって行番号を表示できないんでしょうか?
8年以上は悩んでいます。
136:デフォルトの名無しさん
09/03/06 15:53:09
ないよ。俺はデフォでホイールが動かないのが悩み。
137:デフォルトの名無しさん
09/03/06 15:59:36
Excel VBAを勉強中なんですがちょっとつまずいでしまって。
エクセルシートに以下のように100行2列の表があるんですが、
東京 台東区
千葉 ○○町
〜
これをFormのListBoxに表示していますが、
東京なら東京だけの情報をリスト表示したいのです。
現状はこうなっています。
UserForm_Initialize()内で
lstBox.ColumnCount = 2
lstBox.RowSource = "アドレス!A2:B103"
これを東京または千葉だけのリスト表示にするには
RowSourceをどのように記述すればいいんでしょうか?
他にいい方法などありますか・
138:デフォルトの名無しさん
09/03/06 16:27:23
1 AdvancedFilter
2 1から作る
・AとBのデータ全取得
・コンボボックスでAを表示
・選択データでBを初期化
139:デフォルトの名無しさん
09/03/06 17:01:26
レスありがとうございます
教えていただいたことを調べてみます
140:デフォルトの名無しさん
09/03/06 17:10:23
> RowSourceをどのように記述すればいいんでしょうか?
RowSourceだけではどう記述しても無理
俺だったら連想配列とクラス使って実装するが
100行くらいなら>>138でも十分だな
141:デフォルトの名無しさん
09/03/06 17:33:13
>>140
んなモンにClass使うか
サブルーチンで十分
てか、
>100行くらいなら>>138でも十分だな
より、一番簡単なのが連想配列だろjk
142:デフォルトの名無しさん
09/03/06 17:43:00
データ加工するなら動的配列かCollectionじゃね?
少なくとも、配列, end(xlup) end(xlleft) for ifは覚えてくれ
143:デフォルトの名無しさん
09/03/06 17:56:58
VBAってソートのメソッド無いよね。
○○ソートアルゴリズムでソートするってこと?
144:デフォルトの名無しさん
09/03/06 19:25:59
>>143
日本語でおk。自前実装しる
145:デフォルトの名無しさん
09/03/06 19:29:34
CreateObject("System.Collections.SortedList") つかえ
146:143
09/03/06 22:02:42
>>145
System.Collections.SortedListは使えなかったがSystem.Collections.ArrayListが
使えた。
というか、自分の勝手な思いこみでコレを使える事を知らなかった。
キモすぎ!デブおた君の >>144 ↓
/ ̄ ̄ ̄ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( 人____)<日本語でおk。自前実装しる
|./ ー◎-◎-) \______________
(6 (_ _) ) カタカタカタ
| .∴ ノ 3 ノ ______
ゝ ノ .| | ̄ ̄\ \
/ \__| | | ̄ ̄|
/ \___ | | |__|
| \ |つ |__|__/ /
/  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
| | ̄
147:デフォルトの名無しさん
09/03/07 10:39:55
質問です。
単純に指定フォルダを開くモジュールを作って、プロシージャ(?)で動かしたいんですが、
以下のようにコードを書いても
「ファイルがありません」とエラーになってしまいます。
調べても書き方はあっているように思うんですが、何がいけないかお教え下さい。。。
Private Sub CommandButton1_Click()
Const pass As String = "C:\aaa"
OpenFolder (pass)
End Sub
Public Function OpenFolder(pass As String) As String
Shell "explorer" & pass, vbNormalFocus
End Function
148:デフォルトの名無しさん
09/03/07 10:46:32
passじゃなくてpathな
あとは
MsgBox "explorer" & pass
でも見て見ろ
そのエラーが当然だと気付くから
つーか、この程度の確認すら出来ないってどうなのよ?
149:デフォルトの名無しさん
09/03/07 10:49:30
5分ほど前にvbを始めたもんで・・・
ただこれだけの事だったとは非常に恥ずかしい。。。
サンクス
150:デフォルトの名無しさん
09/03/07 11:27:57
もう一個質問。
VBとVBAって別もの?独立してるかしてないか?
エクセルからシートをフォームに見立ててボタンつけたりなんだってして、
visual basic editor開いてコード書いて・・・って普通のVBのようにモノを作ってもさ、
エクセルからしか起動できないんだよね?
普通にビルドしてexe作って単体で動かすとかはムリ?
151:デフォルトの名無しさん
09/03/07 11:57:49
exe作りたければVB6買え
VBAでは当然ながらexeへのコンパイルは出来ない
多少言語が変わっても良いなら、VB.NETは無料のでexe作れる
これから始めるならVB.NETなりC#.NETなりの方がいいかもな
152:デフォルトの名無しさん
09/03/07 14:48:03
vb6は店頭販売終了だからMSDN購入しかない
やっぱり無料2008落としてC#がBest
VB.NETやるならC#覚える方がのちのち楽になるよ。書き方同じだし。
153:デフォルトの名無しさん
09/03/07 14:50:41
オクで正規品買えるよ
MSDNの横流しも多いが
154:デフォルトの名無しさん
09/03/07 15:26:34
>>146
System.Collections.ArrayListってVBAで使えるの?
.net系の定義だと思うのだが
(スレチだが、>>143の質問方法だと煽らて当然かと)
155:デフォルトの名無しさん
09/03/07 16:09:48
CreateObjectしてみれば?
156:デフォルトの名無しさん
09/03/07 16:18:43
参照設定の一覧の中にmscorlib.dllがある。
157:デフォルトの名無しさん
09/03/07 17:02:20
>>154-156がオートメーションエラー(80131700)でNGです。誰か教えて。
2000 sp4 .net2.0
office200 sp3
参照設定にmscorlib.dll
Sub Sample1()
Set DataList = CreateObject("System.Collections.ArrayList")
Set DataList = Nothing
End Sub
158:デフォルトの名無しさん
09/03/09 02:28:43
土曜日の仕事を金曜日にかたずけたいと思いプログラム
を考えましたが動きません。
if WeekdayName(Weekday(Date))=6 and Hour(Time) >14 then
ActiveSheet.PageSetup.CenterHeader = "&24&B&I"+ Date +1 ’金曜日の2時以降は土曜日の日付のヘッダー
else
ActiveSheet.PageSetup.CenterHeader = "&24&B&I"+ Date ’平日は当日のヘッダー
end if
ActiveSheet.PageSetup.RightFooter = "&36&B&Uテスト"
これのどこが間違っていますか?
環境;
os xp
v 2003
159:デフォルトの名無しさん
09/03/09 04:14:59
>>158
Debug.Print WeekdayName(Weekday(Date))
160:デフォルトの名無しさん
09/03/09 04:19:36
>>158
Date型を文字列として足す場合は+じゃなくて&を使う
161:デフォルトの名無しさん
09/03/09 21:23:07
すみません教えてください。
最近会社のパソコンが新しくなったのですが
エクセル2003でコードを記入しようとすると
ツール−マクロの次が
セキュリティしか表示されません。
何か原因があるのでしょうか。
162:デフォルトの名無しさん
09/03/09 21:42:03
>>161
alt+f11
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4899日前に更新/170 KB
担当:undef