| |
|
|
- page 1 - |
|
![Stephan Sonneborn: 06.02.2011](.././../../i/a/27.gif) Stephan Sonneborn | allô zusammen, dans einem Excel-Tabellenblatt (Stückliste) devoir Artikel eigetragen volonté. cela erfolgt zum einem trop Fuß, zum anderen par un Auswahlprogramm avec bereitgestellten Artikeln. qui Excel Présentation hat une primitiven Schutz vers unbeabsichtigtes Überschreiben falscher Zellen: Blattschutz sans Mot de passe.
Pour cela händische Travailler qui Stückliste habe je un Makro geschrieben, dass den Blattschutz aufhebt, une Leerzeile einfügt et ensuite den Blattschutz wieder mets. dans VBA est cela ensuite: ActiveSheet.Unprotect
Beim Übertragen qui Artikeldaten dans cela Excelblatt per oxc muss qui Blattschutz aussi aufgehoben son. cela voulais je so bewerkstelligen:
'*-------------------------------------------------------------------------------------------------*
'* Exceldatei ouvrir *
'*-------------------------------------------------------------------------------------------------*
PROC OpenExcelFile
'*-------------------------------------------------------------------------------------------------*
PARAMETERS File$
'*-------------------------------------------------------------------------------------------------*
DECLARE UsedRange&, Rows&
'*-------------------------------------------------------------------------------------------------*
IF FILEEXISTS(File$)
'Excel unsichtbar starten:
Excel& = ocxCREATE("Excel.Application")
Workbooks& = ocxGet(Excel&,"Workbooks")
ExcelWnd& = ocxGet(Excel&,"Hwnd")
ocxPut(Excel&,"DisplayAlerts",1)
ocxPut(Excel&,"Visible" ,1)
'*-------------------------------------------------------------------------------------------------*
'Excel-Aller:
ExcelBook& = ocxMethod(Workbooks&,"Open" , File$)
ExcelSheet& = ocxGet(ExcelBook&, "Sheets", ExcelSheet$)
ocxPut(ExcelSheet&, "Unprotect")
Range& = ocxGet(ExcelSheet&, "Range", "A1")
UsedRange& = ocxGet(ExcelSheet&, "UsedRange")
Rows& = ocxGet(UsedRange&, "Rows")
ExcelSheetLines& = ocxGet(Rows&, "Count")
LastBOMPos& = INT((ExcelSheetLines& - 19)/4)
ELSE
ExcelWnd& = 0
ENDIF
'*-------------------------------------------------------------------------------------------------*
'Rückgabewert:
RETOUR ExcelWnd&
'*-------------------------------------------------------------------------------------------------*
ENDPROC
'*-------------------------------------------------------------------------------------------------*
malheureusement führt cela zum Programmabsturz. Hat quelqu'un une concept? und dir seulement um den Eintrag ocxPUT(ExcelSheet&, "Unprotect"). sans cet la ligne fonctionne qui Code. |
|
|
| Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 06.02.2011 ▲ |
|
|
|
![](.././../../i/hr.gif) |
« cette Beitrag wurde comme Solution gekennzeichnet. » |
|
![Stephan Sonneborn: 06.02.2011](.././../../i/a/27.gif) Stephan Sonneborn | ![Solution](.././../../i/st3.gif) Hat ihn!
simple statt ocxPut ocxMethod prendre:
'*-------------------------------------------------------------------------------------------------*
'* Exceldatei ouvrir *
'*-------------------------------------------------------------------------------------------------*
PROC OpenExcelFile
'*-------------------------------------------------------------------------------------------------*
PARAMETERS File$
'*-------------------------------------------------------------------------------------------------*
DECLARE UsedRange&, Rows&
'*-------------------------------------------------------------------------------------------------*
IF FILEEXISTS(File$)
'Excel unsichtbar starten:
Excel& = ocxCREATE("Excel.Application")
Workbooks& = ocxGet(Excel&,"Workbooks")
ExcelWnd& = ocxGet(Excel&,"Hwnd")
ocxPut(Excel&,"DisplayAlerts",1)
ocxPut(Excel&,"Visible" ,1)
'*-------------------------------------------------------------------------------------------------*
'Excel-Aller:
ExcelBook& = ocxMethod(Workbooks&,"Open" , File$)
ExcelSheet& = ocxGet(ExcelBook&, "Sheets", ExcelSheet$)
ocxMethod(ExcelSheet&, "Unprotect")
Range& = ocxGet(ExcelSheet&, "Range", "A1")
UsedRange& = ocxGet(ExcelSheet&, "UsedRange")
Rows& = ocxGet(UsedRange&, "Rows")
ExcelSheetLines& = ocxGet(Rows&, "Count")
LastBOMPos& = INT((ExcelSheetLines& - 19)/4)
ELSE
ExcelWnd& = 0
ENDIF
'*-------------------------------------------------------------------------------------------------*
'Rückgabewert:
RETOUR ExcelWnd&
'*-------------------------------------------------------------------------------------------------*
ENDPROC
'*-------------------------------------------------------------------------------------------------*
|
|
|
| Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 06.02.2011 ▲ |
|
|
![](.././../../i/hr.gif) |
|
|
![iF: 07.02.2011](.././../../i/a/1.gif) | très cool, habe soeben une Ableger chez Codesnippets erstellt: [...] ![](.././../../i/s/top.gif) |
|
|
| |
|
|