Можно ли разместить веб-сервер в VBA? - PullRequest
11 голосов
/ 23 июня 2011

Я хочу разместить веб-сервер и хочу использовать VBA для этого. Это возможно? Я просто делаю это, чтобы доказать, что кто-то неправ, и действительно хочу сделать эту программу.

Так можно ли сделать действительно простой веб-сервер (просто прислушивается к запросам на получение)? Помощь будет очень ценится.

РЕДАКТИРОВАТЬ

Я пытаюсь что-то вроде этого

Sub startServer()
    Set wunsock = CreateObject("OSWINSCK.Winsock")
    wunsock.LocalPort = 80
    wunsock.Listen
End Sub

Sub wunsock_ConnectionRequest(ByVal requestID As Long)
    If sockMain.State <> sckClosed Then
        sockMain.Close
    End If
    sockMain.Accept requestID
End Sub

Private Sub wunsock_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String
    sockMain.GetData strData, vbString
    txtStatus.Text = txtStatus.Text & _
        strData & vbCrLf
End Sub

Однако это не работает?

Ответы [ 5 ]

4 голосов
/ 23 июня 2011

http://www.ostrosoft.com/oswinsck.asp#inst

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

Я приветствую ваше упорство, надеюсь, что это сработает для вас.

2 голосов
/ 28 июля 2018

Хотя это довольно старый вопрос, я все же хотел бы упомянуть, что я создал веб-сервер REST, размещенный в Excel, используя простые макросы VBA и некоторые вызовы Winsock C, как предложено Дэниелом А. Уайтом.Я добавил это как ответ вместо комментария, так как он построен как модульная библиотека, так что вы можете настроить его в соответствии со своими потребностями, а другим может понадобиться именно такая библиотека.Он может обслуживать как рабочие листы, так и основные файлы, а также создавать пользовательские хуки, используя IWebController для прослушивания определенных маршрутов (что было упомянуто OP в комментарии):

http://github.com/michaelneu/webxcel

Toиспользуйте его, вам придется либо импортировать классы / модули в вашу книгу, либо позволить сценарию сборки создать новый для вас.См. Main.bas о том, как запустить сервер из VBA.

1 голос
/ 23 июня 2011

Что ж, рискуя нарушить дух вопроса, вы всегда можете использовать поддержку VB для библиотечных функций и просто создать привязку библиотеки к одному из нескольких параметров веб-сервера на языке C (например, *). 1002 * http://www.gnu.org/software/libmicrohttpd/ или http://code.google.com/p/mongoose/). Вам придется создавать библиотеки DLL на выбранном веб-сервере, но это достаточно просто, и в VBA это будет прекрасно работать.

1 голос
/ 23 июня 2011

Я не уверен, что полностью понимаю вопрос. Как правило, вы не «размещаете веб-сервер», а размещаете веб-сайт.

Но если вы можете создавать TCP-сокеты с VBA, то вы можете сделать невероятно простой веб-сервер, следуя стандартному протоколу HTTP.

Редактировать : на основе вашего комментария, да, вы можете сделать простой веб-сервер, если вы можете открыть сокет TCP.

0 голосов
/ 10 марта 2018

Сколько VBA вам нужно? Эти видеоролики демонстрируют надстройку C #, используемую для обслуживания статических файлов и для пересылки запросов REST в код VBA с помощью Application.Run

...