из VB6 в Xls
3991
17
Нуна в програмулинке сделать так: в ВБейсике задал, она поколдовала, чатсь данных выдала, часть запросила исчо и в итоге все свои переменные должна сдить на лист екселя, в котором частично забиты всякие слова и фразы. Вопрос - как этот слив переменных в нужные ячейки осуществить?
Ringo_500
Читайте документацию по VBA встроенную в Excel
Ну или в Сети пошарьте, примеров масса. хотя бы здеся можно глянуть...
aglow
да вот я и прошу на пример нацелить, не можу сам найти. и желательно, чтоб пример был именно для ВижлБесика, т.к. я и его то хреново знаю, во всем остальном вообще плаваю.
Ringo_500
Например, вставим жирную двойку в ячейку А1 первого листа:

Dim objXL As Object
Dim objWb As Object
Dim objWs As Object

Set objXL = CreateObject("Excel.Application")
Set objWb = objXL.Workbooks.Open("c:\MyFile.xls") ' имя своего открываемого файла
Set objWs = objWb.Worksheets(1)

With objWs.cells(1,1)
.Font.Bold = True
.Value = 2
End With

objWb.Close ("SaveChanges:=True")

Set objWs = Nothing
Set objWb = Nothing
Set objXL = Nothing
Сибиряк
ого, сенкис, работает. дальше думаю сам допру
Сибиряк
еще вопрос, распоследний. как имя xls файла запросить в относительных координатах (не с:\..., аневажногде, но в одной папке с бейсиковским файлом)
Ringo_500
VB6-го у меня нет, но судя по манам должно быть как-то так:
На форму кидаем элемент управления "CommonDialog", его имя будет CommonDialog1

Dim objXL As Object
Dim objWb As Object
Dim objWs As Object

Set objXL = CreateObject("Excel.Application")
CommonDialog1.InitDir = "C:\Начальный каталог"
CommonDialog1.ShowOpen

Set objWb = objXL.Workbooks.Open(CommonDialog1.FileName)
Set objWs = objWb.Worksheets(1)

With objWs.cells(1,1)
.Font.Bold = True
.Value = 2
End With

objWb.Close ("SaveChanges:=True")

Set objWs = Nothing
Set objWb = Nothing
Set objXL = Nothing


Ну и здесь немного инфы:
http://msdn2.microsoft.com/en-us/library/256tssz7(VS.80).aspx
Сибиряк
Сори, не правильно понял вопрос.
Если файл лежит в одной папке с экзешником, то можно прописать так:

Set objWb = objXL.Workbooks.Open(".\MyFile.xls")
Сибиряк
Уж допристаю, пока везет.
Программка сохраняет в xls без его собссно открытия.
а как исчо в коде прописать так, чтоб файл xls изменился, открылся и не закрывался.
Ringo_500
Попробуйте закоментировать строку objWb.Close ("SaveChanges:=True")
Сибиряк
при этом он спрашивает разрешение на сохранение, а сам лист не открывает, а надо, чтоб открыл и внес, а сохраню я сам
Ringo_500
А если убрать

objWb.Close ("SaveChanges:=True")

и сделать так:


objXL.DisplayAlerts = False
objXL.Visible = True

Set objWs = Nothing
Set objWb = Nothing
objXL.DisplayAlerts = True
Set objXL = Nothing


Сработает?
Сибиряк
плакаю:хммм:
ввожу (" . \ file.xls"), а он пишет, что ошибка. Абсолютные координаты понимает, а относительные нет. Мож не правильно ввожу?
Ringo_500
Прям вот так вот, с пробелами?
Сибиряк
не, это я тут для наглядности. Пишу в коде без пробелов: (".\file.xls")
Ringo_500
Set objWb = objXL.Workbooks.Open( App.Path+ "\MyFile.xls")

Только учтите, что при вызове непосредственно из VB App.Path вернет каталог самого VB. Сначала компилите проект и при запуске exe она вернет уже каталог, где лежит exe-шник...
aglow
подскажьте плизещё. Делаю обратную операцию. ВВожу следующее:
Option Explicit
Dim objXL As Object
Dim objWB As Object
Dim objWS As Object
Dim orn(1 To 500) As String
Dim orc(1 To 500) As Single
Dim orr(1 To 500) As Byte
Dim i As Integer

Private Sub Form_Load()
Set objXL = CreateObject("Excel.Application")
Set objWB = objXL.Workbooks.Open(App.Path + "\list.xls")
Set objWS = objWB.Worksheets(1)

For i = 1 To 500
orn(i) = objWS.cells(1, i + 3)
Next i

Tdata.Text = orn(3)

Set objWS = Nothing
Set objWB = Nothing
Set objXL = Nothing

End Sub

Имею в виду, что элементы строкового массива orn равняются словам из первого столбца файла list.xls . В чем ошибка?
Ringo_500
Ура, сам нашел. :улыб:
Все-равно сенкс.