Ресурсы для программиста на Python

Я написал много кода на Python, и из-за этого я очень привык к синтаксису, структуре объектов и так далее.

Какой лучший онлайн-справочник или ресурсный сайт, чтобы предоставить мне основы, а также руководство по сравнению или поиску с эквивалентными функциями / функциями в VBA по сравнению с Python.

Например, у меня возникают проблемы с приравниванием простого списка в Python к коду VBA. У меня также есть проблемы со структурами данных, такими как словари и т. д.

Какие доступны ресурсы или учебные пособия, которые предоставят мне руководство по переносу функциональности Python на VBA или просто по адаптации к синтаксису VBA из сильного языкового фона ООП?

просто любопытно ... зачем вы пытаетесь выучить vba?

Jiaaro 17.09.2008 00:52

Отличный вопрос, и если он чем-то похож на меня, он в конечном итоге становится мастером на все руки в офисе, и ему нужно автоматизировать какую-то ерунду с Excel.

technomalogical 17.01.2013 23:41

Есть множество причин, по которым кто-то захочет изучить новый язык программирования. Многие из них имеют очень разные возможности и функционируют на разных платформах, поэтому имеет смысл знать более одного языка.

trevorKirkby 07.01.2014 03:40
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
21
3
8 982
8

Ответы 8

Это руководство не предназначено для программистов на Python, но я думаю, что это довольно хороший ресурс по vba:

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

Этот сайт рассматривает реальный пример использования списков:

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

Возможно, это не совсем то, что вы ищете, но это достойный сайт VBA, если у вас есть некоторый опыт программирования. Это не список этого = этого, а скорее проблема / решение

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

VBA, как и то, что было реализовано как часть Office 2000, 2003 и VB6, устарели в пользу технологий .Net. Если вы не поддерживаете старый код, придерживайтесь python или, возможно, даже не переходите на IronPython для .Net. Если вы используете IronPython, вам, возможно, придется писать несколько вспомогательных классов C# / VB.Net здесь и там при работе с различными COM-объектами, такими как объекты в Office, но в остальном он должен быть довольно функциональным и приятным. В IronPython почти все совершенства Python закончились. Если вы просто пишете сценарии COM, посмотрите, что выдает ActiveState. Я использовал его в прошлом для работы с COM. В частности, с использованием Python в качестве языка активных сценариев (классический ASP).

Я согласен с предложением IronPython.

Cristian Ciupitu 17.09.2008 19:16

Возможно, устарело. Но он по-прежнему доступен в Office 2007 и 2010.

James 29.06.2010 02:06

Как сказал Джеймс, VBA по-прежнему является основным языком автоматизации в Office 2010. Я не могу найти информации об обратном, что это изменится в следующем выпуске Office.

technomalogical 17.01.2013 23:44

Это также единственная кросс-платформа для создания офисных документов со сценариями ... Например, невозможно встроить Python в Office для Mac.

oligofren 09.02.2014 14:05

"I'm having trouble equating a simple List in Python with something in VBA..."

Это не лучший способ выучить язык. В некотором смысле вы отказываетесь от больших частей Python, потому что в VBA нет ничего подобного.

Если в VBA нет ничего лучше списка Python, то ... ну, это что-то новое. И новое было бы значительной ценностью в некоторых частях Python.

Первые части Python Встроенные типы могут не соответствовать VBA. Из-за этого обучение кажется пугающим. Но ограничение себя только вещами, которые появляются в VBA, как правило, мешает обучению.

Я думаю, что эквивалентом списков были бы массивы с точки зрения общего использования. Если в 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

VBA сильно отличается от Python, поэтому вам следует прочитать хотя бы «Справку по Microsoft Visual Basic», предоставляемую приложением, которое вы собираетесь использовать (Excel, Access…).

Вообще говоря, VBA имеет эквивалент модулей Python; они называются «библиотеками», и их не так просто создать, как модули Python. Я упоминаю о них, потому что библиотеки предоставят вам типы более высокого уровня, которые вы можете использовать.

В качестве толчка при запуске есть два типа, которые можно заменить на list и dict.

list

VBA имеет тип Collection. Он доступен по умолчанию (находится в библиотеке VBA). Так что просто сделайте a
dim alist as New Collection
и с этого момента вы можете использовать его методы / свойства:

  • .Add(item) (list.append (элемент)),
  • .Count (len (список)),
  • .Item(i) (список [i]) и
  • .Remove(i) (список [i]). Очень примитивно, но оно есть.

Вы также можете использовать тип VBA Array, который, как и массивы 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 ()),
    и другие, которые вы найдете в Object Browser².

¹ Откройте редактор VBA (Alt + F11). Перейдите в Инструменты → Ссылки и отметьте в списке «Microsoft Scripting Runtime».

² Чтобы увидеть обозреватель объектов, в редакторе VBA нажмите F2 (или «Просмотр» → «Обозреватель объектов»).

К сожалению, «Справка по Microsoft Visual Basic» недоступна в Office 2011 для Mac ...

oligofren 09.02.2014 14:00

похоже, что VBA Array больше похож на кортежи Python.

Capi Etheriel 13.09.2014 04:04

Α VBA Array больше похож на array.array, потому что он изменяемый; Кортежи python неизменяемы. Неизменяемость - главное отличие моей книги.

tzot 13.09.2014 19:40

Это может показаться странным, но, поскольку я изучил структуры данных на C++, мне было очень трудно понять, как их создавать без указателей. В VB6 / VBA есть что-то, что заставляет меня чувствовать их неестественно. Во всяком случае, я наткнулся на этот раздел MSDN, в котором есть несколько примеров структур данных, написанных на VBA. Я нашел это полезным.

Создание динамических структур данных с использованием модулей классов

Хотя я не программист на Python, вы можете запустить VSTO с помощью Iron Python и Visual Studio. По крайней мере, так вам не придется изучать синтаксис VBA.

Другие вопросы по теме