Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / транспонирование / 5 сообщений из 5, страница 1 из 1
15.01.2019, 13:13
    #39759732
saxarock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонирование
Товарищи знатоки,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Set objFSO = CreateObject("Scripting.FileSystemObject")
src_file = "~\transpon\src\14.xls"
dest_file = "~\transpon\for_load.csv"


Dim oExcel
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)
oBook.SaveAs dest_file, 6 ',,,false,true,,,,,, -4143
oBook.Close False
oExcel.Quit



есть такого вида vba, который запускается из bat.
необходимо чтобы в dest_file - получался транспонированный файл src_file.
в VBA не силен, поэтому прошу тупо сделать рабочий код.
...
Рейтинг: 0 / 0
15.01.2019, 13:40
    #39759744
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонирование
saxarock,

В книге один лист, содержимое которого нужно транспонировать ?
...
Рейтинг: 0 / 0
15.01.2019, 13:43
    #39759746
saxarock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонирование
big-duke,

Да.
...
Рейтинг: 0 / 0
15.01.2019, 19:45
    #39759981
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонирование
saxarock,

objFSO зачем? Это только часть кода? Вот часть с транспонированием
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Option Explicit

Const src_file = "~\transpon\src\14.xls"
Const dest_file = "~\transpon\for_load.csv"
Dim oExcel, oBook, oNewBook
  Set oExcel = CreateObject("Excel.Application")
  oExcel.Visible = False
  oExcel.DisplayAlerts = False
  Set oBook = oExcel.Workbooks.Open(src_file)
  Set oNewBook = oExcel.Workbooks.Add(-4167) 'xlWBATWorksheet - книга с одним листом
  oBook.Sheets(1).UsedRange.Copy
  oNewBook.Sheets(1).Range("A1").PasteSpecial -4163, , , True 'xlValues...Transpose
  oNewBook.SaveAs dest_file, 6 ',,,false,true,,,,,, -4143
  oBook.Close False
  oNewBook.Close False
  oExcel.Quit
...
Рейтинг: 0 / 0
24.01.2019, 09:41
    #39763980
saxarock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонирование
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
src_file = "~\1.xls"
dest_file = "~\l.csv"


Dim oExcel
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = true
Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)




Код: vbnet
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.
ActiveSheet.Range("a1").Select
    name1 = ActiveSheet.Name
    name2 = ActiveWorkbook.Name
    MsgBox (name1)
    MsgBox (name2)
    ActiveSheet.Name = "V"
   'Set colvalue = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, _
   '                          LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
   'c = colvalue.Column
   'Set rowvalue = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, _
   '                          LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
   ' r = rowvalue.Row
   
   Set colvalue = Cells.Find("*", Range("a1"), xlValues, xlPart, xlByColumns, xlPrevious, False, False)
   c = colvalue.Column
   
   Set rowvalue = Cells.Find("*", Range("A1"), xlValues, xlPart, xlByRows, xlPrevious, False, False)
   r = rowvalue.Row
   
   
   
    Range(Cells(1, 1), Cells(r, c)).Select
   'Cells(10, 1) = r '4
   'Cells(10, 2) = c '7
   'Workbooks.Add
   Sheets.Add After:=Sheets(Sheets.Count) '-- õîòåë íîâûé ëèñò, ïåðåäóìàë
   ActiveSheet.Name = "GF"
    
   For n = 0 To (r - 2)
         For i = 1 To c 'ñòîëáöû
            
         Sheets("GF").Cells(i + n * c, 2) = Sheets("V").Cells(1, i)
         Sheets("GF").Cells(i + n * c, 1) = n + 1
               
         Next i
    Next n
    
     For n1 = 0 To (r - 2)
       
         
         For i = 1 To c 'ñòîëáöû
            
              Sheets("GF").Cells(i + n1 * c, 3) = Sheets("V").Cells(n1 + 2, i)
         
               
         Next i
       
    Next n1
    Sheets("V").Select
    ActiveSheet.Name = name1
       Sheets("GF").Select
    Sheets("GF").Move




помогите один к другому прицепить
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / транспонирование / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]