1 名前:デフォルトの名無しさん [2007/12/12(水) 17:27:44 ] ExcelのVBAに関する質問スレです 質問前に 【 >>2-3 】 あたりを良く読むこと 前スレ pc11.2ch.net/test/read.cgi/tech/1189814602/
792 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:11:40 ] >>790 IEEE 754倍精度はある。
793 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:07:20 ] Perlについての質問箱スレから誘導されて来ました。 Excel VBAからDOSコマンドを実行することはできますか? 具体的にはPerlスクリプトを実行させて、結果をExcelで受け取って 表示するまでを1クリックで行いたいと思っています。 環境はWindowsXP Home Edition、Excel 2003 です。 よろしくお願いします。
794 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:51:57 ] >>793 >Excel VBAからDOSコマンドを実行することはできますか? ちょいと命令忘れたができる。 VBAからPing送ったりbatを呼び出したりしたりもできるから間違いない。 >具体的にはPerlスクリプトを実行させて、結果をExcelで受け取って >表示するまでを1クリックで行いたいと思っています。 上の内容を具体的にしたつもりだろうが、上ができたとしてもこちらは関係ないだろ? PerlからExcelにイベントでも起こさせられれば可能。
795 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:06:30 ] XPにDOSは載ってません
796 名前:793 mailto:sage [2008/02/22(金) 01:09:30 ] >>794 ありがとうございます。では情報があることを信じて 再びgoogleの海へと漕ぎ出すことにします。 >上ができたとしてもこちらは関係ない 言われてみたらその通りでした。 いつPerlの処理が終わったかExcel側で知る必要がありますもんね。 >>795 すみません、XPではコマンドプロンプトでしたか。
797 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:46:04 ] >>793 >>728-731
798 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 02:00:35 ] active perlはどう?
799 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:22:22 ] >>792 つまり何桁ですか?
800 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 20:07:05 ] >>792 倍精度の前のIEEE 754って、何を規定した規格の番号ですか?
801 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 21:39:25 ] >>800 ググれ 浮動小数点数の規格だ
802 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:55:17 ] >>800 Excel2000辺りは倍精度だけど、2003辺りからは拡張倍精度になっているから要注意。 前者は10進数で概ね15桁、後者は10進数で概ね19桁の精度があることになる。
803 名前:693 mailto:sage [2008/02/23(土) 16:40:39 ] 解決したよ。 Origin句を定数xlWindowsから、 Shift-Jisのコードページである"932"へ変更してみたところ 文字化けなく開くことができたのでご報告。 その辺の細かな挙動の違いにだいぶ時間使いました・・・。 今後の何かの参考になれば、ということで、ひとつ。
804 名前:デフォルトの名無しさん [2008/02/23(土) 16:45:14 ] VBAやEWCELのlog関数で計算して、その答えから逆算してもとに戻してみたら3桁精度しかなかったのです。 精度をあげる方法がありましたら教えてください。
805 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:30:23 ] 寡聞にしてEWCELなるものは存じ上げませんが、VBAでやってみたということでしたら ソースをご提示願えませんでしょうか。
806 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:44:19 ] EXCELの前身のアプリじゃね
807 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:11:53 ] WinXP+Office 2k7です。 ワークシート上部のいくつかのセルに任意の数値を入力するとそれに基づいて全体が計算されるシートを作りました。 B8というセル(自分で数値を入力する)の値がいくつならセルI818が0になるか、というのを探すためにLoopを使ったのですが、 Dim x As Integer x=0.1 Do x=x+0.0001 Range("B8").Value=x Loop Until Range("I818").Value=0 とやってもI818が0になっても普通に通り過ぎてしまいますorz ひょっとしてワークシート上でI818が計算されるのを待たずにLoopが続いてしまうんでしょうか。。? お知恵をお貸しください
808 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:23:28 ] お前、小卒か? 整数って意味を知ってるか?
809 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:28:32 ] あ、integerじゃなくてdoubleでした。 こっちに書くとき間違えた\(^o^)/
810 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:33:09 ] > B8というセル(自分で数値を入力する)の値がいくつならセルI818が0になるか 自分でマクロ書かなくても、それはExcelのゴールシークを使えばいいのではないかと思う。
811 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:36:45 ] >>810 うは・・・全然知りませんでした('A`) お手数おかけしました。ありがとうございます
812 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:00:13 ] すれ違いでしたら誘導お願いします。 「マクロを有効化する」を出さずfor文相当の機能を実現しようと思ってます。 直接forは使えないので、富豪的にセルのマスを記憶装置にする方針です。 やりたいことは、以下の状況で 「列Bが「新」の行の数値を抜き出して それをコンマで連結して指定のセル(例えばD100)に入れる」です。 列A 数値(1ずつ増えていく) 列B 「新」「旧」のどちらかの文字 一旦、以下の式をC列に入れて、ドラッグでオートフィルします。 =if(B1="新",A1,"") これはうまく行き、C列には「新規」の行のみに数値が表示されます。 次に、D列の先頭にC1の値を入れます(forの初期条件) 次に「同じ行のC列に値があれば、一つ上のD列の値をコンマで連結」 「同じ行のC列に値がなければ、一つ上のD列の値をそのまま表示」 をforのステップ条件としてD2にかき、D100へオートフィルしようとしたのですが =CStr(D1) & "," & CStr(C2)やCStr(val(D1)) & ..といった式ではうまくいきません。 アドバイス頂けないでしょうか 以上長文失礼しました。
813 名前:812 mailto:sage [2008/02/24(日) 11:03:55 ] ↑訂正「新規」ではなく「新」ですね
814 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:37:49 ] Vlookupじゃね?
815 名前:デフォルトの名無しさん [2008/02/24(日) 12:12:23 ] >>804 > VBAやEWCELのlog関数で計算して、その答えから逆算してもとに戻してみたら3桁精度しかなかったのです。 log関数は数値が小さいと精度は悪くなる。 少し値が変わると急激に値がかわるからな。 自分で精度のよい関数を作るのがよい。 級数展開とかやれば作れる。 >>805-806 おまえら厨房だな。
816 名前:デフォルトの名無しさん [2008/02/24(日) 13:44:03 ] 質問なのですが適当な大きさのユーザーフォームを作成してフォームの中にラベルや ボタンを設置します。設置したラベルやボタンが常にフォーム幅の真ん中に設置 させる方法はありますでしょうか?フォームの大きさを後で変更しても真中に自動で なるようにしたいです。
817 名前:812 mailto:sage [2008/02/24(日) 15:25:46 ] >>814 それだとコンマをくっつけることができませんでした。 しかし、結局、こんな感じで解決しました if(C2<>"",concatenate(D1,",",text(C2,"#")),D1)
818 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:05:38 ] >>816 算数レベルで処理
819 名前:800 mailto:sage [2008/02/24(日) 22:00:00 ] >>802 Thanks。概ねという留保付けは、このせいですか? Excel で浮動小数点演算の結果が正しくない場合がある 2007年3月19日 support.microsoft.com/kb/78113/ja
820 名前:デフォルトの名無しさん [2008/02/24(日) 22:38:32 ] 816さんどーゆうことですか?
821 名前:802 mailto:sage [2008/02/24(日) 22:49:22 ] あーそうそう、そこの精度の欄にある、暗黙と仮数を足した53ビットを10進で表わすと概ね15桁ってこと。 つまり、log2(2^53)≒15.95=15~16桁。
822 名前:デフォルトの名無しさん [2008/02/25(月) 10:04:55 ] 教えていただきたいのですが、エクセルで、Aの列に任意のセルのカーソルが ある場合のみ(B列やC列ではプログラム自体が稼動しなくしたいのですが) FANCTIONを実行したいのですが、うまくいきません。 どうしたらうまくうごくのでしょか?
823 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 11:18:34 ] >>822 もうちょっと分かるように説明しる。あと、どんなFUNCTIONよ? ボタン押したときに、カーソルが特定の列にある場合にのみ処理を有効にしたいってことか?
824 名前:デフォルトの名無しさん [2008/02/25(月) 11:38:48 ] 822です。 >カーソルが特定の列にある場合にのみ処理 まさにこの事です。エクセルの行列のデーター をVBで計算させてるのですが、キーの列をA列にして そこからActiveCell.Offset(0, x)とActiveCell.Offset(0, x+1) を足してActiveCell.Offset(0, x+2)へ答えを出しなさいとしてるのですが、 いかんせん、キーにしているA列以外にセルがある場合も実行していまうので ActiveCell.Offset(0, x+2)の書き込みたいところデーターのあるActiveCell.Offset(0, x+3) とかに上書きしていまうので、何とかしたいのです。FANCTIONは ActiveCell.Offset(0, x+3)=ActiveCell.Offset(0, x)+ActiveCell.Offset(0, x+2) を変数にしたものです。
825 名前:デフォルトの名無しさん [2008/02/25(月) 11:42:10 ] すいません。間違いました。FANCTIONは ActiveCell.Offset(0, x+2)=ActiveCell.Offset(0, x)+ActiveCell.Offset(0, x+1) を変数にしたものです。 です。
826 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 12:17:05 ] >>825 単にFANCTIONとやらの先頭で、ActiveCellがA列じゃなければ終わればいいだけじゃね?
827 名前:825 [2008/02/25(月) 12:58:53 ] ActiveCellがA列じゃなければが、 書けないのです・・・
828 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 13:12:22 ] そもそも>824のxはどこから出てきたのか知らんが、 offsetプロパティに辿り着けるくらいならcolumnプロパティくらい見つけられるだろ。 試しにmsgbox activecell.columnして味噌。
829 名前:825 [2008/02/25(月) 14:11:10 ] If ActiveCell.Column = 1 Then で出来ました! 828さん ありがとうございます。 感謝 感謝!
830 名前:デフォルトの名無しさん [2008/02/25(月) 15:57:11 ] 基本的な質問でスミマセン! ワークシートに新しい埋め込みグラフを作成(Addメソッドによる)したいのですが Dim co As ChartObject Set co = Worksheets("sheet1").ChartObjects.Add(50, 40, 200, 100) は正常に動くんですが Worksheets("sheet1").ChartObjects.Add(50, 40, 200, 100) は、構文エラーになります。なんで? わざわざ変数に格納しないと、機能しないのはなぜなのでしょうか? 詳しい人おられましたらご教授いただけないでしょうか?
831 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 16:00:26 ] そういう構文だからだろ。疑問を持つところじゃない。
832 名前:デフォルトの名無しさん [2008/02/25(月) 17:16:37 ] Rng AS Range Rng1 AS Range Rng2 AS Range Rng=Range("A1:G10") このRngから一番右の範囲をRng1に入れたい。 またRngから一番右の列を除いた範囲をRng2に入れたい。 どのようにすればよいでしょうか?
833 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 18:32:27 ] union
834 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 18:45:36 ] >>830 Callステートメント
835 名前:デフォルトの名無しさん [2008/02/25(月) 18:49:27 ] >>832 Rng1=Rng.Resize(Rng.Row.Count-1,Rng.Columns.Count).offset(1,0) Rng2=Rng.Resize(1,Rng.Columns.Count).offset(1,0)
836 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:51:26 ] >>830 Worksheets("sheet1").ChartObjects.Add 50, 40, 200, 100
837 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:07:06 ] ところで君たちは未だにVB独特のハンガリアン記法を守っているのかい? 今度VBAをメンテすることになって読みにくいなあと思ってるんだが・・・。
838 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:21:31 ] なんでExcelでシステムハンガリアン使うん?
839 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:40:24 ] >>835 はぁ? >>832 Set Rng1 = Rng.Columns(Rng.Columns.Count) Set Rng2 = Rng.Resize(, Rng.Columns.Count - 1)
840 名前:デフォルトの名無しさん [2008/02/25(月) 23:55:21 ] 質問です、デスクトップでユーザーフォームだけ残してエクセルは最小化する方法はありますでしょうか?
841 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:00:18 ] 任意のxisファイルを2個各シートに読み込みたいのですが どうやってもできません・・・ ファイルの読み込みってどうやればいいのでしょうか?
842 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:17:49 ] >>841 ブックを開いておいて、シートを移動すれば医院で内科医。
843 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:27:13 ] vbaを使用してRS232cで計測するはめになったんですが、エクセルのvbaはvb6のようなタイマがないので、 擬似的なタイマを作成するときに、何か注意点とか欠点教えてください
844 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:28:18 ] ご愁傷様。
845 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:30:47 ] >>842 VBAでボタンでファイルを選択って出したいのです! でも参照とか選択ってBOXの出し方すら分かりません・・・
846 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:56:58 ] >>845 ファイルを開くダイアログ ttp://www.serpress.co.jp/excel/vba030.html
847 名前:デフォルトの名無しさん [2008/02/26(火) 01:14:15 ] 質問です、デスクトップでユーザーフォームだけ残してエクセルは最小化する方法はありますでしょうか?
848 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 01:15:58 ] >>846 おお、これでBOX造れるんですね!どうも! またちょっと頑張ってみます
849 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 07:10:38 ] >>847 こういう事? Private Sub UserForm_Initialize() Application.Visible = False UserForm1.Show End Sub
850 名前:デフォルトの名無しさん [2008/02/26(火) 08:29:10 ] Dim a As Integer a = Count("a1:a4") For i = 1 To a Beep Next i シートのデーター数だけ繰り返し処理したいのですが a = Count("a1:a4")ここんとこがエラーになってしまいます。 どう処理したらいいのでしょう?
851 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 12:43:24 ] a = WorksheetFunction.Count(Range("a1:a4")) でどう? 試してないけど。
852 名前:デフォルトの名無しさん [2008/02/26(火) 16:50:49 ] 851さん 850です。動きましたありがとうございました。
853 名前:デフォルトの名無しさん [2008/02/26(火) 19:00:35 ] Renge(RefEdit1.Value)と使いたいのですが RefEdit1.Valueを『セル範囲』かどうか調べる方法はありますでしょうか? よろしくお願いします。
854 名前:デフォルトの名無しさん [2008/02/26(火) 20:10:29 ] フォームから入力するVBAを作成しました。 プログラムを走らせ、フォームがでますが、 何も入力せずに放置するとFrame内だけが白くなります。 改善する方法はありますでしょうか?
855 名前:デフォルトの名無しさん [2008/02/26(火) 21:57:03 ] 830です。 >>834 さん なるほど!。値を渡す構文になってしまっていたのですね! >>836 さん 本当だ!動きました。ありがとうございました。 834さん。836さん。お陰様で疑問が解決しました。感謝!感謝!
856 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:29:04 ] >>854 気にすると体に毒だぞ
857 名前:デフォルトの名無しさん [2008/02/27(水) 09:51:07 ] >>856 つまり対策はないと?
858 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 09:52:18 ] モニタの色温度を変えると白を赤っぽく変えたりできるよ
859 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:33:00 ] >>857 俺ら低レベルではわからないんだよ。
860 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:33:21 ] >>854 再現する最低限の構成で、ブックもしくはユーザーフォームモジュールをうp 情報全く無しじゃ、さすがに改善法どころか改善可能か否かすらもわからんわな
861 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:22:06 ] 俺らはそれだけVBAをさわってないってことさ。
862 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:26:29 ] 現実の出来事かどうかすらあやしい
863 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 05:23:21 ] 他のフォームでも同じ現象になるのか検証したの?
864 名前:デフォルトの名無しさん [2008/03/01(土) 04:27:20 ] エクセルで作った表を画像として保存するマクロってありますかねぇ?
865 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:55:31 ] >>864 VBAの範囲だけじゃ無理だけど実現可能
866 名前:入院中の側近 ◆0351148456 [2008/03/01(土) 08:15:23 ] >>864 (っ´▽`)っ 暇なので作ってみたよ☆ Option Explicit Private Declare Function GetVersionExA Lib "KERNEL32.DLL" ( _ ByRef pVersionInfo As OSVERSIONINFO _ ) As Integer Private Declare Sub keybd_event Lib "USER32.DLL" ( _ ByVal bVk As Long, _ ByVal bScan As Long, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long _ ) Private Const VK_SNAPSHOT As Long = &H2C Private Const VK_MENU As Long = &H12 Private Const KEYEVENTF_KEYUP As Long = &H2 Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type (次レスに続く)
867 名前:入院中の側近 ◆0351148456 [2008/03/01(土) 08:16:12 ] (>>866 の続き) Public Sub printScreen() Dim pVersionInfo As OSVERSIONINFO pVersionInfo.dwOSVersionInfoSize = Len(pVersionInfo) If pVersionInfo.dwMajorVersion >= 5 Then Call keybd_event(VK_SNAPSHOT, 1, 0, 0) Else Call keybd_event(VK_MENU, 0, 0, 0) Call keybd_event(VK_SNAPSHOT, 0, 0, 0) Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0) Call keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0) End If End Sub
868 名前:入院中の側近 ◆0351148456 [2008/03/01(土) 08:36:24 ] (っ´▽`)っ >>866-867 はPrintScreenするマクロだよ。 あとは任せた☆(っ´▽`)ノシ
869 名前:デフォルトの名無しさん [2008/03/01(土) 08:41:50 ] 割り込みで申し訳ないですが、パラレルポート制御を 考えているんですが、VBIOSCMみたいなDLLってVista対応版は ありますか? その他でパラレル制御の方法はありますか? 是非ご教授願います。
870 名前:デフォルトの名無しさん [2008/03/01(土) 10:07:39 ] PC内のフォルダおよびファイルを全て エクセルシートに書き出したい。 DIR関数でやってみたけど、 フォルダを見つけたら階層を掘って、掘り尽くしたら戻って… て処理が上手く行かない。 ご協力頼んます
871 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:10:05 ] (っ´▽`)っ はプロかな?凄いな
872 名前:入院中の側近 ◆0351148456 [2008/03/01(土) 10:21:41 ] >>870 (っ´▽`)っ ヒント:再帰
873 名前:入院中の側近 ◆0351148456 [2008/03/01(土) 10:28:33 ] >>870 (っ´▽`)っ こういう関数を作る。 引数:フォルダ 処理 ・引数のフォルダの情報をワークシートに書き出す。 ・フォルダ内の全てのファイルの情報をワークシートに書き出す。 ・フォルダ内の全てのサブフォルダに対し、それを引数として当関数を呼び出す。 (っ´▽`)っ ちなみにエラーをキャッチしておかないと、 参照不可のフォルダ、ファイルのところで処理が止まるよ。 ファイル、フォルダに関してはScripting.FileSystemObjectを使うといい。
874 名前:870 mailto:sage [2008/03/01(土) 11:16:18 ] >(っ´▽`)っ ありがとう。やってみます。
875 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:25:08 ] なんだ、ファイルを全て書き出したいと言うから中身を書き出したいのかと思ったぜ。 単にファイル名を書き出したいだけなんだな。
876 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 21:36:05 ] FSOに慣れておくとASPにもVBSにも使えるからオトクです(^ω^)
877 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:32:26 ] >>870 ttp://www.atmarkit.co.jp/fwin2k/win2ktips/310filelist/filelist.html
878 名前:デフォルトの名無しさん [2008/03/02(日) 23:54:52 ] 物凄く基本的な事で申し訳ないのですが・・・、処理待ちでスリープを掛けたく、 WScript.sleep (250) と記述していますが、エラー424 オブジェクトが必要です というエラーが出るのです。 何か参照設定が足りないんでしょうか。。
879 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:56:42 ] ググれよ・・・
880 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 00:01:10 ] >>878 WScript.exeを参照設定しろー
881 名前:デフォルトの名無しさん [2008/03/03(月) 00:45:53 ] >>880 ありがとうございます。 WScript.exeを参照し、Windows Script Host(Ver5.6)を参照設定に加えたのですが やはり同じエラー出ました。 参照の問題では無さそうなので、設定も含めた他の部分をもう一度見直して見ます。 >>879 当然質問前に検索したのですが、WScriptの参照設定について記述されたページが見つからなかったもので・・・。 すみませんでした。
882 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:15:50 ] Win32 APIのSleep関数を使えばいいじゃない。
883 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:22:50 ] >>878 それって、Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)じゃいけないの?
884 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 10:54:00 ] 自分が過去に作ったソースをよく探すんですけど、 Excelファイルが散在してるし、開いてからAlt+F11を押す手間とか効率悪いです。 GoogleDesktopSearch用Excel VBAプラグインってないもんですかね?
885 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:52:08 ] 別にプラグインじゃなくてもブックファイルからVBAを抽出するだけでもよさそうな。 まぁ、そういうものがあるかどうかって話になるけど。
886 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:59:12 ] >>885 VBAのコードは、マクロでファイルにexportできるから、作ろうと思えば比較的簡単に作れる。 ただし、そのexportしたものがGDSでIndexingされるかどうかは、別の話。
887 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:43:25 ] こう? officetanaka.net/excel/vba/vbe/index.htm 保存するとき拡張子に.txtを追加してあげればいいよね。 とりあえず何とかなりそうな気がする。どもども。
888 名前:できたよん mailto:sage [2008/03/03(月) 18:53:27 ] VBAソースをいっぺんに吐き出すマクロ(Excel2003) 準備 ・A列にファイルリストを作る 参考:ttp://www.vbalab.net/vbaqa/data/excel/log/tree_199.htm ・ツール→マクロ→セキュリティ→信頼できる発行元 のVBプロジェクトへのアクセスを信頼するをON ext(1) = ".bas": ext(2) = ".cls": ext(3) = ".frm" Set xl = CreateObject("Excel.application") xl.Application.Visible = True xl.AutomationSecurity = msoAutomationSecurityForceDisable 'マクロ無効 For i = 1 To 9999 bookName = Cell(i, 1) If bookName = "" Then Exit For Set bk = xl.Workbooks.Open(bookName, False, True) With bk.VBProject.VBComponents For j = 1 To .Count If .Item(j).Type <= 3 Then _ .Item(j).Export bookName & "_" & .Item(j).Name & ext(.Item(j).Type) & ".txt" Next End With bk.Close SaveChanges:=False Next
889 名前:デフォルトの名無しさん [2008/03/04(火) 12:34:14 ] すいません。KILLの使い方が分かりません。 たとえば、BOOK1のファイルごと、削除したいのですが どうゆうコードで書いたらいいのですか?
890 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 12:41:43 ] killはファイルを消すときに使う
891 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 13:15:20 ] kill "your.xls"
892 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 16:57:42 ] Kill "BOOK1.*"