Вверх ↑
Этот топик читают: Гость
Ответов: 521
Рейтинг: 166
#31: 2025-03-08 20:55:46 ЛС | профиль | цитата
Gunta писал(а):
А так у вас работает?

ошибка- 1003
Gunta, а через powershell можно как-то узнать, что там подключено, что нет, что зарегистрировано? для данной задачи.

Редактировалось 1 раз(а), последний 2025-03-08 21:05:47
карма: 4

0
Ответов: 869
Рейтинг: 186
#32: 2025-03-08 21:18:48 ЛС | профиль | цитата
tig-rrr, Попробуй скачать 32 битную версию драйвера и установить.
https://learn.microsoft.com/ru-ru/office/troubleshoot/access/jet-odbc-driver-available-32-bit-version
https://www.microsoft.com/en-us/download/details.aspx?id=54920
карма: 18

0
Разработчик
Ответов: 26230
Рейтинг: 2140
#33: 2025-03-08 21:25:52 ЛС | профиль | цитата
Gunta писал(а):
А так у вас работает?

Вот эта схема у меня работает, но это не OLE источник данных, а ODBC
карма: 22

0
Ответов: 869
Рейтинг: 186
#34: 2025-03-08 21:36:20 ЛС | профиль | цитата
nesco писал(а):
но это не OLE источник данных, а ODBC

Почему-то OLEDB не переваривает результат с NULL. Если сделать запрос только заполненных ячеек, то ошибки не будет.

--- Добавлено в 2025-03-08 21:43:19

tig-rrr писал(а):
а через powershell можно как-то узнать, что там подключено, что нет, что зарегистрировано? для данной задачи.

Get-OdbcDriver
Или
Get-OdbcDriver -Platform 32-bit | Out-GridView

Редактировалось 4 раз(а), последний 2025-03-08 21:51:13
карма: 18

0
Ответов: 521
Рейтинг: 166
#35: 2025-03-08 22:12:35 ЛС | профиль | цитата
Gunta писал(а):
Попробуй скачать 32 битную версию драйвера и установить.


Get-OdbcDriver

PS C:\Users\PLC> Get-OdbcDriver

Name : Driver da Microsoft para arquivos texto (*.txt; *.csv)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Driver do Microsoft Access (*.mdb)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Driver do Microsoft dBase (*.dbf)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Driver do Microsoft Excel(*.xls)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Driver do Microsoft Paradox (*.db )
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Microsoft Access Driver (*.mdb)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Microsoft Access-Treiber (*.mdb)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Microsoft dBase Driver (*.dbf)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Microsoft dBase-Treiber (*.dbf)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Microsoft Excel Driver (*.xls)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Microsoft Excel-Treiber (*.xls)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Microsoft ODBC for Oracle
Platform : 32-bit
Attribute : {APILevel, FileUsage, Driver, ConnectFunctions...}

Name : Microsoft Paradox Driver (*.db )
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Microsoft Paradox-Treiber (*.db )
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Microsoft Text Driver (*.txt; *.csv)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : Microsoft Text-Treiber (*.txt; *.csv)
Platform : 32-bit
Attribute : {APILevel, DriverODBCVer, FileUsage, Driver...}

Name : SQL Server
Platform : 32-bit
Attribute : {APILevel, FileUsage, Driver, ConnectFunctions...}

Name : Microsoft Visual FoxPro Driver
Platform : 32-bit
Attribute : {Driver, APILevel, FileExtns, FileUsage...}

Name : Microsoft Visual FoxPro-Treiber
Platform : 32-bit
Attribute : {Driver, APILevel, FileExtns, FileUsage...}

Name : Driver para o Microsoft Visual FoxPro
Platform : 32-bit
Attribute : {Driver, APILevel, FileExtns, FileUsage...}

Name : Microsoft FoxPro VFP Driver (*.dbf)
Platform : 32-bit
Attribute : {Driver, APILevel, FileExtns, FileUsage...}

Name : SQL Server
Platform : 64-bit
Attribute : {APILevel, FileUsage, Driver, ConnectFunctions...}

Name : Microsoft Access Driver (*.mdb, *.accdb)
Platform : 64-bit
Attribute : {Driver, APILevel, FileExtns, FileUsage...}

Name : Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
Platform : 64-bit
Attribute : {Driver, APILevel, FileExtns, FileUsage...}

Name : Microsoft Access Text Driver (*.txt, *.csv)
Platform : 64-bit
Attribute : {Driver, APILevel, FileExtns, FileUsage...}

Name : Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)
Platform : 64-bit
Attribute : {Driver, APILevel, FileExtns, FileUsage...}
карма: 4

0
Ответов: 869
Рейтинг: 186
#36: 2025-03-08 22:25:03 ЛС | профиль | цитата
tig-rrr, Теперь понятно. Открой Excel-евский файл и сохрани его в формате - .XLS
и попробуй схему из этого поста https://forum.hiasm.com/post/314803
карма: 18

0
Ответов: 521
Рейтинг: 166
#37: 2025-03-08 22:36:17 ЛС | профиль | цитата
Gunta писал(а):
Открой Excel-евский файл и сохрани его в формате - .XLS

карма: 4

0
Ответов: 869
Рейтинг: 186
#38: 2025-03-08 22:41:01 ЛС | профиль | цитата
tig-rrr,
Add(Label,9698110,399,133)
{
Width=476
Height=45
Align=2
Caption=""
AutoSize=1
}
Add(MainForm,3171043,203,210)
{
Left=20
Top=105
Width=492
Height=273
Caption="Excel в XML"
Position=1
link(onCreate,10550167:doEvent1,[])
}
Add(Button,941652,203,259)
{
Left=310
Top=10
Width=95
Caption="Конвертировать"
link(onClick,10550167:doEvent2,[(242,265)(242,237)])
}
Add(Edit,11108326,357,224)
{
Left=10
Top=10
Width=295
Text=""
link(onChange,15044656:doPart,[])
}
Add(ODialog,14109174,301,224)
{
Filter="Excel|*.xls*"
link(onExecute,11108326:doText,[])
}
Add(DS_ODBC,6691432,574,224)
{
Name="asd"
Point(onError)
link(onCreate,4428936:doString,[])
link(onError,16198617:doEvent,[(620,237)(620,286)])
}
Add(DSC_Query,9809447,679,224)
{
DSManager="asd"
link(onQuery,3242928:doAddRow,[])
link(onColumns,3242928:doAddCols,[])
link(onError,11634924:doEvent,[(739,244)(739,300)])
}
Add(FormatStr,4428936,630,224)
{
Mask="SELECT *\r\nFROM [Лист1$]\r\n"
link(onFString,9809447:doQuery,[])
}
Add(Hub,10550167,259,224)
{
InCount=2
link(onEvent1,14109174:doExecute,[])
}
Add(Debug,16198617,630,280)
{
LogCount=100
}
Add(MTStrTbl,820392,616,147)
{
Width=506
Height=244
Align=5
Name="tabl"
ColorItems=0
Redaction=0
Grid=0
}
Add(MST_DB,3242928,749,224)
{
MSTControl="tabl"
}
Add(Debug,11634924,756,294)
{
LogCount=100
}
Add(FormatStr,11025785,497,224)
{
Mask="Driver={Microsoft Excel Driver (*.xls)};\r\nDriverId=790;\r\nDbq=%1;\r\nDefaultDir=%2;"
link(onFString,6691432:doOpen,[])
link(Str1,11108326:Text,[(503,215)(489,215)(489,264)(363,264)])
}
Add(FilePartElm,15044656,420,224)
{
Mode=0
link(onPart,11025785:doString,[])
}


У меня всё работает

Редактировалось 2 раз(а), последний 2025-03-08 22:45:49
карма: 18

0
Ответов: 521
Рейтинг: 166
#39: 2025-03-08 22:51:06 ЛС | профиль | цитата
Gunta писал(а):
У меня всё работает

ООО даже не поверил своим глазам этот вариант с файлом в формате - .XLS работает .
С .xlsx -ошибка 1003
карма: 4

0
Разработчик
Ответов: 26230
Рейтинг: 2140
#40: 2025-03-09 03:37:04 ЛС | профиль | цитата
Вы тут сильно не ругайтесь. Но захотелось немного потренироваться, и я решил сделать конвертор без применения базы данных. Те использовать метод, который напрямую связан с Excel, без всяких OLE и ODBC -- DDE. Этот метод должен работать на любой машине с любым Excel. И вот что получилось (да не обессудит меня Gunta, тк некоторые решения я тупо у него стырил )

Схема

Add(MainForm,4844206,161,161)
{
Left=20
Top=105
Width=450
Height=437
MarginLeft=5
MarginTop=5
MarginRight=5
MarginBottom=5
Caption="Работа с Excel"
Position=1
Point(Handle)
link(onCreate,6027587:doPopup,[(200,181)(200,258)(151,258)(151,230)])
}
Add(DDEClient,12344087,644,210)
{
ServiceName="EXCEL"
AutoUpdate=1
Point(doExecute)
Point(onError)
Point(onExecute)
Point(doTopicName)
link(onOpenLink,4210895:doWork1,[(683,216)(683,111)(214,111)(214,125)])
link(onGetItem,15181236:doInputEvent,[])
}
Add(For,8369739,245,217)
{
Start=1
End=100
link(onEvent,5561371:doString,[])
link(onStop,15621989:doEvent1,[(298,230)(298,300)])
}
Add(FormatStr,5561371,308,217)
{
DataCount=1
Mask="R1C%1"
link(onFString,12512474:doEvent1,[])
}
Add(MTStrTbl,5816951,161,119)
{
Top=50
Width=434
Height=348
Align=5
Name="excel"
}
Add(MST_Clear,4101504,644,259)
{
ClearAll=0
MSTControl="excel"
}
Add(Hub,16613303,595,245)
{
OutCount=4
link(onEvent1,12344087:doTopicName,[])
link(onEvent2,12344087:doOpenLink,[(620,258)(620,216)])
link(onEvent3,4101504:doClear,[])
link(onEvent4,8369739:doFor,[(631,272)(631,321)(235,321)(235,223)])
}
Add(MST_ColAction,10034592,987,210)
{
MSTControl="excel"
}
Add(ChanelSwitch,15181236,721,210)
{
link(onOutEvent1,8059813:doTrim,[])
link(onOutEvent2,2966136:doTrim,[(760,223)(760,342)])
}
Add(Hub,12512474,364,217)
{
link(onEvent1,15181236:doSwitchToChanel1,[(501,223)(501,178)(700,178)(700,216)])
link(onEvent2,15600924:doWork2,[])
}
Add(For,7961195,371,357)
{
@Hint=#1:Y|
Start=2
End=100
link(onEvent,86887:doFor,[])
link(onStop,13362148:doEvent1,[(410,370)(410,573)])
AddHint(35,-31,22,13,@Hint)
}
Add(Hub,15621989,315,294)
{
link(onEvent1,15181236:doSwitchToChanel2,[(683,300)(683,223)])
link(onEvent2,7961195:doFor,[(343,307)(343,363)])
}
Add(FormatStr,8261114,490,357)
{
Mask="R%1C%2"
link(onFString,15600924:doWork3,[(543,363)])
link(Str1,7961195:Position,[(496,348)(482,348)(482,397)(377,397)])
}
Add(For,86887,427,357)
{
@Hint=#1:X|
Start=1
End=100
link(onEvent,8261114:doString,[])
link(onStop,7769877:doAdd,[(466,370)(466,405)])
AddHint(35,-31,22,13,@Hint)
}
Add(HubEx,15600924,539,224)
{
link(onEvent,12344087:doGetItem,[])
}
Add(MT_Add,3542868,938,336)
{
InputMT=1
link(onAdd,295797:doValue,[(977,342)(977,258)(928,258)(928,272)])
link(Data,5485813:Var2,[])
}
Add(MT_Memory,295797,938,266)
{
}
Add(MT_Add,7769877,763,399)
{
InputMT=2
link(onAdd,6345748:doEvent1,[])
link(Data,5485813:Var1,[(769,313)])
}
Add(GetDataEx,5485813,938,308)
{
link(Data,295797:Value,[])
}
Add(MST_RowAction,4339442,1239,399)
{
MSTControl="excel"
}
Add(Hub,6345748,903,399)
{
OutCount=3
link(onEvent1,10866116:doSeparateMT,[])
link(onEvent2,8860620:doSeparateMT,[(970,412)(970,454)])
link(onEvent3,295797:doClear,[(928,419)(928,279)])
}
Add(Trim,2966136,784,336)
{
Char=" "
link(onTrim,5624993:doTrim,[])
}
Add(Case,9554756,938,210)
{
Value=String()
link(onNextCase,10034592:doColAction,[])
}
Add(Trim,6912231,833,210)
{
Char="\n"
link(onTrim,12911157:doTrim,[])
}
Add(Trim,8059813,784,210)
{
Char="\r\n"
link(onTrim,6912231:doTrim,[])
}
Add(Trim,12911157,882,210)
{
Char="\r"
link(onTrim,9554756:doCase,[])
}
Add(MT_MultiData,10866116,980,399)
{
From=5
Count=1
link(onData1,7045169:doCompare,[])
}
Add(Case,12388025,1141,399)
{
Value=String()
link(onNextCase,6476696:doAdd,[])
}
Add(MT_Add,6476696,1190,399)
{
InputMT=2
link(onAdd,4339442:doRowAction,[])
link(Data,5485813:Var3,[(1196,313)])
}
Add(StrMask,7045169,1036,399)
{
Mask="Распрод*"
link(onFalse,708575:doSwitchToChanel1,[])
link(onTrue,708575:doSwitchToChanel2,[])
}
Add(ChanelSwitch,708575,1092,399)
{
link(onOutEvent1,12388025:doCase,[])
}
Add(MT_MultiData,8860620,980,448)
{
Count=1
link(onData1,708575:doInputEvent,[(1075,454)(1075,419)])
}
Add(FormatStr,236393,588,581)
{
DataCount=42
Mask="<Товар Группа="%1" Вид="%2" Производитель="%4" НН="%5" Партномер="%7" Название="%8" НазваниеРус="%3" Статус="" Цена="%9" Валюта="%10" ПроцентКонв="call" Вес="%34" Объем="%35" Ширина="%36" Высота="%37" Глубина="%38" ЕдИзм="%32">\r\n<Склад Место="ЦО" Количество="%12">\r\n<Склад Место="ЦО(Москва)" Количество="%15"/>\r\n</Склад>"
link(onFString,477419:doWork2,[])
}
Add(MST_ArrayRows,12784195,532,525)
{
MSTControl="excel"
}
Add(MT_MTArrayEnum,8507433,532,581)
{
link(onItem,236393:doString,[])
link(Array,12784195:Strings,[])
}
Add(Hub,13362148,441,567)
{
OutCount=6
link(onEvent1,8648615:doClear,[(970,573)(970,594)])
link(onEvent2,15108078:doString,[(494,580)(494,517)])
link(onEvent3,8507433:doEnum,[])
link(onEvent4,13275218:doPart,[(505,594)(505,664)])
link(onEvent5,6405071:doString,[(490,601)(490,720)])
}
Add(FormatStr,15108078,588,511)
{
Mask="<Сток Дата="%1">"
link(onFString,477419:doWork1,[(907,517)])
link(Str1,4815497:FormatTime,[])
}
Add(Time,4815497,588,462)
{
Format="D:M:Y h:m:s"
}
Add(Charset,3130587,931,581)
{
Type=6
link(onCharset,8648615:doAdd,[])
}
Add(HubEx,477419,903,581)
{
link(onEvent,3130587:doCharset,[])
}
Add(FilePartElm,13275218,700,658)
{
Mode=6
link(onPart,16233257:doStrCat,[])
link(FileName,4210895:Var1,[(706,649)(230,649)])
}
Add(StrCat,16233257,756,658)
{
Str2=".xml"
link(onStrCat,8648615:doSave,[(970,664)(970,615)])
}
Add(Message,14276668,812,714)
{
}
Add(FormatStr,6405071,756,714)
{
Mask="Создан файл - %1"
link(onFString,14276668:doMessage,[])
link(Str1,16233257:Result,[])
}
Add(StrList,8648615,1008,581)
{
Point(doSave)
}
Add(Trim,5624993,833,336)
{
Char="\n"
link(onTrim,13656227:doTrim,[])
}
Add(Trim,13656227,882,336)
{
Char="\r"
link(onTrim,3542868:doAdd,[])
}
Add(ChildPanel,4210895,224,119)
{
link(onEvent1,16613303:doEvent1,[(550,125)(550,251)])
}
BEGIN_SDK
Add(EditMulti,6163233,21,21)
{
EventCount=1
WorkCount=1
VarCount=1
Width=412
Height=214
link(doWork1,3708702:doChangeValue,[(39,27)(39,34)])
link(Var1,2588770:Value,[(27,145)(300,145)])
}
Add(Panel,8574939,119,28)
{
Width=434
Align=2
Ctl3D=0
WinStyle=1
BorderWidth=0
BevelWidth=0
BevelInner=0
}
Add(Button,11312604,119,77)
{
Left=10
Top=10
TabOrder=-1
Caption="Open"
Point(doCaption)
link(onClick,7406706:doExecute,[])
}
Add(Edit,621552,294,42)
{
Left=70
Top=11
Width=325
WinStyle=2
Text=""
}
Add(ODialog,7406706,175,77)
{
link(onExecute,14842716:doEvent1,[])
}
Add(Hub,14842716,224,77)
{
OutCount=3
link(onEvent1,621552:doText2,[(250,83)(250,55)])
link(onEvent2,2588770:doValue,[])
link(onEvent3,4017987:doShellExec,[(277,97)(277,167)])
}
Add(FilePartElm,14509320,343,84)
{
Point(Part)
}
Add(WinExec,4017987,287,154)
{
link(onExec,10306272:doString,[])
}
Add(FormatStr,10306272,343,154)
{
DataCount=1
Mask="[%1]Лист1"
link(onFString,6163233:onEvent1,[(382,160)(382,27)])
link(Str1,14509320:Part,[])
}
Add(Memory,2588770,294,84)
{
link(onData,14509320:doPart,[])
}
Add(LED,3708702,49,28)
{
Left=400
Top=10
Width=20
Height=20
Ctl3D=0
WinStyle=1
Shape=1
ColorBlick=255
}
END_SDK
Add(WinTools,6027587,161,217)
{
link(Handle,4844206:Handle,[])
}


Редактировалось 5 раз(а), последний 2025-03-09 03:50:22
карма: 22

0
Ответов: 869
Рейтинг: 186
#41: 2025-03-09 07:54:44 ЛС | профиль | цитата
nesco писал(а):
решил сделать конвертор без применения базы данных. Те использовать метод, который напрямую связан с Excel, без всяких OLE и ODBC -- DDE.

А если строк в excel файле больше 100?
И я бы сделал небольшую задержку между запуском excel и всем остальным.

Add(MainForm,4844206,21,63)
{
Left=20
Top=105
Width=450
Height=437
MarginLeft=5
MarginTop=5
MarginRight=5
MarginBottom=5
Caption="Работа с Excel"
Position=1
Point(Handle)
link(onCreate,6027587:doPopup,[(60,83)(60,160)(11,160)(11,132)])
}
Add(MTStrTbl,5816951,21,21)
{
Top=50
Width=434
Height=348
Align=5
Name="excel"
}
Add(FormatStr,236393,756,147)
{
DataCount=42
Mask="<Товар Группа="%1" Вид="%2" Производитель="%4" НН="%5" Партномер="%7" Название="%8" НазваниеРус="%3" Статус="" Цена="%9" Валюта="%10" ПроцентКонв="call" Вес="%34" Объем="%35" Ширина="%36" Высота="%37" Глубина="%38" ЕдИзм="%32">\r\n<Склад Место="ЦО" Количество="%12">\r\n<Склад Место="ЦО(Москва)" Количество="%15"/>\r\n</Склад>"
link(onFString,477419:doWork2,[])
}
Add(MST_ArrayRows,12784195,532,84)
{
MSTControl="excel"
}
Add(MT_MTArrayEnum,8507433,532,140)
{
link(onItem,10866116:doSeparateMT,[])
link(Array,12784195:Strings,[])
}
Add(Hub,13362148,441,126)
{
OutCount=6
link(onEvent1,15477052:In,[(466,132)(466,111)])
link(onEvent2,15108078:doString,[(517,139)(517,83)])
link(onEvent3,8507433:doEnum,[])
link(onEvent4,13275218:doPart,[(505,153)(505,230)])
link(onEvent5,6405071:doString,[(490,160)(490,286)])
}
Add(FormatStr,15108078,756,77)
{
Mask="<Сток Дата="%1">"
link(onFString,477419:doWork1,[(1075,83)])
link(Str1,4815497:FormatTime,[])
}
Add(Time,4815497,756,28)
{
Format="D:M:Y h:m:s"
}
Add(Charset,3130587,1099,147)
{
Type=6
link(onCharset,8648615:doAdd,[])
}
Add(HubEx,477419,1071,147)
{
link(onEvent,3130587:doCharset,[])
}
Add(FilePartElm,13275218,868,224)
{
Mode=6
link(onPart,16233257:doStrCat,[])
link(FileName,4210895:Var1,[(874,208)(104,208)])
}
Add(StrCat,16233257,924,224)
{
Str2=".xml"
link(onStrCat,8648615:doSave,[(1138,230)(1138,181)])
}
Add(Message,14276668,980,280)
{
}
Add(FormatStr,6405071,924,280)
{
Mask="Создан файл - %1"
link(onFString,14276668:doMessage,[])
link(Str1,16233257:Result,[])
}
Add(StrList,8648615,1176,147)
{
Point(doSave)
}
Add(ChildPanel,4210895,98,119)
{
link(onEvent1,15557525:doString,[])
}
BEGIN_SDK
Add(EditMulti,6163233,21,21)
{
EventCount=1
WorkCount=1
VarCount=1
Width=412
Height=214
link(Var1,2588770:Value,[(27,145)(223,145)])
}
Add(Panel,8574939,42,28)
{
Width=434
Align=2
Ctl3D=0
WinStyle=1
BorderWidth=0
BevelWidth=0
BevelInner=0
}
Add(Button,11312604,42,77)
{
Left=10
Top=10
TabOrder=-1
Caption="Open"
Point(doCaption)
link(onClick,7406706:doExecute,[])
}
Add(Edit,621552,217,42)
{
Left=70
Top=11
Width=325
WinStyle=2
Text=""
}
Add(ODialog,7406706,98,77)
{
link(onExecute,14842716:doEvent1,[])
}
Add(Hub,14842716,147,77)
{
OutCount=3
link(onEvent1,621552:doText2,[(173,83)(173,55)])
link(onEvent2,2588770:doValue,[])
}
Add(WinExec,4017987,273,77)
{
link(onExec,15475224:doDeferredEvent,[])
}
Add(Memory,2588770,217,84)
{
link(onData,4017987:doShellExec,[])
}
Add(DeferredEvent,15475224,329,77)
{
Delay=500
link(onDeferredEvent,6163233:onEvent1,[(389,83)(389,27)])
}
END_SDK
Add(WinTools,6027587,21,119)
{
link(Handle,4844206:Handle,[])
}
Add(DDEClient,12344087,203,91)
{
ServiceName="EXCEL"
TopicName="system"
AutoUpdate=1
Point(onExecute)
Point(onError)
Point(doExecute)
link(onExecute,15882137:doEvent,[])
}
Add(Convertor,5491408,315,126)
{
Mode=12
link(onResult,11674960:doLoadFromStream,[])
link(Data,2176761:Text,[])
}
Add(MST_Load,11674960,378,119)
{
Delimiter="\t"
MSTControl="excel"
link(onLoadFromStream,13362148:doEvent1,[])
}
Add(IndexToChanel,15882137,252,119)
{
link(onEvent2,5491408:doConvert,[])
}
Add(Clipboard,2176761,315,70)
{
Unicode=0
}
Add(FormatStr,15557525,154,119)
{
Mask="[ACTIVATE()][SELECT("R4C2")][SELECT.SPECIAL(5)][COPY()][SELECT("R1C1")]"
link(onFString,12344087:doExecute,[])
}
Add(LineBreak,9178964,1134,154)
{
link(Out,8648615:doClear,[])
Primary=[15477052,-658,-49]
}
Add(MT_MultiData,10866116,595,140)
{
From=5
link(onData1,12388025:doCase,[])
}
Add(Case,12388025,651,140)
{
Value=String()
link(onTrue,6476696:doAdd,[])
}
Add(MT_Add,6476696,700,147)
{
InputMT=2
link(onAdd,236393:doString,[])
link(Data,8507433:Item,[(706,138)(692,138)(692,180)(538,180)])
}


--- Добавлено в 2025-03-09 08:16:42

Для тех, кому интересно работать с excel через dde
http://www.excelworld.ru/publ/funcs/makrofuncs/makrofuncs/24-1-0-50
Внизу страницы есть алфавитный список почти всех команд.

Редактировалось 1 раз(а), последний 2025-03-09 08:16:42
карма: 18

0
Разработчик
Ответов: 26230
Рейтинг: 2140
#42: 2025-03-09 11:58:19 ЛС | профиль | цитата
Отлично, Gunta. Я предложил идею, ты ее завершил. Осталось только отфильтровать в твоей схеме Распродажи и получится завершенное решение.
карма: 22

0
Ответов: 869
Рейтинг: 186
#43: 2025-03-09 12:12:34 ЛС | профиль | цитата
nesco писал(а):
Осталось только отфильтровать в твоей схеме Распродажи и получится завершенное решение.

А если внимательно посмотреть.
У меня отбор уже в XML

--- Добавлено в 2025-03-09 12:54:56

Можно и без MTStrTbl

Add(MainForm,4844206,7,175)
{
Left=20
Top=105
Width=450
Height=437
MarginLeft=5
MarginTop=5
MarginRight=5
MarginBottom=5
Caption="Работа с Excel"
Position=1
Point(Handle)
}
Add(FormatStr,236393,903,231)
{
DataCount=42
Mask="<Товар Группа="%1" Вид="%2" Производитель="%4" НН="%5" Партномер="%7" Название="%8" НазваниеРус="%3" Статус="" Цена="%9" Валюта="%10" ПроцентКонв="call" Вес="%34" Объем="%35" Ширина="%36" Высота="%37" Глубина="%38" ЕдИзм="%32">\r\n<Склад Место="ЦО" Количество="%12">\r\n<Склад Место="ЦО(Москва)" Количество="%15"/>\r\n</Склад>"
link(onFString,477419:doWork2,[])
}
Add(Hub,13362148,518,196)
{
OutCount=6
link(onEvent1,15477052:In,[(543,202)(543,181)])
link(onEvent2,15108078:doString,[(590,209)(590,153)])
link(onEvent3,8658535:doData,[])
link(onEvent4,8657363:doEnum,[(655,223)(655,244)])
link(onEvent5,13275218:doPart,[(569,230)(569,314)])
link(onEvent6,6405071:doString,[(558,237)(558,370)])
}
Add(FormatStr,15108078,903,147)
{
Mask="<Сток Дата="%1">"
link(onFString,477419:doWork1,[(1222,153)])
link(Str1,4815497:FormatTime,[])
}
Add(Time,4815497,903,98)
{
Format="D:M:Y h:m:s"
}
Add(Charset,3130587,1246,231)
{
Type=6
link(onCharset,8648615:doAdd,[])
}
Add(HubEx,477419,1218,231)
{
link(onEvent,3130587:doCharset,[])
}
Add(FilePartElm,13275218,609,308)
{
Mode=6
link(onPart,16233257:doStrCat,[])
link(FileName,11996251:Value,[(615,292)(209,292)])
}
Add(StrCat,16233257,665,308)
{
Str2=".xml"
link(onStrCat,8648615:doSave,[(1285,314)(1285,265)])
}
Add(Message,14276668,721,364)
{
}
Add(FormatStr,6405071,665,364)
{
Mask="Создан файл - %1"
link(onFString,14276668:doMessage,[])
link(Str1,16233257:Result,[])
}
Add(StrList,8648615,1323,231)
{
Point(doSave)
}
Add(DDEClient,12344087,420,161)
{
ServiceName="EXCEL"
TopicName="system"
AutoUpdate=1
Point(onExecute)
Point(onError)
Point(doExecute)
link(onExecute,15882137:doEvent,[])
}
Add(IndexToChanel,15882137,469,189)
{
link(onEvent2,13362148:doEvent1,[])
}
Add(FormatStr,15557525,371,189)
{
Mask="[ACTIVATE()][SELECT("R4C2")][SELECT.SPECIAL(5)][COPY()][SELECT("R1C1")]"
link(onFString,12344087:doExecute,[])
}
Add(LineBreak,3551929,1281,238)
{
link(Out,8648615:doClear,[])
Primary=[15477052,-728,-63]
}
Add(Case,12388025,784,238)
{
Value=String()
link(onTrue,11115741:doMTString,[])
}
Add(Button,8418077,56,189)
{
Left=10
Top=10
TabOrder=-1
Caption="Open"
Point(doCaption)
link(onClick,1202456:doExecute,[])
}
Add(Edit,10202686,203,154)
{
Left=70
Top=11
Width=325
WinStyle=2
Text=""
}
Add(ODialog,1202456,112,189)
{
link(onExecute,5443421:doEvent1,[])
}
Add(Hub,5443421,161,189)
{
OutCount=3
link(onEvent1,10202686:doText2,[(187,195)(187,167)])
link(onEvent2,11996251:doValue,[])
}
Add(WinExec,15044300,259,189)
{
link(onExec,15405593:doDeferredEvent,[])
}
Add(Memory,11996251,203,196)
{
link(onData,15044300:doShellExec,[])
}
Add(DeferredEvent,15405593,315,189)
{
Delay=500
link(onDeferredEvent,15557525:doString,[])
}
Add(ArrayEnum,8657363,679,238)
{
link(onItem,1089806:doSplit,[])
link(Array,3247264:Array,[])
}
Add(Clipboard,1348652,609,161)
{
Unicode=0
}
Add(StrList,3247264,665,189)
{
}
Add(DoData,8658535,609,210)
{
link(onEventData,3247264:doText,[])
link(Data,1348652:Text,[])
}
Add(MT_String,11115741,840,231)
{
Delimeter="\t"
link(onResult,236393:doString,[])
link(Str1,8657363:Item,[(846,215)(832,215)(832,278)(685,278)])
}
Add(MultiStrData,1089806,728,238)
{
Char="\t"
From=5
Count=1
link(onPart1,12388025:doCase,[])
}


Редактировалось 2 раз(а), последний 2025-03-09 12:54:56
карма: 18

0
Разработчик
Ответов: 26230
Рейтинг: 2140
#44: 2025-03-09 13:46:33 ЛС | профиль | цитата
Gunta писал(а):
А если внимательно посмотреть

Да-да. Теперь заметил, что выбор идет только по пустому 6-му столбцу

--- Добавлено в 2025-03-09 13:48:19

Gunta писал(а):
Можно и без MTStrTbl

Можно, но как-то не сильно наглядно получается.

Редактировалось 2 раз(а), последний 2025-03-09 13:49:00
карма: 22

0
44
Сообщение
...
Прикрепленные файлы
(файлы не залиты)