Vraag : De code VBA aan lijn door een proces om het BESTAAN in te voeren blinkt dossiers uit.

Als u mijn blok hieronder van code onderzoekt, zult u opmerken ik spreadsheten invoer waarvan naambegin met „widget“ van verschillende 3 dossiers uitblink (Year1.xlsx, Year2.xlsx, Year3.xlsx).  

I am een efficiëntere manier zoeken om deze code te schrijven om enkele overtolligheid te elimineren.  U zult voor subs „ImportSheetsYears1“, „ImportSheetsYears2“, en „ImportSheetsYears3“ opmerken dat de code behalve `xlPath' identiek is.  Zo heb ik waarschijnlijk één of andere soort lijn nodig, maar ik ben niet zeker hoe te om it.

Also in de lijn te coderen, als dossier niet bestaat uitblink; het zou het moeten overslaan en naar volgende gaan uitblinkt dossier.  Als niets van gespecificeerd uitblinkt er bestaan dossiers, zou een msgbox moeten in brand steken en sub zou moeten zijn weggegaan.  Ik veronderstel een foutenmanager de beste manier zou zijn om over dit te gaan?  

Anyhow, dank vooraf voor om het even welke mogelijke oplossingen.  
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
Option vergelijkt Gegevensbestand
Expliciete optie

Schemerige objXL als Voorwerp
Schemerige stal, xlPath als Koord, I als Geheel


Openbare subImportExcelSheets ()
Vraag ImportSheetsYears1
Vraag ImportSheetsYears2
Vraag ImportSheetsYears3
Sub van het eind




Privé SubImportSheetsYears1 ()

xlPath = „\ \ serverName \ Year1.xlsx“

Reeks objXL = CreateObject („Excel.Application“)
    objXL.Workbooks.Open xlPath, Waar
    Met objXL
        Voor I = 1 aan. Worksheets.Count
            Als InStr (. Aantekenvellen (I). Naam, „widget“) toen
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
             „tableName“, xlPath, Waar. Aantekenvellen (I). Naam &“! A: M "
            Eind als
        Daarna
    Eind met
    objXL.Quit
    Reeks objXL = niets

Sub van het eind

Privé SubImportSheetsYears2 ()

xlPath = „\ \ serverName \ Year2.xlsx“

Reeks objXL = CreateObject („Excel.Application“)
    objXL.Workbooks.Open xlPath, Waar
    Met objXL
        Voor I = 1 aan. Worksheets.Count
            Als InStr (. Aantekenvellen (I). Naam, „widget“) toen
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
             „tableName“, xlPath, Waar. Aantekenvellen (I). Naam &“! A: M "
            Eind als
        Daarna
    Eind met
    objXL.Quit
    Reeks objXL = niets

Sub van het eind


Privé SubImportSheetsYears3 ()

xlPath = „\ \ serverName \ Year3.xlsx“

Reeks objXL = CreateObject („Excel.Application“)
    objXL.Workbooks.Open xlPath, Waar
    Met objXL
        Voor I = 1 aan. Worksheets.Count
            Als InStr (. Aantekenvellen (I). Naam, „widget“) toen
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
             „tableName“, xlPath, Waar. Aantekenvellen (I). Naam &“! A: M "
            Eind als
        Daarna
    Eind met
    objXL.Quit
    Reeks objXL = niets

Sub van het eind

Antwoord : De code VBA aan lijn door een proces om het BESTAAN in te voeren blinkt dossiers uit.

Ik ben zeker er… zijn maar zoals ik verklaarde, is het niet redelijk.  Hoe kon u het doen?  Aangezien ik iemand anders vertelde die een kwestie van een gelijkaardige aard stellen, huur een programmeur/een hakker in die kunnen analyseren hoe de Vensters de verbetering aan met 32 bits doet, welke vraag het maakt, en spoedig en zo-vooruit, en uiteindelijk, ben ik zeker zij een manier zullen berekenen.  Het kan kosten 5 of 6 cijfers… maar als u het geld hebt, is niets onmogelijk.

Eenvoudig gezet, als anderen en zelf hebben verklaard op één of andere manier - en ik zal voor een tweede keer in deze commentaar herformuleren - er GEEN REDELIJKE manier is om dit te doen.  Dat is uw antwoord.  Geen redelijke technicus (aangezien ik hen) zou bepalen zou om het even welke significante tijd proberend doorbrengen om dit te doen zodat is het hoogst onwaarschijnlijk u zal vinden IEDEREEN, vooral iedereen hier, wie een manier heeft gevonden om het te doen - redelijk of anders.  De deskundige-uitwisseling is een grote plaats om antwoorden aan vragen en problemen te vinden die zaken of uw capaciteit beïnvloeden om een systeem te gebruiken.  Wanneer u iets wilt doen die niemand denkt bent een goed idee of zelfs mogelijk, u bijna zeker geen antwoord zult vinden u wordt tevredengesteld met zelfs wanneer de gegeven antwoorden zijn, niet hebbend verder bewijsmateriaal aan het tegendeel, nauwkeurige 100%.
Andere oplossingen  
 
programming4us programming4us