Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Visual Basic Excel: inserire formula

30 views
Skip to first unread message

Marco Porzio

unread,
May 5, 2023, 9:59:22 AM5/5/23
to
Ciao,
con un codice VBA di Outlook vado a generare un file Excel dove inserisco delle informazioni prese dalle mail segnalate come non lette.

ad esempio scorro le righe e inserisco questi dati:

xlWb.Worksheets(1).Cells(i, "E").Value = strProc
xlWb.Worksheets(1).Cells(i, "F").Value = strCtrl
xlWb.Worksheets(1).Cells(i, "G").Value = StrProd

nelle colonne K e L devo invece inserire una formula che mi servirà poi su SQL Server per aggiornare dei dati quindi in Excel la formula deve essere inserita come se fosse un testo.
in K devo mettere:
="UPDATE Z_EDIT SET X1=0, AFELD57='' WHERE PRFNR ="& J2 & " AND MERKMALBEZ like 'Esito%'"

in L devo mettere:
="select * from Z_EDIT WHERE PRFNR =" &J2& " AND MERKMALBEZ like 'Esito%'"

ho provato in questo modo:
xlWb.Worksheets(1).Cells(i, "K").FormulaR1C1 = "=""UPDATE Z_EDIT SET X1=0, AFELD57='' WHERE PRFNR =" & J2 & " AND MERKMALBEZ like 'Esito%'"

ho due problemi:
per prima cosa non me la scrive così come si vede sopra ma va in errore perchè pensa sia una formula da usare e non un testo da incollare fregandosene della sintassi

il secondo è che dovrei gestire anche il numero di riga quindi al posto di J2 dovrebbe essere qualcosa tipo J & i, "K")

mi date una mano a capire come sistemare questa cosa?
grazie
Marco

issdr

unread,
May 5, 2023, 3:54:04 PM5/5/23
to
Marco Porzio wrote:

> xlWb.Worksheets(1).Cells(i, "K").FormulaR1C1 = "=""UPDATE Z_EDIT SET X1=0, AFELD57='' WHERE PRFNR =" & J2 & " AND MERKMALBEZ like 'Esito%'"

xlWb.Worksheets(1).Cells(i, "K") = "=""UPDATE Z_EDIT SET X1=0, AFELD57='' WHERE PRFNR ="" & J2 & "" AND MERKMALBEZ like 'Esito% '"""

Marco Porzio

unread,
May 8, 2023, 3:01:30 AM5/8/23
to
ora la sintassi sembra corretta però in Excel mi scrive J3 al posto di J2 inoltre, se possibile, dovrebbe mettere J2, J3, J4, J5 scorrendo tutti i record. Ora ho provato con un export di 3 record e mette sempre e solo J3 senza "leggere" la riga in cui si trova.
P.S. se nel codice metto J1 salta la riga di intestazione e parte correttamente da J2

issdr

unread,
May 8, 2023, 5:35:01 AM5/8/23
to
Marco Porzio wrote:

> ora la sintassi sembra corretta però in Excel mi scrive J3 al posto di
> J2

no, non deve fartelo, c'è qualche problema

> inoltre, se possibile, dovrebbe mettere J2, J3, J4, J5 scorrendo tutti
> i record. Ora ho provato con un export di 3 record e mette sempre e
> solo J3 senza "leggere" la riga in cui si trova.

devi "dirglielo" (assumo che la riga della colonna J che tu vuoi sia "i"):

xlWb.Worksheets(1).Cells(i, "K") = "=""UPDATE Z_EDIT SET X1=0, AFELD57='' WHERE PRFNR ="" & J" & i & "& "" AND MERKMALBEZ like 'Esito%'"""

> P.S. se nel codice metto J1 salta la riga di intestazione e parte
> correttamente da J2

ripeto, c'è qualcosa che non va. se isoli quella riga di codice e la fai
girare da sola, vedi che inserisce un riferimento a J2 e basta

Marco Porzio

unread,
May 8, 2023, 7:19:01 AM5/8/23
to
adesso funziona tutto, non so perchè prima mi sballava di una riga...

un ultimo dubbio che non so se sia risolvibile da codice
se scrivo la formula sopra in una cella Excel poi la copio su SQL Server management studio, la incolla senza " all'inizio e alla fine quindi la query non va in errore e funziona.

se copio la stessa stringa però generata da Outlook me la incolla in SQL con " e va in errore!

non è un grosso problema, tolgo gli " dalla query ed eseguo però mi piacerebbe capire perchè fa così...
P.S. se tolgo " dal codice non me lo esegue


0 new messages