Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Разные версии офиса и системы / 20 сообщений из 20, страница 1 из 1
18.02.2014, 12:54
    #38564330
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
Скажите пожалуйста, мне нобходима написать программу на VB.Net для обработки Excel файлов.
У меня стоит 2010 офис , но по тз возможно использование 2007 и 2010 .У себя в проекте я подключила библиотеку
Microsoft Excel 14.0 Object Library - это 2010....а как быть если у пользователябудет стоять офис 2007??? можноли подключить сразу 2 библеотеки??? не будет ли возникать конфликта имен или достаточно только подключить библеотеку 2007
Еще хотелось бы уточнить если проект писался на 32-ой разрядной системе, будет ли Exe запускаться если процессор будет 64 у пользователя?
...
Рейтинг: 0 / 0
19.02.2014, 01:14
    #38565343
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
tasha klemer,

Зависит от того, как Excel будет использоваться. Microsoft не рекомендует Office Automation , если речь о нем, для этого есть Open XML SDK , впрочем отлично подходит и для всего остального. Если дело в коде VBA, то есть Conditional Compilation с примерами тут и тут . У объекта Excel.Application есть свойство Version. Битность системы можно узнать, например, вот так . Код .NET, не связанный с Interop, должен работать независимо от битности, если выбрать компиляцию Any CPU.
...
Рейтинг: 0 / 0
19.02.2014, 13:05
    #38565944
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
Соглашусь, Interop не очень дружит с разными версиями. Да и "обработка файлов" звучит совсем размыто. Если это что-то вроде надстройки COM к Excel - то лучше сразу поискать в инете NetOffice и делать связь через его библиотеки - так не будете зависеть от конкретной версии Excel под Interop.
Если же надо открывать файлы и что-то делать внутри - то iMrTidy уже дал ответ на данный счет. Правда, там насколько мне известно можно обрабатывать только файлы 2007 и старше, построенные на схемах XML и имеющих открытый доступ к схемам. Для формата .xls такой подход уже не подойдет.
...
Рейтинг: 0 / 0
24.02.2014, 08:35
    #38570054
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
проблемму устранила следующим образом.
В коде было обращение к листам по именам , например
Sheets("Dic_Worker")Я заемнила все обрашения к листам с поименованных на индексные
Sheets(1) и ошибка исчезла.

Спасибо за помощь. Информацию возьму на вооружение.
...
Рейтинг: 0 / 0
24.02.2014, 12:37
    #38570322
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
tasha klemer,

Какое-то странное решение описанной проблемы. Обращение к листам одинаково во всех версиях. Хоть по именам, хоть по индексам. На совместимость это не влияет.
Вывод: ошибка была не в версиях, а в неверном синтаксисе обращения к свойствам объекта.
...
Рейтинг: 0 / 0
25.02.2014, 01:04
    #38571040
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
tasha klemer,

Надеюсь пользователи знают, что менять местами листы нельзя.
...
Рейтинг: 0 / 0
25.02.2014, 07:55
    #38571130
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
Думаю проблема была в том, что в каком-то из имен использовались знаки -() или пробел. Обращение по имени предпочтительнее, возможная вставка/удаление/перемещение листов тогда не повлияет на работу.
...
Рейтинг: 0 / 0
25.02.2014, 08:06
    #38571138
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
Пользователи изменять порядок листов не смогут. На счет пробелов в именах имен- их точно не было , из знаков были только "нижнее подчеркивание", а на счет "...неверном синтаксисе обращения к свойствам объекта..." -
было
Код: vbnet
1.
ExWS_Dic = ExWB_Dic.Sheets("Dic_Worker")


стало
Код: vbnet
1.
ExWS_Dic = ExWB_Dic.Sheets(1)

...что тут может быть не верного.... Вообщем данная проблема решилась подобным образом.
Спасибо.
...
Рейтинг: 0 / 0
25.02.2014, 10:24
    #38571253
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
дык, чему равно ExWB_Dic.Sheets(1).Name?
...
Рейтинг: 0 / 0
25.02.2014, 15:17
    #38571724
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
tasha klemer
Код: vbnet
1.
ExWS_Dic = ExWB_Dic.Sheets("Dic_Worker")

...что тут может быть не верного...
Тут может быть "о" не английская, а русская. И "с" тоже. А имя листа как раз по-английски. Или наоборот. Или пробел на конце/вначале у реального листа. В любом случае ошибка была именно в имени листа, а никак не в самом факте обращения к нему по имени.
...
Рейтинг: 0 / 0
25.02.2014, 15:43
    #38571774
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
вот например
...
Рейтинг: 0 / 0
25.02.2014, 15:56
    #38571802
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
tasha klemerвот напримера причем тут этот пример?

переименуйте ваш лист в "W" и попытайтесь к нему обратиться по имени.
...
Рейтинг: 0 / 0
26.02.2014, 08:52
    #38572414
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
переименовала лист 2 в "W"
вар.1) как написано в справке MSDN
http://msdn.microsoft.com/en-us/library/office/bb211416(v=office.12).aspx
You can use the Sheets property to return a worksheet, chart, module, or dialog sheet; the Sheets collection contains all of these. The following example activates the sheet named "Chart1" in the active workbook.

Sub ActivateChart()
Sheets("Chart1").Activate
End Sub


У себя пишу
Код: vbnet
1.
ExWS_Dic = ExWB_Dic.Sheets("W")



выдает ошибку см. рис.

изменила на
Код: vbnet
1.
ExWS_Dic = ExWB_Dic.Sheets.item("W")


Ошибка та же!

на окне ошибки написано что по умолчанию используется get_Defаult(ObjectIndex) .... значит все таки правильное обращение по индексу?
либо для обращения по имени нужно использовать другое свойство... тогда какое?
в моем случае вариант с обращением о индексу меня устраивает.
...
Рейтинг: 0 / 0
26.02.2014, 10:59
    #38572569
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
tasha klemer,

index хоть и используется по умолчанию, но есть же перегрузки метода, верно? Среди которых и та, что принимает имя листа.
Вы упорно не хотите читать того, что Вам пишут: сверьте посимвольно реальное имя листа и то имя, которое указываете для обращения к листу. Уверен, где-то расхождение.
...
Рейтинг: 0 / 0
26.02.2014, 11:40
    #38572652
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
я внимательно прочитала все что мне написали, и в обрашение
Код: vbnet
1.
ExWS_Dic = ExWB_Dic.Sheets("W")


"W" что на в имя листа, что в код вставляла через копировнаие. в имени листа проверила наличие пробелов
...
Рейтинг: 0 / 0
26.02.2014, 20:26
    #38573495
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
tasha klemer,

Возможно ошибка в другом месте. Если протестировать вот так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Imports Excel = Microsoft.Office.Interop.Excel

Module Module1

    Sub Main()
        Dim myXl As Excel.Application
        Dim ws As Excel.Worksheet

        myXl = New Excel.Application
        myXl.Visible = True
        myXl.Workbooks.Open("C:\temp\test.xlsx")

        ws = myXl.Sheets("W")

        Console.WriteLine(ws.Name)

        Console.ReadKey()

    End Sub

End Module

...
Рейтинг: 0 / 0
27.02.2014, 07:21
    #38573713
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
common language runtime, CLR- если я правилно поняла то вы имеете ввиду его, он же должен входить в пакет поставки 3.5. SP1 ??? а раз .NET Framework 3.5 SP1 установлен на ПК пользователя, то тогда и Runtime тоже должен был установиться до нужной версии... или я что -то не правильно понимаю... можно разьяснения
...
Рейтинг: 0 / 0
27.02.2014, 07:22
    #38573716
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
ни в ту ветку отправлила сообщения. извините
...
Рейтинг: 0 / 0
27.02.2014, 07:46
    #38573723
tasha klemer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
iMrTidy, протестировала...все получилось. обращение к листу по имени корректно ...спасибо.

Но если можно , разьясниет пожалуйста
Если при работе с программой возможно использование как 2010 офиса, так и 2007, то какую библеотеку следует подключчать???? 12 или 14???
...
Рейтинг: 0 / 0
28.02.2014, 01:53
    #38574869
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разные версии офиса и системы
tasha klemeriMrTidy, протестировала...все получилось. обращение к листу по имени корректно ...спасибо.

Но если можно , разьясниет пожалуйста
Если при работе с программой возможно использование как 2010 офиса, так и 2007, то какую библеотеку следует подключчать???? 12 или 14???

Более поздняя версия библиотеки, как правило, полностью совместима с предыдущими версиями. В данном случае лучше использовать наиболее последнюю версию, т.е. 15, но пользоваться только тем функционалом, что доступен для 2007 офиса. По-крайней мере так советует Microsoft.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Разные версии офиса и системы / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]