トップページtech
1001コメント350KB

Excel VBA 質問スレ Part32

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/07(月) 22:19:55.86
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 質問スレ Part31
http://toro.2ch.net/test/read.cgi/tech/1376371376/

関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
03753672014/01/07(火) 18:22:42.41
>>374
ありがとう。
ちょっと動作確認してみます。

あとx〜yの範囲よりzの個数が大きいときに「アホ」と出ずにすべての範囲の数字が表示されるというバグがあるぞ。
0376デフォルトの名無しさん2014/01/07(火) 18:47:58.46
>>367
この手法での回答は自分で考えてないと、先公にチクッとく
0377デフォルトの名無しさん2014/01/07(火) 19:00:29.61
>>375
簡単なことは自分でやってくれ。
あと19行目のck = Trueは余分だった、消してくれ。
0378デフォルトの名無しさん2014/01/07(火) 19:10:24.76
>>6
出番だぞ
0379デフォルトの名無しさん2014/01/07(火) 20:30:12.18
未だに悔しがってるの?
0380デフォルトの名無しさん2014/01/07(火) 20:59:23.37
>>1★5は解禁?
0381デフォルトの名無しさん2014/01/07(火) 21:24:14.13
ここで駄々こねて駄目って言ったらみんな次スレに行っちゃうから
泣き寝入りだろうな
0382デフォルトの名無しさん2014/01/07(火) 22:20:52.87
>>376
誰の何の先生なんだろう・・・かかりつけのお医者さんとか?おだいじにどうぞ
0383デフォルトの名無しさん2014/01/08(水) 20:42:14.12
フォーム利用してるとき、フォーム用のモジュールにUnload Meみたいに"Me"は使えますが
標準モジュールの宣言部分の変数を扱いときは、Me.iTestValueみたいに"Me"は使えないのはなぜですか?
0384デフォルトの名無しさん2014/01/08(水) 20:50:31.13
>>383
そのMeは何を指してるのか考えてみれば?

とは言えVBAではインスタンスって概念が解りにくいからなぁ
標準モジュールはインスタンス作成されないからインスタンスをあらわすMeは使えません
0385デフォルトの名無しさん2014/01/08(水) 21:03:54.67
>>384
なるほど、さっぱりわかりませんがありがとうございます。
インスタンスならMeが使えるということですか。
0386デフォルトの名無しさん2014/01/08(水) 21:05:24.61
フォーム用のモジュールの宣言部に
Public iTest as Integer
とし、貼り付けたボタン押せばiTest=iTest+1としてるんですが
標準モジュールで書くiTestは別人となってるようなんです。
これはどういうことでしょうか?
0387デフォルトの名無しさん2014/01/08(水) 21:15:33.34
>>386
フォームと標準モジュールでそれぞれiTestを宣言したのか?
そりゃ宣言が二つあるんだからiTestは二つ(以上)あるだろ
0388デフォルトの名無しさん2014/01/08(水) 21:17:12.77
>>386
>標準モジュールで書くiTestは別人となってるようなんです。
これはどういうことでしょうか?
つまり、もっと詳しく。標準でDIMとかした人?

あと、ここは学校じゃないので、、、
たぶん今の君の疑問の殆どはインターネットを探せばいくらでも出てくると思うよ
03893862014/01/08(水) 21:25:42.19
>>387
いえ、フォームモジュールだけでiTestを宣言したんですよ
0390デフォルトの名無しさん2014/01/08(水) 21:26:13.56
標準モジュールで書くiTestは = 標準モジュールで使うiTestは
0391デフォルトの名無しさん2014/01/08(水) 21:26:43.80
別人 = 別物
0392デフォルトの名無しさん2014/01/08(水) 21:29:48.75
>>389
Option Explicitつけてるか?
つけないで標準モジュールで使ったiTestは、標準モジュールで宣言が省略されてるとみなされてる
0393デフォルトの名無しさん2014/01/08(水) 21:32:05.40
Option Explicitつけてないよ
0394デフォルトの名無しさん2014/01/08(水) 21:33:40.51
でもフォームモジュールでもPUBLICで宣言してるから
標準モジュールで使えないとおかしくないか?
0395デフォルトの名無しさん2014/01/08(水) 21:57:07.64
>>394
違うところで宣言されてる変数を使いたければ、どこの変数かも指定しないとダメ
標準モジュールで宣言されてるなら標準モジュールの名前
クラスやユーザフォームで宣言されてる変数なら、そのインスタンスへの参照
を変数の前に指定して.でつなぐ

インスタンスを意識しなくて標準モジュールで使うなら、たとえば
UserForm1.iTest = 0
みたいな感じ
0396デフォルトの名無しさん2014/01/08(水) 22:21:49.80
>>395
そうだったのですか!
ご丁寧な解説ありがとうございます。
各モジュールの中ではいいけどそうでなければ[モジュル名]と.でつなげばいいんですね。

ところで「インスタンスを意識しなくて標準モジュールで使う」の意味がさっぱりわからないけど
なんかこの概念はすごく重要そうな気がするんですが
どういうことなのでしょうか?
VBAでは完全にはオブジェクト指向でないから標準モジュールはもともとインスタンス(??)という意味でしょうか?
0397デフォルトの名無しさん2014/01/09(木) 00:51:11.25
>>396
標準モジュールはもともとインスタンス作成したりしない
インスタンスなしで実行できる

クラスは、使うためには自分でインスタンスを作成してそのインスタンスを使う

ユーザフォームはクラスの一種なんで、使うにはホントは自分でインスタンス作成しないとダメなんだが
いろんなしがらみによって自分で作成なくてもインスタンス(とそれへの参照)が用意されている
それが>>395のUserForm1見たいにユーザフォーム名で使えるやつ
これは実はUserForm1というフォーム(の定義、型)じゃなくて、暗黙のうちに作成されたUserForm1のインスタンスへの参照

標準モジュールはもともとインスタンス じゃなくて フォームは勝手にインスタンスが作られてる
が正解
03983962014/01/09(木) 01:16:40.59
>>397
なるほどぉ。
・・・というのはウソで、さっぱり分かりませんわ。
勉強して出直してきます。
0399デフォルトの名無しさん2014/01/10(金) 19:26:18.39
セルとセルの値をIFを使って比較するとき、大文字と小文字の区別はどうなるか知ってます?
たぶんほとんどの人が知らないでしょう。

普通の関数(VBAじゃない)では、大文字と小文字は区別しないのに
VBAの比較では、大文字と小文字は区別するんですよ。

これ、それぞれで別の方法で比較するにはどうすればいいですか?
04003992014/01/10(金) 19:29:17.35
最後の日本語おわかりかな?
VBAで大文字と小文字を区別しない方法って普通はどうしてますか?ということです。

例えば、
If a = a.Offset(0, 1) Then
a.Offset(0, 2) = "O"
Else
a.Offset(0, 2) = "X"
End If
とすると、"ABC"と"aBc"を比べたとき別モノと判断するんですよ。
04013992014/01/10(金) 19:31:27.34
まっさきに思いつくのは
・関数で全部大文字にしてから比較
という方法だけど、もっと手軽な方法があるかと思って。
0402デフォルトの名無しさん2014/01/10(金) 19:42:47.15
正規表現
04033992014/01/10(金) 19:47:23.74
とは何ですか?
0404デフォルトの名無しさん2014/01/10(金) 19:56:04.73
option にありそうじゃね
VBEで適当なところにoptionと入力してカーソル合わせてF1キー押して調べて教えて
0405デフォルトの名無しさん2014/01/10(金) 20:19:55.33
StrComp
0406デフォルトの名無しさん2014/01/10(金) 20:46:23.15
>>399
> たぶんほとんどの人が知らないでしょう。
いや、使ってみればわかるんだから、普通知ってるって

> 普通の関数(VBAじゃない)では、大文字と小文字は区別しないのに
まず「ワークシート関数」という名称を覚えましょう
そして大小文字を区別しないのは、ワークシート関数の仕様ではなく、ワークシート上での比較演算の仕様ね
つまり「=("ABC"="abc")」が、Trueを返すかFalseを返すかという問題


> これ、それぞれで別の方法で比較するにはどうすればいいですか?
ワークシート上の数式で大小文字を区別するならEXACT関数
VBAで大小文字を区別しないならOption Compare TextやStrCompや正規表現のIgnoreCase
0407デフォルトの名無しさん2014/01/10(金) 20:53:34.65
正規表現とは自分のちんちんを露出して性の自由を表現することでしょうか?
0408デフォルトの名無しさん2014/01/10(金) 21:29:56.07
正規と性器を区別できないのかよw


とか、ネタにマジレスするフリしてみるテスト
04094072014/01/10(金) 21:43:59.76
これで釣れた(ワラ
0410デフォルトの名無しさん2014/01/10(金) 21:49:15.86
男性においては勃起具合
女性においては塗れ具合
これが正規表現です
勘違いしがちですが露出は関係ありません
0411デフォルトの名無しさん2014/01/10(金) 21:53:33.60
>>409
携帯で見てて、3段改行の下に書かれてることに気付いてないとか?
0412デフォルトの名無しさん2014/01/10(金) 22:00:57.26
そのりくつはおかしい
0413デフォルトの名無しさん2014/01/10(金) 23:48:36.66
もう一度確認したいのですが
・Sleep関数
・DoEvents
の違いはなんでしょう?

OSに制御を渡すことと関係あるそうですが
そもそもOSのしくみとは?
OSはいろんなプログラムを順番に高速で実行させることによって見かけのマルチタスクを実現しているんですよね?
0414デフォルトの名無しさん2014/01/11(土) 00:01:47.75
CPUがシングルコアシングルスレッドだった時代よりはOSは進化してると思う
0415デフォルトの名無しさん2014/01/11(土) 00:14:16.33
違いってその言葉通り、休むとイベントを実行する
0416デフォルトの名無しさん2014/01/11(土) 00:34:54.62
>>415
あなたは(1)教えるのが下手か(2)いじわるの人
こんど発言するときは名前欄に(1)か(2)のご記入をお願い。

質問を変えよう。
どういうときにSleepを使って、どういうときにDoEventsを使いますか?
0417デフォルトの名無しさん2014/01/11(土) 00:36:30.34
こういう人には答えたくないわー
0418デフォルトの名無しさん2014/01/11(土) 01:25:05.91
FAQレベルのことを教わるのに上から目線の男の人って
0419デフォルトの名無しさん2014/01/11(土) 02:30:45.99
聞き逃げしといて回答を得られるなんて思わない方がいいよ
あいつなら回答しそうだけど最近来ないしね
0420デフォルトの名無しさん2014/01/11(土) 04:00:34.13
>>416
横からごめんね、最近低レベルな質問してる人だよね
名前欄に低能とか初級とか、程度がわかる名前を入れておいてくれよ
0421デフォルトの名無しさん2014/01/11(土) 04:44:36.37
あまりよく知らないけど、
Sleepは、自主的にCPUの実行権を放棄して、
他のプロセスに、CPUのタイムスライスを与える

DoEventsはイベントキューから、
イベントをとって処理する?
0422デフォルトの名無しさん2014/01/11(土) 07:17:37.53
>>416
いちおうマジレスしとくけど
Sleep使うとき
 スレッドをしばらく停止しておきたいとき
DoEvents使うとき
 溜まってるメッセージキューを処理したいとき

まあ出来れば二度と来ないでください
0423低脳2014/01/11(土) 11:19:55.48
>>422
そのスレッドとかメッセージキューとは、どういう概念ですか?
0424デフォルトの名無しさん2014/01/11(土) 12:08:58.66
それはもうVBAじゃ無いからスレチになるのと多分理解出来ないよ
スレッドはプロセス内部で実行単位をさらに分割したもの
VBAなら1プロセス1スレッド
1CPUが割り当てられ4コアなら25%の力を引き出せる
他言語で1プロセスnスレッドが可能なものもある
やはり1スレッドに1CPUの割り当てとなるが4スレッド使えば4コアを100%使い切れる

メッセージはWindowsのGUIの仕組み
キーボード、マウスクリックその他イベントのトリガーは全てGUI部品に対するメッセージで実現されている
めんどくさいやめた
0425デフォルトの名無しさん2014/01/11(土) 12:50:23.25
Sleepはマルチスレッドを活用して処理を構築するときに必要。中級者でもほとんど未達。学ぶ気があるならそこからぐぐれ

DoEventsはユーザーの入力待ちに使う。他のアプリと連携するときに使うこともある
ある意味、関数内で隠しのアプリケーションを一つ立ち上げるのに近いので
使い方よりも内部を理解して注意点を把握することが大事
キーワードはイベントループ、メッセージポンプ、メッセージループ(呼び方はいろいろ)

もっと簡単に言うと学ぶ気のない奴は去れ
0426デフォルトの名無しさん2014/01/11(土) 12:58:28.43
どうせまた涼しい顔して低レベルなググれば済む話で質問してくるぞアイツは

低能で厚顔無恥はスルーだろjk
0427デフォルトの名無しさん2014/01/11(土) 13:14:53.49
>>426
お前はググらなければわからないってだけじゃ・・・
0428デフォルトの名無しさん2014/01/11(土) 15:15:33.46
オブジェクト変数で別ブックのセルを代入しておいたあと
その別ブックを閉じるとその変数を参照できません。

これを防ぐにはどうすればいいのでしょうか?
0429デフォルトの名無しさん2014/01/11(土) 15:39:13.08
>>428
オブジェクトの場合はセルの場所が記憶されるだけなのでブックを閉じるとセルの中身は見えなくなる
オブジェクトじゃない変数にセルの中身(値)を記憶しておけばいい
0430デフォルトの名無しさん2014/01/11(土) 20:10:43.64
自作関数で、帰り値が2つあるものを設計中ですが
その方法とは?
0431デフォルトの名無しさん2014/01/11(土) 20:12:55.39
>>430
設計書見せて
0432デフォルトの名無しさん2014/01/11(土) 20:43:43.23
複数の戻り値が欲しければ、普通に参照渡しで値が戻ってくるようにするとか
構造体やクラスのように複数の子要素をもつ型を返すようにするのが基本じゃね?

まぁ他にも配列や連想配列を返すとか、グローバル変数を介するとか
いくらでも方法はあるけどね
0433デフォルトの名無しさん2014/01/11(土) 22:05:29.03
存在しない数値のみを抽出する方法?

1〜10の縦並びの表で、調査結果が飛び飛びに得られ、
データが得られなかった番号のみを抽出してそれのみの
新たな表を作成するVBAプログラムを作りたいのですが、

表番号 調査項目
1  xx
2  xx
3  xx
4  xx


10  xx
  
2,3,5,7,10 の調査結果が得られ調査結果が得られた順に結果のみの新たな表が別のブックに作成される.

最初の表から未調査の1,4,6,8,9のみの表を作成しそれを元に再調査と言った流れです。

仮に10としてありますが実際の表は1000以上あり手で消すのは現実的ではありません
除外する方法を色々考えましたがすぐ出来そうで簡単にはできないようで行き詰まりました。
宜しくお願い致します。
0434デフォルトの名無しさん2014/01/11(土) 22:10:53.29
>>433
調査結果が得られたかどうかはどうやって判断するんだ?

つか、VBA使わんでも、その条件でフィルタかければ良いだけな気はするがな
0435デフォルトの名無しさん2014/01/11(土) 22:19:02.70
>>430
複数の戻り値っていうのが同じ方(例えば二つの数値とかだったら、
数値型の配列を返すとか。
04364332014/01/11(土) 22:19:05.56
>>434
結果が得られた順に別ブックへ結果を記載して保存される仕組みになっています。

(調査結果(別ブック))
表番号 調査項目 調査結果 
2 xx false xx
3 xx true xx
7 xx true xx
5 xx true xx
10 xx false xx

何気にこの状態から表番号を1〜10に補って並べ替えるのも方法が思いつきません、、
逆に1〜10から上の数値を間引く方法もわからない感じです、、
0437ピラフ2014/01/11(土) 22:25:15.62
          ____
        /      \
       /  ─    ─\
     /    (●) (●) \
     |       (__人__)    |
      \      ` ⌒´   ,/
      /         ::::i \
     /  /       ::::|_/
     \/          ::|
        |        ::::|  キュム
        i     \ ::::/ キュム
        \     |::/
          |\_//
          \_/
04384332014/01/11(土) 22:48:47.30
>>433
>>435
素人なりに1つだけ思いついた方法は
結果値の表番号を一つ一つサーチして該当する行を1行削除するを繰り返し
削除後にソートして寄せると完成しますが 
数百回処理を繰り返す必要がり力業っぽい
のでこのやり方は違うかなと思いました
0439デフォルトの名無しさん2014/01/11(土) 23:13:09.99
数百回くらいなら昨今のPCなら全然問題ないレベルでしょ
その程度の処理量を更に削る為に労力を使う方が、初心者らしい愚行だよ

力業でも0.2秒で終る処理を、0.1秒で終るようにするための模索に
何十分や何時間の時間を浪費するとか、バカバカしくてやってられん
04404332014/01/11(土) 23:33:47.37
>>439
1発で比較&間引きをしてくれる魔法のコードがあるかと思いましたが、無いようで、、 
ありがとうございました。
0441デフォルトの名無しさん2014/01/11(土) 23:34:47.28
今時は性能の高いパソコンを買ったり借りたりするほうが安いもんな
その時間で別の仕事したほうが効率いい

とはいえ、一定以上の効率をもったコードを常に書けるだけの能力を持っていたいとは思うね
そうすりゃパソコン借りる時間が減る=金まわりがよくなるからな
0442デフォルトの名無しさん2014/01/11(土) 23:38:38.28
俺もフィルタ機能で一発解決だと思うが
なぜダメなのかよくわからんな
0443ピラフ2014/01/11(土) 23:40:07.65
調査結果と表番号でソートしてカットアンドペーストでやっちゃえば現実的にもいけそうじゃない?
04444332014/01/12(日) 00:27:32.65
>>442 443
データーが欠落した状態で結果のみが別のブックへ書き出されている状態でしてフィルタがかけられない状態かと思います。
(フィルタ機能を完全熟知してないので間違っているかもしれませんが)
自分の知識不足ですみません 激しく堂々巡りをしているようですので本日は一旦落ちます。。
0445デフォルトの名無しさん2014/01/12(日) 00:51:33.87
1から1000までの連続した整数から
ランダムに存在する特定の数値をスマートに間引く方法 (2,3,5,7,10・・ こういう数を一括削除する)

うまい方法は無いでしょうか?
数時間考えましたが全く解決方法が見つからず吐きそうなのでもう寝ますw
0446デフォルトの名無しさん2014/01/12(日) 01:07:43.46
>>445
その数値が一定の法則に従っていない以上、順次検索して間引くしかないわけだが

間引く元シートは準備されてるのか?
だったらそこから結果のシート(ブック)参照して結果有るかないかチェックする列つくって
その列でフィルタすればVBAなんか使わなくてもいいぞ

まあVBAでやるなら>>438のやり方でいいんじゃね
0447デフォルトの名無しさん2014/01/12(日) 01:31:20.39
>>445
状況がよく分んないけど、
ADO使ってシートにそういうSQL
投げてやればいいんじゃないの?
0448デフォルトの名無しさん2014/01/12(日) 03:18:51.28
awkなどで、よくある処理だよ

列(フィールド)の区切りは、スペースかタブ?
すべての行の最初の列(表番号)だけを抜き出して、
ファイルAに保存する
(Excelの画面でもできる)

ファイルAをsortコマンドで、
数字でソートして、ファイルBに保存する
(Excelの画面でもできる)

(ここで表番号の重複を考えて、念のために、
ファイルBをuniqueコマンドで、
連続した重複行を除いて、ファイルCへ出力する
ファイルB、Cの行数を比較する
行数が異なっていたらエラー?)

ループ変数をインクリメントさせながら、
ファイルBを1行ずつ読んで、数字を突き合わせる
ファイルBに存在しない数字を、
ファイルDへ出力する
04494482014/01/12(日) 03:20:52.50
一方、ここからは、最初のファイルが、
表番号順に並んでいない時の処理です

最初のファイルから、1行ずつ、
最初の列(表番号)を抜き出して、
連想配列のキーとして、
その値に、2列目から改行までを代入する

ファイルBを1行ずつ読んで、
その数字をキーとして、
連想配列の値を取り出して、文字列を連結する

このように処理は、細かく単機能に分けると、
バグを減らせます
sort + uniqueも、よくあるパターン
04504482014/01/12(日) 03:33:07.53
>449 自己レス
Excelの画面で、
表番号でソートするだけで出来るわw
04514482014/01/12(日) 03:44:48.55
>>445
まず幾つかのランダムな数字をソートして、
ファイルAへ出力する
(Excelの画面でもできる)

ループ変数をインクリメントさせながら、
ファイルAを1行ずつ読んで、数字を突き合わせる
ファイルAに存在しない数字を、
ファイルBへ出力する
04524482014/01/12(日) 05:49:03.84
diffで差分を取る方法もある

まず幾つかのランダムな数字をソートして、
行区切りで、ファイルAへ出力する
(Excelの画面でもできる)

Excelの画面の、自動ナンバーで、
1-1,000の千行を代入し、ファイルBとして保存する

diffで、両者の差分を取る
0453ピラフ2014/01/13(月) 21:17:31.14
>>445
えと、数列の差を求める方法と、要素を削除する方法があって
それぞれこんな感じ。
http://uploda.cc/img/img52d3d869b7f67.png

これらを組み合わせるとできるはずよ。

コードはこんな感じで
https://friendpaste.com/1ooShGbBWBLAPVIitWTlDD?rev=303435326666
0454デフォルトの名無しさん2014/01/13(月) 21:24:07.27
コードってその人のクセが出るよね
全大文字化とかの表面的なところを隠しても
0455ピラフ2014/01/13(月) 21:45:43.48
>>453
完全に間違ってた、こっちで
https://friendpaste.com/1ooShGbBWBLAPVIitWTlDD

>>454
そういうのあるよね。ピラフはCAPICOMのサンプルコードを参考にしてる。
インデントは空白3文字で変数名はアッパーキャメルケース。
変数の宣言は使う直前。
0456デフォルトの名無しさん2014/01/13(月) 21:47:01.99
出来るだけ個性を出さないように変数を減らそうとして
with を使いまくったら個性的過ぎると怒られたことがある。
0457ピラフ2014/01/13(月) 21:49:50.33
>>456
ガハハ、ピラフガハハ。
Withブロックマスターを名乗ったら言いと思うよ。
0458デフォルトの名無しさん2014/01/15(水) 12:12:50.31
なぁ、ピラフ
桃白白しらない?
0459デフォルトの名無しさん2014/01/15(水) 13:02:26.08
知らないって答えるに決まってるだろ
その問に知ってるって答えるくらいなら、初めからコテ変えなんてしない



とかマジレスしてみる
まあ>>458も、その辺を把握している上でのツッコミなんだろうけどw
0460デフォルトの名無しさん2014/01/16(木) 02:24:37.89
With With の 中 With から 外 With を 使うにはどうすれば
0461デフォルトの名無しさん2014/01/16(木) 02:34:02.86
>>460
Withの使用を辞めることだ。
0462デフォルトの名無しさん2014/01/16(木) 02:34:59.47
むかしこのスレにいた、かなりExcelやVBAに詳しい固定の名前の人はどこ行った?
ちょっと性格は変だけどスキルはあったし丁寧に回答してた人。
0463デフォルトの名無しさん2014/01/16(木) 03:26:21.55
>>461
なるほど。勉強になります。ありがとうございます。
0464デフォルトの名無しさん2014/01/16(木) 09:11:14.50
>>462
たんすの前で何を着て出てくるか悩んでるよ
0465デフォルトの名無しさん2014/01/16(木) 09:47:10.65
>>462
何人か居るけど、誰のこと言ってるの?
0466デフォルトの名無しさん2014/01/16(木) 09:51:25.46
>>460
Parentプロパティ
0467デフォルトの名無しさん2014/01/16(木) 15:38:16.99
亀仙人のことじゃね
0468デフォルトの名無しさん2014/01/18(土) 15:56:54.23
ExcelVBAのコードから
あるフォルダにある画像ファイル(ファイル名は選択範囲のselectされたセルの中)をすべて縮小(たとえば70%)して上書き保存させるにはどうすればいいですか?
他のフリーソフトの助けを借りるのでもいいです。
0469デフォルトの名無しさん2014/01/18(土) 16:30:55.58
>>468
その処理の内、何処まで出来てて、どこが解らないの?

まさか、1から全部コード書いて差し出せとか言わないよね?
04704682014/01/18(土) 16:44:55.37
>>469
画像縮小だけがわかりません。
下が自作コードです。

=====================================
Sub Unko()
Dim C As Range
Const PATH As String = "C:\Manko"
For Each C In Selection
SizeSmall (PATH & "\" & C.Value)
Next C
End Sub

Sub SizeSmall(F As String)
■■■ここが分からないのです■■■
End Sub
=====================================
0471デフォルトの名無しさん2014/01/18(土) 17:02:29.21
>>470
つ ImageMagick

WinAPI使う方法とか、ActiveX導入する方法とか、Imageコントロール使う方法とかいろいろあるけど
とりあえずImageMagickで目的は果たせるから、それ以上を望むなら勝手に勉強してね
0472デフォルトの名無しさん2014/01/18(土) 17:03:29.95
>>471
バカじゃねw
04734702014/01/18(土) 17:13:43.13
>>471
ありがとうございます。
これですね。
http://ja.wikipedia.org/wiki/ImageMagick
素晴らしそうですね。

ところが質問です。
[Q1] WikiにVBAと書いてないけど大丈夫ですか?
[Q2] VBAのコードに書くにはどんな呪文を唱えればいいですか?
0474デフォルトの名無しさん2014/01/18(土) 17:16:26.19
ImageMagickはVBAで使えないよw
■ このスレッドは過去ログ倉庫に格納されています