Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Ouvrir un fichier Excel en VB

Bonjour à tous,

Je débute dans l'utilisation de QlikView (Version 11.20).

Je cherche à envoyer un tableau de données ("CH418") vers un fichier Excel existant, à l'aide d'un bouton cliquable. Pour cela, j'ai trouvé sur internet le programme VB suivant :

  1. Sub Test 
  2.    ExcelAppend "h:\test.xlsx", "CH418" 
  3. End Sub 

  1. Sub ExcelAppend(strExcelAppenFile, strExelAppendObjectID) 
  2.    ' Create an instance of Excel 
  3.    SET objExcelApp = CREATEOBJECT("Excel.Application") 
  4.    ' Open workbook 
  5.    WITH objExcelApp 
  6.       .DefaultSaveFormat = xlWorkbookNormal 
  7.       .DisplayAlerts = FALSE 
  8.       .Workbooks.Open strExcelAppenFile 
  9.       .DisplayFullScreen = FALSE 
  10.       .Visible = FALSE 
  11.    END WITH 
  12.    ' Set worksheet 
  13.    SET objExcelSheet = objExcelApp.Worksheets(1) 
  14.    ' Set Excel used range 
  15.    SET objExcelRange = objExcelSheet.Range("A65535").End(-4162) 
  16.    ' Last used row in column A 
  17.    intExcelLastRow = objExcelRange.Row 
  18.    ' Set object to append from 
  19.    SET objObjectFrom = ActiveDocument.GetSheetObject(strExelAppendObjectID) 
  20.    ' Loop all rows of the object except first header row 
  21.    FOR intObjectRow = 1 To objObjectFrom.GetRowCount - 1 
  22.       ' Loop all columns of the object 
  23.       FOR intObjectColumn = 0 To objObjectFrom.GetColumnCount - 1 
  24.          ' Get object data 
  25.          SET objCell = objObjectFrom.GetCell(intObjectRow, intObjectColumn) 
  26.          ' Add that data to Excel cell 
  27.          objExcelSheet.Cells(intObjectRow + intExcelLastRow, intObjectColumn + 1) = objCell.Text 
  28.       NEXT 
  29.    NEXT 
  30.    ' Save and quit 
  31.    objExcelSheet.SaveAs strExcelAppenFile 
  32.    objExcelApp.Application.Quit 
  33.    SET objExcelSheet = NOTHING       
  34.    SET objExcelApp = NOTHING 
  35. END SUB    

J'utilise ce code de la façon suivante :

  1. Création du bouton
  2. Propriétés > Actions > Exécuter une macro > Nom de la macro : Test
  3. Editer la macro : je colle le code précédent, et clique sur Appliquer, et derme la fenêtre "Editer le module"
  4. Je clique sur le bouton pour lancer la macro
  5. En bas à gauche de l'écran, "Macro exécutée..." apparaît
  6. La fenêtre "Editer le module" réapparaît

A cette étape, j'ouvre le fichier test.xlsx pour contrôler que la procédure a bien fonctionné, mais le fichier n'est pas rempli.

Au cours de cette procédure, Qlik ne m'alerte pas d'un quelconque problème. Pourtant, je n'obtiens pas le résultat souhaité.

Pourriez-vous svp m'indiquer ce qui ne fonctionne pas dans ma démarche ?

Merci pour votre aide !

Labels (1)
15 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

‌tu peux également en mettre dans le WITH pour vraiment trouver la ligne qui plante.

Mais je pense que c'est : .Workbooks.Open ...

C'est la seul action, les autres lignes ne sont que des settings

Mets les FALSE à TRUE temporairemen, tu verras s'afficher Excel ou le message d'erreur d'Excel : comme par exemple "File not found"

Not applicable
Author

Sébastien,

J'ai testé : c'est bien ".Workbooks.Open strExcelAppenFile " qui pose problème !

Pourtant le fichier est bien enregistré (et au bon endroit !).

En passant de false à true le .DisplayAlerts , il ne se passe rien de spécial (pas d'alerte).

On progresse, merci beaucoup pour votre aide !

sfatoux72
Partner - Specialist
Partner - Specialist

Mais si ton fichier existe, le problème vient du H: , si c'est lecteur reseau comme par exemple myServeur (H:) utilise \\myServeur\test.xlsx et ca devrait marcher

Not applicable
Author

Ca fonctionne !

Merci beaucoup pour votre aide !!!

sfatoux72
Partner - Specialist
Partner - Specialist

Il fait mettre la question comme résolue pour aider les autres membres de la communauté

Not applicable
Author

C'est fait !

Merci encore pour votre aide