21

私は Python で多くのコードを書いてきました。そのおかげで、Python の構文、オブジェクト構造などに非常に慣れています。

VBA と Python の同等の機能/機能を備えた比較ガイドまたはルックアップ ガイドだけでなく、基本を提供するのに最適なオンライン ガイドまたはリソース サイトは何ですか。

たとえば、Python の単純なリストを VBA コードと同一視するのに問題があります。辞書などのデータ構造にも問題があります。

Python 機能を VBA に移植するためのガイド、または強力な OOP 言語のバックグラウンドから VBA 構文に適応するためのガイドを提供してくれるリソースやチュートリアルは何ですか?

4

8 に答える 8

25

VBA は Python とはまったく異なるため、少なくとも、使用するアプリケーション (Excel、Access など) が提供する「Microsoft Visual Basic ヘルプ」を読む必要があります。

一般的に言えば、VBA には Python モジュールと同等のものがあります。それらは「ライブラリ」と呼ばれ、Python モジュールほど簡単に作成できません。ライブラリは、使用できる高レベルの型を提供するため、それらについて言及します。

起動ナッジとして、 と で代用できる2種類がlistありdictます。

list

VBA の型はCollectionです。デフォルトで利用可能です (ライブラリにありますVBA)。したがって
dim alist as New Collection
、それ以降は、そのメソッド/プロパティを使用できます。

  • .Add(item)( list.append(item) )、
  • .Count( len(リスト) ),
  • .Item(i)( list[i] ) および
  • .Remove(i)( del list[i] )。非常に原始的ですが、そこにあります。

VBA 配列型を使用することもできます。Python 配列と同様に、同じ型の項目のリストであり、Python 配列とは異なりReDim、サイズを変更する必要があります (つまり、項目を追加したり削除したりすることはできません)。

dict

辞書のようなオブジェクトを作成するには、スクリプト ライブラリを VBA プロジェクト¹ に追加する必要があります。その後、
Dim adict As New Dictionary
そのプロパティ/メソッドを使用できます。

  • .Add(key, item)( dict[キー] = 項目 ),
  • .Exists(key)( dict.has_key[キー] )、
  • .Items()( dict.values() )、
  • .Keys()( dict.keys() )
    など、オブジェクト ブラウザー² で見つけることができます。

¹ VBA エディターを開きます (Alt+F11)。[ツール] → [参照] に移動し、一覧で [Microsoft Scripting Runtime] を確認します。

² オブジェクト ブラウザを表示するには、VBA エディタで F2 キーを押します (または [表示] → [オブジェクト ブラウザ])。

于 2008-10-09T09:52:30.017 に答える
2

おそらくあなたが探しているものとは正確には一致しませんが、プログラミングのバックグラウンドがあれば、これはまともなVBAサイトです。これはリストではありません=それではなく、より多くの問題/解決策

http://www.mvps.org/access/toc.htm

于 2008-09-16T20:57:01.920 に答える
2

Office 2000、2003、およびVB6の一部として実装されたVBAは廃止され、.Netテクノロジが採用されました。古いコードを維持している場合を除いて、Pythonに固執するか、IronPythonfor.Netを使用することもできます。IronPythonを使用する場合、OfficeなどのさまざまなCOMオブジェクトを操作するときに、C#/ VB.Netヘルパークラスをあちこちに作成する必要があるかもしれませんが、それ以外の場合は、かなり機能的で優れているはずです。Pythonの良さのほぼすべてがIronPythonで終わりました。COMスクリプトを実行しているだけの場合は、ActiveStateが出力する内容を確認してください。私は過去にいくつかのCOM作業を行うためにそれを使用しました。特にPythonをアクティブスクリプト言語(クラシックASP)として使用します。

于 2008-09-16T20:57:22.010 に答える
2

このチュートリアルは「Python プログラマー向け」ではありませんが、非常に優れた vba リソースだと思います。

http://www.vbtutor.net/VBA/vba_tutorial.html

このサイトでは、リストを使用した実際の例について説明しています。

http://www.ozgrid.com/VBA/count-of-list.htm

于 2008-09-16T20:54:10.660 に答える
2

私は Python プログラマーではありませんが、Iron Python と Visual Studio で VSTO を実行できるかもしれません。少なくとも、VBA 構文を学ぶ必要はありません。

于 2008-10-09T21:36:01.017 に答える
1

一般的な使用法では、リストに相当するものは配列になると思います。Python ではリストを使用するのが一般的ですが、VB では通常配列を使用します。ただし、VB の配列は Python のリストに比べて非常に柔軟性がなく、C の配列に似ています。

' An array with 3 elements
'' The number inside the brackets represents the upper bound index
'' ie. the last index you can access
'' So a(2) means you can access a(0), a(1), and a(2) '

Dim a(2) As String
a(0) = "a"
a(1) = "b"
a(2) = "c"

Dim i As Integer
For i = 0 To UBound(a)
    MsgBox a(i)
Next

初期要素数を宣言した場合、VB の配列はサイズ変更できないことに注意してください。

' Declare a "dynamic" array '

Dim a() As Variant

' Set the array size to 3 elements '

ReDim a(2)
a(0) = 1
a(1) = 2

' Set the array size to 2 elements
'' If you dont use Preserve then you will lose
'' the existing data in the array '

ReDim Preserve a(1)

また、VB にはさまざまなコレクションがあります。例えば。http://devguru.com/technologies/vbscript/14045.asp

VB の辞書は次のように作成できます。

Set cars = CreateObject("Scripting.Dictionary")
cars.Add "a", "Alvis"
cars.Add "b", "Buick"
cars.Add "c", "Cadillac" 

http://devguru.com/technologies/vbscript/13992.asp

于 2008-10-08T23:46:32.440 に答える
0

「Python の単純なリストを VBA の何かと同一視するのに問題があります...」

これは言語を学ぶ最良の方法ではありません。ある意味では、VBA にそのようなものがないため、大規模な Python をあきらめていることになります。

VBA に Python リストのようなものがない場合、それは新しいものです。そして、Python の一部では new が重要な価値になります。

Python組み込み型の最初の部分は、VBA に適切にマップされない場合があります。そのため、学習は気が遠くなるように見えます。しかし、VBA に表示されるものだけに限定すると、学習が妨げられる傾向があります。

于 2008-09-17T00:41:57.323 に答える
0

奇妙に聞こえるかもしれませんが、私は C++ でデータ構造を学んだので、ポインターなしでデータ構造を作成する方法を理解するのに非常に苦労しました。VB6/VBA には、不自然に感じさせる何かがあります。とにかく、VBA で書かれたデータ構造の例がいくつかある MSDN のこのセクションに出くわしました。便利だと思いました。

クラス モジュールを使用した動的データ構造の作成

于 2008-10-09T10:15:59.063 に答える