ここから本文です

ビジュアルベーシックについてです。

清水亮一さん

2018/10/710:45:39

ビジュアルベーシックについてです。

これは、旧ベーシックのように変数をつぎつぎ作れますか?
また、出来るとしたら、ビジュアルベーシックで作った変数をエクセルのコマに代入出来ますか?
更にまた、エクセルの計算された数字は、ビジュアルベーシックに返せますか?

補足(エクセルは、走らないのでビジュアルベーシックを購入したら走るのでしょうか?)

閲覧数:
88
回答数:
2

違反報告

ベストアンサーに選ばれた回答

Prometheusさん

2018/10/713:00:26

意味が分からないのですが、「Visual Basic」の一種である「VBScript」(=「Microsoft Visual Basic Scripting Edition」の略)による回答です。

「VBScript」は、「Windows」パソコンであれば、メモ帳だけで記述でき、実行することが出来ます(新たに何か購入したりダウンロードしたりする必要はありません)。

今回紹介するプログラムは、「エクセル」をお持ちでなければ、動きません。

以下のプログラムを、メモ帳かテキストエディタに貼り付け、「~.vbs」という名前で保存します。

「~」の部分は、何でも構いませんが、「.vbs」の部分は、必ず、半角です。

できたプログラムファイル(「~.vbs」ファイル)に、拡張子が「xlsx」のエクセルファイルを1つだけ、ドラッグ&ドロップすると、そのブックのアクティブシートのセル「A1」の値を表示します。

Option Explicit
Dim bk, ex, sh, so, wa
Set so = CreateObject("Scripting.FileSystemObject")
Set wa = WScript.Arguments
If wa.Count <> 1 or LCase(so.GetExtensionName(wa(0))) <> "xlsx" Then
MsgBox("ドラッグ&ドロップできるのは、xlsxファイル1つだけです")
WScript.Quit
End If
Set ex = CreateObject("Excel.Application")
ex.Application.DisplayAlerts = False
ex.Visible = False
Set bk = ex.Workbooks.Open(wa(0))
Set sh = bk.ActiveSheet
MsgBox(sh.Range("A1").Value)
bk.Close
ex.Quit
Set sh = Nothing
Set bk = Nothing
Set ex = Nothing
Set wa = Nothing
Set so = Nothing

簡単な説明ですが、興味が無ければ読んで頂かなくて結構です。

Option Explicit

「厳密に」とか、「明確に」というような意味で、このオプションを設定すると、変数は、その使用の前に、必ず、「Dim」等によって宣言しなければなりません。

Set so = CreateObject("Scripting.FileSystemObject")

「Windows」のファイルやフォルダを扱う機能を読み込んでいます。

この機能の中には、テキストファイルを扱う(読み書きする)機能も含まれています。

Set wa = WScript.Arguments
If wa.Count <> 1 or LCase(so.GetExtensionName(wa(0))) <> "xlsx" Then
MsgBox("ドラッグ&ドロップできるのは、xlsxファイル1つだけです")
WScript.Quit
End If

ドラッグ&ドロップされるのを待っていて、ドラッグ&ドロップされると、その数や拡張子を調べ、想定外なら、メッセージを表示して、プログラムそのものを終了してしまいます。

Set ex = CreateObject("Excel.Application")

エクセルの機能を読み込んでいます。

ex.Application.DisplayAlerts = False

「上書きしますか?」などのメッセージが出ないようにしています。

ex.Visible = False

エクセルを表示しません。

Set bk = ex.Workbooks.Open(wa(0))

ドラッグ&ドロップしたブックを開いています。

Set sh = bk.ActiveSheet

そのブックのアクティブシートを「sh」にセットしています。

MsgBox(sh.Range("A1").Value)

そのシートのセル「A1」の値を表示しています。

bk.Close

ブックを閉じています。

ex.Quit

エクセルそのものを終了しています。

Set sh = Nothing
Set bk = Nothing
Set ex = Nothing
Set wa = Nothing
Set so = Nothing

「Set ~」で使った変数は、その使用後、「Nothing」で解放しておきます。

  • Prometheusさん

    2018/10/713:05:13

    追伸。

    本格的な「Visual Basic」は、「Visual Studio Community 2017」に含まれています(無償)。

    詳しくは、

    https://www.narenohate.com/install-visualstudio2017community

    などを参照してください。

    この「Visual Studio Community」は、無償で提供されていて、なおかつ、開発環境は、お金を出して買う「Visual Studio」と全く同じだそうです(お金を出して買う方の「Visual Studio」には、「ツール」が含まれていて、それが「Community」には、含まれていないだけみたいです)。

    「Visual Basic」に興味がおありでしたら、検討してみてください。

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tac********さん

2018/10/711:05:38

>(エクセルは、走らないのでビジュアルベーシックを購入したら走るのでしょうか?)

エクセルが走らないとはエクセルファイルは在ってもエクセルの本体が無いと言う意味ですか?
VB.NETからエクセルファイルを操作したいと言う意味でしょうか?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる