Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 4199 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 ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel VBA - Inhalte und Dateiname von txt-Dateien automatisch in Excel importieren (2)

Frage von Booster07 zum Thema Microsoft Office ...

VB for Applications
VBA Excel Dateien zusammenfassen (3)

Frage von cberndt zum Thema VB for Applications ...

Linux
gelöst Find Ausgabe in formatierte text Datei umleiten (5)

Frage von MadM4x zum Thema Linux ...

Microsoft Office
Excel 2010 Doc Properties ohne Makros (1)

Frage von arduino zum Thema Microsoft Office ...

Neue Wissensbeiträge
Notebook & Zubehör

WOL bei HP Notebooks

(6)

Erfahrungsbericht von Henere zum Thema Notebook & Zubehör ...

LAN, WAN, Wireless

Neue Cisco Catalyst-Serie 9000

Information von Kuemmel zum Thema LAN, WAN, Wireless ...

Sicherheit

Millionen Euro in den Sand gesetzt?

(3)

Information von transocean zum Thema Sicherheit ...

Heiß diskutierte Inhalte
Windows 10
Netzwerkkarte schaltet sich erst nach dem Logon ein (23)

Frage von DerWoWusste zum Thema Windows 10 ...

Windows Server
Seit IP Umstellung DC DNS Fehler (18)

Frage von Yaimael zum Thema Windows Server ...

Netzwerke
Mobile Einwahl IPSec VPN von iPhone iPad T-Mobile zur Pfsense (16)

Frage von Spitzbube zum Thema Netzwerke ...

Weiterbildung
gelöst Fest angestellter Admin oder Systemhaus Admin mit Kundenbetreuung? (15)

Frage von Voiper zum Thema Weiterbildung ...