Note: The other languages of the website are Google-translated. Back to English

Kako izvoziti tabelo telesa e-pošte v Excel v Outlook?

Ko prejmete e-poštno sporočilo, ki vsebuje nekaj tabel v telesu, boste včasih morda morali vse tabele iz telesa sporočila izvoziti na Excelov delovni list. Običajno lahko tabele kopirate in prilepite na delovni list, toda tukaj bom govoril o uporabni metodi za reševanje tega posla, kadar je treba izvoziti več tabel.

Izvozite vse tabele iz Outlookovega sporočila v Excelov delovni list s kodo VBA


Izvozite vse tabele iz Outlookovega sporočila v Excelov delovni list s kodo VBA

Prosimo, uporabite naslednjo kodo VBA za izvoz vseh tabel iz enega telesa sporočila na Excelov delovni list.

1. Odprite sporočilo, da želite izvoziti tabele, in nato držite tipko ALT + F11 tipke za odpiranje Microsoft Visual Basic za aplikacije okno.

2. Kliknite Vstavi > Moduliin prilepite naslednjo kodo v Moduli okno.

Koda VBA: Izvozi vse tabele iz telesa sporočila na Excelov delovni list:

Sub ImportTableToExcel()
Dim xMailItem As MailItem
Dim xTable As Word.Table
Dim xDoc As Word.Document
Dim xExcel As Excel.Application
Dim xWb As Workbook
Dim xWs As Worksheet
Dim I As Integer
Dim xRow As Integer
On Error Resume Next
Set xExcel = New Excel.Application
Set xWb = xExcel.Workbooks.Add
xExcel.Visible = True
Set xWs = xWb.Sheets(1)
xRow = 1
For Each xMailItem In Application.ActiveExplorer.Selection
    Set xDoc = xMailItem.GetInspector.WordEditor
    For I = 1 To xDoc.Tables.Count
        Set xTable = xDoc.Tables(I)
        xTable.Range.Copy
        xWs.Paste
        xRow = xRow + xTable.Rows.Count + 1
        xWs.Range("A" & CStr(xRow)).Select
    Next
Next
End Sub

doc izvoz tabele za excel 1

3. Po lepljenju zgornje kode še vedno v Microsoft Visual Basic za aplikacije okno, kliknite Orodja > Reference Pojdite na Reference-Projekt1 pogovorno okno in preverite Knjižnica predmetov Microsoft Word in Knjižnica predmetov Microsoft Excel možnosti iz Razpoložljive reference seznam, glej posnetek zaslona:

doc izvoz tabele za excel 2

4. Nato kliknite OK za izhod iz pogovornega okna, zdaj pa prosim F5 za zagon kode so bile vse tabele v telesu sporočila izvožene v novo delovno knjigo, kot je prikazano na sliki spodaj:

doc izvoz tabele za excel 3


Kutools za Outlook - prinaša 100 naprednih funkcij v Outlook in olajša delo!

  • Samodejno CC / BCC po pravilih pri pošiljanju e-pošte; Samodejno posredovanje naprej Več e-poštnih sporočil po meri; Samodejni odgovor brez strežnika za izmenjavo in več samodejnih funkcij ...
  • Opozorilo pred BCC - prikaži sporočilo, ko poskušate odgovoriti vsem če je vaš poštni naslov na seznamu BCC; Opomni, ko manjkajo priloge, in več opomnikov ...
  • Odgovori (vsi) z vsemi prilogami v e-poštnem pogovoru; Odgovori na veliko e-poštnih sporočil v nekaj sekundah; Samodejno dodaj pozdrav ko odgovor; Dodaj datum v zadevo ...
  • Orodja za priloge: Upravljanje vseh prilog v vseh e-poštnih sporočilih, Samodejno loči, Stisni vse, Preimenuj vse, Shrani vse ... Hitro poročilo, Štejte izbrano pošto...
  • Zmogljiva neželena e-poštna sporočila po meri; Odstranite podvojene pošte in stike... Omogočajo vam pametnejše, hitrejše in boljše delovanje v Outlooku.
strelec kutools outlook kutools zavihek 1180x121
shot kutools outlook kutools plus jeziček 1180x121
 
Komentarji (17)
Ocene še ni. Bodite prvi in ​​ocenite!
Ta komentar je moderator na spletnem mestu minimiziral
To deluje odlično! Najlepša hvala
Ta komentar je moderator na spletnem mestu minimiziral
Kako odpreti pošto z določeno zadevo in kopirati tabelo v preglednico z določenim imenom. Prosim pomagajte.
Ta komentar je moderator na spletnem mestu minimiziral
Potrebujem pomoč, VBA za kopiranje tabele iz Outlookove pošte z določeno zadevo v Excel na določeni lokaciji

Prejemem e-pošto z zadevo »Stanje varnostne kopije danes« s tabelo z 2 stolpcema in 6 vrsticami v mapi Prejeto. Poskušam napisati kodo za odpiranje pošte in kopirati tabelo ter jo prilepiti v excel na določeno mesto.

Težava: koda deluje brez napak. Odpre se Pošta in odpre se tudi Excelova datoteka. Toda tabela ni kopirana. Prosim za pomoč pri tem.

Sub Openmail()

Zatemni xMailItem kot različico
Zatemnite kot Outlook.NameSpace
Zatemni olFldr kot Outlook.MAPIFolder
Dim olItms kot Outlook.Items
Dim xTable kot Word.Table
Dim xDoc kot Word.document
Zatemni wordApp kot predmet
Zatemni xExcel kot objekt
Dim xWb kot delovni zvezek
Dim xWs kot delovni list
Dim I As Long
Dim v kot celo število
Dim xRow kot celo število
Dim StrFile$
On Error Resume Next

Nastavite olApp = New Outlook.Application
Nastavi olNs = olApp.GetNamespace("MAPI")
Nastavi olFldr = olNs.GetDefaultFolder(olFolderInbox)
Nastavite olItms = olFldr.Items
Nastavi wordApp = CreateObject("Word.Application")
Nastavi xExcel = CreateObject("Excel.Application")

xVrstica = 1
I = 1

Za vsak xMailItem v olItms
Če Int(xMailItem.ReceivedTime) >= Datum Potem
Če je InStr(xMailItem.Subject, "Stanje varnostne kopije danes") > 0 Potem
'xMailItem.Display
Nastavite xDoc = xMailItem.GetInspector.WordEditor
Za v = 1 Za xDoc.Tables.Count
Nastavi xTable = xDoc.Tables(v)
xTable.Range.Copy
StrFile = "C:\Users\priyanka.jeganathan\OneDrive - Accenture\Accenture\Learning\Daily DashBoard Basesheet.xlsx"
Nastavi xWb = xExcel.Workbooks.Open(StrFile)
Nastavite xWs = xWb.Worksheets("IRIS Daily")
xWs.Aktiviraj
xWs.Prilepite
xRow = xRow + xTable.Rows.Count + 1
xWs.Range("A" & CStr(xRow)).Izberi
Naslednji
jaz = jaz + 1
Konec Če
Konec Če
Naslednji xMailItem
xWs.Zaslon
xWs.Range("A1:A6").Širina stolpca = 43
xWs.Rows("1:6").RowHeight = 16.5
Nastavite olFldr = Nič
Nastavi olNs = Nič
Nastavite olApp = Nič
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Rabim pomoč. Sem novinec in sem poskusil s kodo VBA kopirati tabelo iz Outlookove pošte s posebno zadevo v Excel na določeni lokaciji

Vsak dan prejmem e-pošto z zadevo »Stanje varnostne kopije danes« in iščem kodo, da odprem to pošto, kopiram tabelo in prilepim tabelo v excel na določeno lokacijo.

Težava: koda deluje brez napak. Pošta se odpre in Excel se odpre, vendar tabela ni kopirana. Ne vem, kje sem se zmotil. Prosim pomagajte.

Sub Openmail()

Zatemni xMailItem kot različico
Zatemnite kot Outlook.NameSpace
Zatemni olFldr kot Outlook.MAPIFolder
Dim olItms kot Outlook.Items
Dim xTable kot Word.Table
Dim xDoc kot Word.document
Zatemni wordApp kot predmet
Zatemni xExcel kot objekt
Dim xWb kot delovni zvezek
Dim xWs kot delovni list
Dim I As Long
Dim v kot celo število
Dim xRow kot celo število
Dim StrFile$
On Error Resume Next

Nastavite olApp = New Outlook.Application
Nastavi olNs = olApp.GetNamespace("MAPI")
Nastavi olFldr = olNs.GetDefaultFolder(olFolderInbox)
Nastavite olItms = olFldr.Items
Nastavi wordApp = CreateObject("Word.Application")
Nastavi xExcel = CreateObject("Excel.Application")

xVrstica = 1
I = 1

Za vsak xMailItem v olItms
Če Int(xMailItem.ReceivedTime) >= Datum Potem
Če je InStr(xMailItem.Subject, "Stanje varnostne kopije danes") > 0 Potem
'xMailItem.Display
Nastavite xDoc = xMailItem.GetInspector.WordEditor
Za v = 1 Za xDoc.Tables.Count
Nastavi xTable = xDoc.Tables(v)
xTable.Range.Copy
StrFile = "C:\Users\priyanka.jeganathan\OneDrive - Accenture\Accenture\Learning\Daily DashBoard Basesheet.xlsx"
Nastavi xWb = xExcel.Workbooks.Open(StrFile)
Nastavite xWs = xWb.Worksheets("IRIS Daily")
xWs.Aktiviraj
xWs.Prilepite
xRow = xRow + xTable.Rows.Count + 1
xWs.Range("A" & CStr(xRow)).Izberi
Naslednji
jaz = jaz + 1
Konec Če
Konec Če
Naslednji xMailItem
xWs.Zaslon
xWs.Range("A1:A6").Širina stolpca = 43
xWs.Rows("1:6").RowHeight = 16.5
Nastavite olFldr = Nič
Nastavi olNs = Nič
Nastavite olApp = Nič
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, Blessy,
Če želite odpreti e-pošto z določeno zadevo in izvoziti tabele iz telesa sporočila v datoteko Excel, vam lahko spodnja koda VBA naredi uslugo, poskusite:

Sub ImportTableToExcelBySubject()
Zatemni xItem kot predmet
Zatemni xMailItem kot MailItem
Dim xTable kot Word.Table
Dim xDoc kot Word.Document
Dim xExcel Kot Excel.Aplikacija
Dim xWb kot delovni zvezek
Dim xWs kot delovni list
Dim I kot celo število
Dim xRow kot celo število
Zatemni xFileDialog kot FileDialog
On Error Resume Next
Če Application.ActiveExplorer.CurrentFolder.Items.Count = 0, potem Exit Sub
Nastavite xExcel = Nova Excel.Aplikacija
Nastavite xFileDialog = xExcel.FileDialog(msoFileDialogFilePicker)
xFileDialog.Filters.Dodaj "Excel Workbook", "*.xls*", 1
Če je xFileDialog.Show = 0, potem Exit Sub
Nastavi xWb = xExcel.Workbooks.Open(xFileDialog.SelectedItems(1))
Nastavi xWs = xWb.Delovni listi(1)
xExcel.DisplayAlerts = False
xVrstica = 1
Za vsak xItem v Application.ActiveExplorer.CurrentFolder.Items
Če je xItem.Class = olMail Potem
Nastavite xMailItem = xItem
Če je InStr(xMailItem.Subject, "Stanje varnostne kopije danes") > 0 Nato 'vnesite zadevo v dvojni narekovaj
Nastavite xDoc = xMailItem.GetInspector.WordEditor
Za I = 1 Za xDoc.Tables.Count
Nastavi xTable = xDoc.Tables(I)
xTable.Range.Copy
xWs.Prilepite
xRow = xRow + xTable.Rows.Count + 1
xWs.Range("A" & CStr(xRow)).Izberi
Naslednji
xMailItem.Display
Konec Če
Konec Če
Naslednji
xWb.Shrani
xExcel.DisplayAlerts = Res
xExcel.Visible = Res
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Hvala Skyyang. Deluje. Razen, da pridobi vso pošto z "Stanje varnostne kopije danes", pri čemer želim, da se ta koda izvaja na e-poštnih sporočilih, prejetih danes. Posodobili ste kodo, vendar še vedno kopira tabelo iz vseh prej prejetih e-poštnih sporočil. Prosim pomagajte.


Sub ImportTableToExcelBySubject()
Zatemni xItem kot predmet
Zatemni xMailItem kot MailItem
Dim xTable kot Word.Table
Dim xDoc kot Word.document
Dim xExcel Kot Excel.Aplikacija
Dim xWb kot delovni zvezek
Dim xWs kot delovni list
Dim I kot celo število
Dim xRow kot celo število
Zatemni xFileDialog kot FileDialog
Dim Drt kot datum
On Error Resume Next
Če Application.ActiveExplorer.CurrentFolder.Items.Count = 0, potem Exit Sub
Nastavite xExcel = Nova Excel.Aplikacija
Nastavite xFileDialog = xExcel.FileDialog(msoFileDialogFilePicker)
xFileDialog.Filters.Dodaj "Excel Workbook", "*.xls*", 1
Če je xFileDialog.Show = 0, potem Exit Sub
Nastavi xWb = xExcel.Workbooks.Open(xFileDialog.SelectedItems(1))
Nastavi xWs = xWb.Delovni listi(1)
xExcel.DisplayAlerts = False
xVrstica = 1
Za vsak xItem v Application.ActiveExplorer.CurrentFolder.Items
Če je xItem.Class = olMail Potem
Nastavite xMailItem = xItem
Drt = xMailItem.ReceivedTime
Če Drt <= Date And InStr(xMailItem.Subject, "Stanje varnostne kopije danes") > 0 Nato "vnesite zadevo v dvojni narekovaj
Nastavite xDoc = xMailItem.GetInspector.WordEditor
Za I = 1 Za xDoc.Tables.Count
Nastavi xTable = xDoc.Tables(I)
xTable.Range.Copy
xWs.Prilepite
xRow = xRow + xTable.Rows.Count + 1
xWs.Range("A" & CStr(xRow)).Izberi
Naslednji
xMailItem.Display
Konec Če
Konec Če
Naslednji
xWb.Shrani
xExcel.DisplayAlerts = Res
xExcel.Visible = Res
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, Blessy,

Če morate samo uvoziti tabele z določeno temo, uporabite spodnjo kodo VBA. Najprej morate izbrati e-pošto z zadevo, ki jo potrebujete, in nato zagnati to kodo. Prosim poskusi.

Sub ImportTableToExcelBySubject()
Zatemni xMailItem kot MailItem
Dim xTable kot Word.Table
Dim xDoc kot Word.Document
Dim xExcel Kot Excel.Aplikacija
Dim xWb kot delovni zvezek
Dim xWs kot delovni list
Dim I kot celo število
Dim xRow kot celo število
Zatemni xFileDialog kot FileDialog
On Error Resume Next
Nastavite xExcel = Nova Excel.Aplikacija
Nastavite xFileDialog = xExcel.FileDialog(msoFileDialogFilePicker)
xFileDialog.Filters.Dodaj "Excel Workbook", "*.xls*", 1
Če je xFileDialog.Show = 0, potem Exit Sub
Nastavi xWb = xExcel.Workbooks.Open(xFileDialog.SelectedItems(1))
Nastavi xWs = xWb.Delovni listi(1)
xExcel.DisplayAlerts = False
xVrstica = 1
Za vsak xMailItem v Application.ActiveExplorer.Selection
Če je InStr(xMailItem.Subject, "Stanje varnostne kopije danes") > 0 Potem
Nastavite xDoc = xMailItem.GetInspector.WordEditor
Za I = 1 Za xDoc.Tables.Count
Nastavi xTable = xDoc.Tables(I)
xTable.Range.Copy
xWs.Prilepite
xRow = xRow + xTable.Rows.Count + 1
xWs.Range("A" & CStr(xRow)).Izberi
Naslednji
Konec Če
Naslednji
xWb.Shrani
xExcel.DisplayAlerts = Res
xExcel.Visible = Res
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Hvala, Skyyang za vaš odgovor. Moj celoten cilj je zagnati kodo v Outlooku VBA, tako da poišče pošto, prejeto na "trenutni datum", z drugimi besedami "danes" z zadevo "Stanje varnostne kopije danes" in kopiram tabelo iz te pošte v excel v obliki tabele. Prosim pomagajte pri tem.. namesto da izberemo to pošto, naj koda izbere pošto in kopira vsebino v excel. obstaja način...? Prosim pomagajte, rešilo mi bo dan.
Ta komentar je moderator na spletnem mestu minimiziral
Katero knjižnico referenc/objektov je treba aktivirati v excelu? Pravzaprav sem nov v VBA in se učim.
Ta komentar je moderator na spletnem mestu minimiziral
Pri tem sem našel napako, ki je nisem uspela odpraviti.

Če izberem več dveh e-poštnih sporočil, enega z eno tabelo in enega s tremi tabelami, in zaženem kodo, se Outlook zruši. Vendar sem opazil, da je prvotno izbrana e-poštna sporočila zelo specifična za vrstni red.

1. Če na primer najprej kliknem na e-pošto s tremi tabelami, nato s tipko ctrl kliknem e-pošto z eno tabelo, se koda zažene brez napak.

2. Če najprej naredim #1, nato ponovno izberem e-poštna sporočila, tokrat kliknem na e-pošto z eno tabelo, nato s tipko ctrl klikneš e-pošto s tremi tabelami, zažene se tudi brez napake

3. Zdaj, če zaprem in znova zaženem Outlook ter najprej kliknem na e-pošto z eno tabelo, nato s tipko ctrl kliknem e-pošto s tremi tabelami, se Outlook zruši.

Opazim tudi, da ko se zruši, to stori potem, ko je kopirala/prilepila drugo tabelo in preden se zruši tretja. Pravzaprav ne pride niti do 'For I = 1 To xDoc.Tables.Count', da bi dobil tretjo tabelo.

Tabele imajo 43 vrstic in 7 stolpcev. V e-poštnih sporočilih ni drugega besedila in iz tabel sem odstranil vse podatke, tako da niso povezani s podatki v njih. Poskusil sem odstraniti vrstice in na neki točki bo začel delovati, vendar nisem prepričan, kaj mi to pove.

Ali kdo ve, zakaj se to dogaja?
Ta komentar je moderator na spletnem mestu minimiziral
Tu imam isti problem. Rešitve še ni, vendar sem mislil, da vam bom sporočil, da niste sami.
Ta komentar je moderator na spletnem mestu minimiziral
Enako vprašanje tudi tukaj. Poskušal sem nastaviti objekte na nič znotraj vsake zanke, vendar še vedno ne deluje.
Ta komentar je moderator na spletnem mestu minimiziral
Ta koda VBA mi ne deluje ... po zagonu se ne izvozi v excel
Ta komentar je moderator na spletnem mestu minimiziral
Tudi jaz prejmem veliko e-poštnih sporočil z določeno zadevo, za katero želim izvleči te tabele v to e-pošto ... potrebna je pomoč
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, arshad,
Ali mislite izvoziti vse tabele iz sporočil z isto zadevo v delovni list?
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, vsako uro prejmem e-pošto s tabelo, ki jo moram samodejno poslati v preglednico v mapi, ali bo ta zgornja koda delovala za to?
Ta komentar je moderator na spletnem mestu minimiziral
v shranjeno datoteko moram ekstrahirati tabelo s podatki, ki jih prejmem vsako uro

to mi ne deluje
Tu še ni objavljenih komentarjev
Pustite vaše komentarje
Objava kot gost
×
Ocenite to objavo:
0   Znaki
Predlagane lokacije