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
'Начало описания
'Скрипт меняет ширину колонок в редакторе данных так, чтобы она соответствовала
'числу символов в каждой переменной.  Минимальные и максимальные значения ширины
'задаются прямо перед инструкцией "Option Explicit".
'Содержимое самих переменных остаётся нетронутым
'Автор: Raynald Levesque, 23.05.2002
'http://www.spsstools.net
'Конец описания

' Определяем минимальную и максимальную ширину колонки
Const IntMinLength As Integer = 7
Const IntMaxLength As Integer = 15

Option Explicit

Sub Main

	Dim objDocuments As ISpssDocuments
	Dim objDataDoc As ISpssDataDoc
	Dim objSpssInfo As ISpssInfo
	Dim varName As String
	Dim varList As String
	Dim intLength As Integer
	Dim i As Integer

	Set objDocuments = objSpssApp.Documents
	
	'Если файл данных открыт, связываем с ним объект ISpssDataDoc
	If objDocuments.DataDocCount <> 0 Then
		Set objDataDoc = objDocuments.GetDataDoc(0)
		objDataDoc.Visible=True
		Set objSpssInfo = objSpssApp.SpssInfo

		'Получаем число переменных
		Dim varCount As Integer
		varCount = objSpssInfo.NumVariables
		If varCount = 0 Then
			End
		End If

		With objSpssInfo
		For i = 0 To varCount - 1
			varName = .VariableAt(i)
			'Уберите комментарий со следующей строки, если хотите обработать только строковые переменные
			'If .VarType(i) = SpssDataString Then

			' Закомментируйте следующую строку, если хотите обработать только строковые переменные
			If 1=1 Then
				'Устанавливаем ширину колонки равной длине переменной
				'(при ограничениях min и max, заданных выше)
				intLength = .VarLength(i)
				If IntMaxLength < .VarLength(i) Then intLength = IntMaxLength
				If IntMinLength > .VarLength(i) Then intLength = IntMinLength
				objSpssApp.ExecuteCommands ("VARIABLE WIDTH " & varName & " (" & intLength & ").",True)
			End If
		Next
		End With
	End If

	Set objDataDoc = Nothing
	Set objDocuments = Nothing
End Sub