はじめての親子ハイキングに挑戦!! >>

今後、VBAで開発をしてみたいと考えています(主にExcel)。そこで、皆さんのお力を借りたいのですが、開発に便利なツールをご存じないでしょうか。そのツールの用途は問いません。希望する条件としては、
・表示が日本語(もしくは分かりやすい日本語解説ページがあるか、せめて英語で)
・サポートが続いている
・開発に使用するOFFICEのバージョンを問わない
です。これらの条件を満たしていなくても、便利であればぜひご紹介いただけると嬉しいです。
また、参考までにどんなツールであるか簡単にご説明もつけていただけると幸いです。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

ご期待に沿える回答かどうかはわかりませんが。

。。

バージョン管理につきましては、おそらくVSSやCVS等が利用できるかと思われます。

CVS:http://radiofly.to/nishi/cvs/
VSS:http://www.microsoft.com/japan/msdn/vstudio/prod …

また、作成時の補助ですが秀丸などで若干効率は上がるかもしれません。(使い方次第です。)
    • good
    • 0
この回答へのお礼

遅くなりまして、申し訳ありません。
ご回答いただきまして、ありがとうございました。
ご紹介いただいたサイトなどを参考にし、TortoiseSVNというソフトで試してみようかと思っています。

秀丸も使っているのですが、もっぱらテキスト編集のみですね。
VBEは多少重たくても、何かと機能が豊富なので。
ただ、おっしゃるとおり使い方次第なのでしょうね。

それでは、ありがとうございました。

お礼日時:2006/12/30 13:34

ウォッチウィンドウ(変数の値をみる)とかプロパティウィンドウ(オブジェクトの状態をみる変える)とかコントロールツールボックス(ボタンをつける)のことでしょうか。

この回答への補足

投稿いただきましたのに、ご連絡が遅れまして申し訳ありません。
考えていたのは、例えばソースコードのバージョン管理(他の方のご回答からすると難しそうですが)。
ソースコードのスペースなどを自動整形。
そういったものを考えています。
ただ、開発が楽になるもしくはソースコードの品質が上がるようなものでしたら、特に問いません。
もしご存知でしたら、よろしくお願いいたします。

補足日時:2006/12/25 16:29
    • good
    • 0

VBA は VBA をサポートしている製品(Word, Excel, Access, PowerPoint, Visio, AutoCAD など)に寄生する感じのテクノロジなので、単体では存在できません。


VBA のソースコードがどこに存在するかというと、Excel 用 VBA のコードなら Excel のデータファイルの中。Access VBA のコードなら Access のデータファイルの中です。
まず最初に Office 製品などのデータファイルがある。
さらにこいつに自動実行の処理などを付けたい場合は、そのデータファイルを開いて VBA のコードを作成する。
だから VBA コードが単体で存在することはありません。
したがって Office で VBA の開発をするには Office 製品が必要。

バージョンの件ですが、開発した物の実行環境にある Office のバージョンが多岐にわたる場合は、一番古いバージョンの Office で開発をします。
VBA の開発ツールは同時に実行ツールでもあるので、Excel 97 用の VBA 開発を行うためには Excel 97 が必要。
ただしそれで開発したものは上位互換により、Excel 2000, 2002, 2003, 2007 でも動作する可能性があります。
私が開発するケースでは最近のターゲットは Office XP(2002), 2003 ですね。ようやく 97 や 2000 がお客様の環境から消えてくれました。

もし手元に最新の Office しかない場合は、仕方ないのでそれで開発を行い、最後に(お客様などの)古い Office 上で開き、「参照設定」の情報を修正してからリリースしています。
まぁ古い Office に存在しない機能を使っていなければ大体は動きます。

サポートが続いている件
VBA のサポートは、それをホストする製品のサポートに準じます。
つまり Excel 97 用 VBA のサポートは、マイクロソフトが Excel 97 のサポートを切れば同時に消えます。
何しろ独立して世に出ているテクノロジではなく、宿主のアプリケーションに寄生するテクノロジですので、宿主が死ねば一緒に死ぬような感じです。

この回答への補足

すいません、やっぱり質問の書き方がまずかったですね・・・。申し訳ないです。
質問の中で書いた条件はツールに対してのものです。ここでのツールとは、開発ツールというよりは、それを補助するものという意味です。

ご回答を拝見して感じたのですが、VBAコードが単体で存在しない以上、補助するツールといってもなかなか難しいのでしょうか。
ソースコードがテキスト形式などで保存されていればまだ扱える気がしますが、データファイル内では基本的にOffice以外では扱えないでしょうし。

それでも、ご回答はとてもためになりました。
意図していたものとは違いましたが、知っておきたい事項でしたし、とても参考になりました。
もし、開発を補助するツールという意味でご存知のものがありましたら、ぜひ教えてください。
よろしくお願いいたします。

補足日時:2006/12/22 13:29
    • good
    • 0

VBA自体が開発ツールだと思うのですが、、、違いますかねぇ?

この回答への補足

すいません、説明が悪かったでしょうか。
開発ツールではなく、開発を援助するツールという意味です。
例えば、ソースコードの履歴を管理するようなツールということです。
もしご存知でしたら、お願いいたします。

補足日時:2006/12/22 12:19
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QエクセルVBAでテキストボックスの値の取得と変更について

エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。

環境:WindowsXPでオフィス2002
状況:
エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C)
エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい

試した事:
コントロールを配置したシートに次のマクロ
TEXTBOX_C.Text = "これはコントロールのテキストボックス"
を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。

また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

Aベストアンサー

エクセルを新規に開きました。
そのSheet1に(コントロールツールボックスの)TextBoxを貼りつけました。
そのBook1から、ファイル-開くで別ブックを開きました。
別ブックのMojule1側に下記を書いて
Sub test02()
MsgBox Workbooks("book1").Worksheets("sheet1").textbox1.Text
End Sub
を実行すると、Book1のTextBoxに入れた文字列が表示
されました。
がそんな質問ではないのですか。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

QVB上で実行中の無限ループの止め方

今まで、CUIベースのBASICでのプログラムの経験はあるのですが
Visual系のBASICは初心者です。
原因はわかっているのでプログラムの修正はできるのですが
VB上でコンパイルして実行したときに無限ループに陥ってしまって
どうにもプログラムをとめられなくなります。
そんなことがないように、実行前に全てのプロジェクトを保存して
いますので、そんなに実害はないのですが、どうすればとめられるのでしょう・・
今現在は、タスクマネージャーから強制終了させています。

Aベストアンサー

無限ループの一番内側に
DoEvents
を入れておくと、ウィンドウ切替え->デバッガ終了操作が出来ますよ

危なそうなとこにも入れておくと、何かと安心です。

QDir関数で読み取り順を操作できる?

あるフォルダ内のファイルを名前順で読みたいのですが、
読み取り順を操作することは可能ですか?

Aベストアンサー

こんにちは
#1,#2さんのとおりそのままではできないと思います。
私はファイル名で並べ替えるときは、Sorted=Trueにした「リストボックス」にAdditemしていって、取得してからIndex順に読みます。
ファイル名を取得するロジックはサンプルにあったと思います。
ちなみにサイズや更新日順の場合は配列に入れてソートするようにしています。
では!

Q他言語で言うcontinue文

他言語で言うcontinue文に相当する命令はVBに用意されているのでしょうか?

continue文とはループ中の後続の処理をやめループの先頭に戻るという命令です。

なんか探したけど無かったもので…。どんな言語にも用意されてそうな基本的な命令なので質問してみました。

バージョンは
Winエクセル2002 SP3
VBA Retail:6.4.8869, Version:9969
です。基本エンジンはVB6です。

よろしくお願いします。

Aベストアンサー

> continue文の解説でも、貴方のご指摘の動作(ループの先頭に戻る)はしているようには思えません。

ループの最後へジャンプという感じですね。
VBなら、Nextへ飛ばすのと同じです。

For i = 1 To 5
    If i = 3 Then goto Next_i
    Debug.Print i
Next_i:
Next i


人気Q&Aランキング