Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ausgabe eines Excel VBA-Makros in eine .txt-Datei umleiten

Frage Microsoft Microsoft Office

Mitglied: jschikora

jschikora (Level 1) - Jetzt verbinden

04.08.2011 um 15:25 Uhr, 4153 Aufrufe, 2 Kommentare

Hallo zusammen,

ich habe folgendes Problem und hoffe ihr könnt mir weiterhelfen. Ich habe in einer Excel-Tabelle mehrere Spalten mit Parametern und brauche von diesen Parametern alle Kombinationen. Ein VBA-Skript das mir diese Kombinationen erzeugt habe ich schon geschrieben. Das Problem ist jetzt, dass Excel 2003 "nur" 65536 Zeilen hat, ich aber mittlerweile mehr Kombinationen brauche. Das Makro funktioniert also nicht mehr.

Gibt es eine Möglichkeit die Ausgabe des Makros direkt in eine Textdatei, zum Beispiel auf dem Desktop, umzuleiten, damit ich das Platzproblem umgehe. Der Code für das bisherige Kombinations-Makro sieht so aus:

01.
Sub combinations() 
02.
 
03.
Dim c1() As Variant 
04.
Dim c2() As Variant 
05.
Dim c3() As Variant 
06.
Dim c4() As Variant 
07.
Dim c5() As Variant 
08.
Dim c6() As Variant 
09.
Dim out() As Variant 
10.
Dim j, k, l, m, n, o, p As Long 
11.
 
12.
 
13.
Dim col1 As Range 
14.
Dim col2 As Range 
15.
Dim col3 As Range 
16.
Dim col4 As Range 
17.
Dim col5 As Range 
18.
Dim col6 As Range 
19.
Dim out1 As Range 
20.
 
21.
 
22.
Set col1 = Range("A2", Range("A2").End(xlDown)) 
23.
Set col2 = Range("B2", Range("B2").End(xlDown)) 
24.
Set col3 = Range("C2", Range("C2").End(xlDown)) 
25.
Set col4 = Range("D2", Range("D2").End(xlDown)) 
26.
Set col5 = Range("E2", Range("E2").End(xlDown)) 
27.
Set col6 = Range("F2", Range("F2").End(xlDown)) 
28.
 
29.
c1 = col1 
30.
c2 = col2 
31.
c3 = col3 
32.
c4 = col4 
33.
c5 = col5 
34.
c6 = col6 
35.
 
36.
Set out1 = Range("H2", Range("M2").Offset(UBound(c1) * UBound(c2) * UBound(c3) * UBound(c4) * UBound(c5) * UBound(c6))) 
37.
out = out1 
38.
 
39.
j = 1 
40.
k = 1 
41.
l = 1 
42.
m = 1 
43.
n = 1 
44.
o = 1 
45.
p = 1 
46.
 
47.
Do While p <= UBound(c6) 
48.
    Do While o <= UBound(c5) 
49.
        Do While n <= UBound(c4) 
50.
            Do While j <= UBound(c3) 
51.
                Do While k <= UBound(c2) 
52.
                    Do While l <= UBound(c1) 
53.
                        out(m, 1) = c1(l, 1) 
54.
                        out(m, 2) = c2(k, 1) 
55.
                        out(m, 3) = c3(j, 1) 
56.
                        out(m, 4) = c4(n, 1) 
57.
                        out(m, 5) = c5(o, 1) 
58.
                        out(m, 6) = c6(p, 1) 
59.
                        m = m + 1 
60.
                        l = l + 1 
61.
                    Loop 
62.
                    l = 1 
63.
                    k = k + 1 
64.
                Loop 
65.
                k = 1 
66.
                j = j + 1 
67.
            Loop 
68.
            j = 1 
69.
            n = n + 1 
70.
        Loop 
71.
        n = 1 
72.
        o = o + 1 
73.
    Loop 
74.
    o = 1 
75.
    p = p + 1 
76.
Loop 
77.
 
78.
out1.Value = out 
79.
End Sub 
80.
 
Mitglied: bastla
04.08.2011 um 15:52 Uhr
Hallo jschikora!

Du könntest vor Zeile 46 das Trennzeichen zwischen den einzelnen Werten festlegen sowie die Zieldatei erstellen mit
01.
Delim = vbTab 'Trennzeichen zwischen den Spalten 
02.
 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
Set Datei = fso.CreateTextFile(CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Ausgabe.txt")
und dann die Zeilen 53 bis 58 durch
Datei.WriteLine c1(l, 1) & Delim & c2(k, 1) & Delim & c3(j, 1) & Delim & c4(n, 1) & Delim & c5(o, 1) & Delim & c6(p, 1)
ersetzen.

Das Testen überlasse ich Dir ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
05.08.2011 um 11:32 Uhr
Hallo jschikora!

Den Anfangsteil könnte man etwas vereinfachen:
01.
    Set col1 = Range("A2", Range("A2").End(xlDown)) 
02.
    Set col2 = Range("B2", Range("B2").End(xlDown)) 
03.
    Set col3 = Range("C2", Range("C2").End(xlDown)) 
04.
    Set col4 = Range("D2", Range("D2").End(xlDown)) 
05.
    Set col5 = Range("E2", Range("E2").End(xlDown)) 
06.
    Set col6 = Range("F2", Range("F2").End(xlDown)) 
07.
     
08.
    Set cols = Union(col1, col2, col3, col4, col5, col6) 
09.
     
10.
    For Each cell In cols.Cells 
11.
       'durläuft alle Zellen von col1 - col6 
12.
    Next 
13.
     
14.
    Set out1 = Range("H2", Range("M2").Offset(cols.Cells.Count - 1))
Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
VB for Applications
Excel VBA Sortierung von Daten (4)

Frage von easy4breezy zum Thema VB for Applications ...

Webentwicklung
gelöst HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...