Показать полную графическую версию : [решено] копирование столбца из excel в другой excel
Добрый день имеются множество файлов ( пример прикрепил ). Можно ли как то из этих всех файлов вырезать только один столбец (NUM ) И чтоб нумерация из этих столбцов была полностью видна. То есть при нажатии скриптов создавались бы excel файлы только с Num столбцами. Эти файлы лежат на D:\Новая папка а экспорт новых excel файлов например на D:\Новая папка2
имеются множество файлов ( пример прикрепил ). »
Если речь ведётся о «множестве», лучше сразу давать два-три файла, а не один, дабы было с чем работать.
Можно ли как то из этих всех файлов вырезать только один столбец (NUM ) И чтоб нумерация из этих столбцов была полностью видна. То есть при нажатии скриптов создавались бы excel файлы только с Num столбцами. Эти файлы лежат на D:\Новая папка а экспорт новых excel файлов например на D:\Новая папка2 »
Можно. Только не на пакетных файлах, а посредством чего0либо, поддерживающего Automation — WSH, PowerShell, AutoIt и т.п.
А какова цель сего действа? Вот мы удалили из листа Рабочей книги все столбцы, кроме num, выровняли его, сохранили под тем же именем в конечный каталог. Затем другую Рабочую книгу, третью… А что дальше?
Да просто этих файлов у меня штук 100. и так каждый открывать удалять на это времени много уходит. Просто мне нужно этот Num столбец потом будет еще распечатать. Проще ж потом выделить сформированные файлы и все разом пустить на печать а не открывать каждый потом удалять потом на печать. Вот вам 2 файл для примера.
Да и мне нужно чтобы оригинал файла сохранился. Хотя знаете можно просто тогда удалить из оригинала и все. Я если что найду способ как оригиналы найти
romfus, ну, пробуйте (на WSH):
Option Explicit
Dim strSourceFolder
Dim strDestFolder
Dim objFSO
Dim objFile
Dim objExcel
strSourceFolder = "C:\Мои проекты\0155\Source"
strDestFolder = "C:\Мои проекты\0155\Destination"
Set objExcel = Nothing
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strSourceFolder) Then
If objFSO.FolderExists(strDestFolder) Then
For Each objFile In objFSO.GetFolder(strSourceFolder).Files
Select Case LCase(objFSO.GetExtensionName(objFile.Name))
Case "xls", "xlsx"
If objExcel Is Nothing Then
Set objExcel = WScript.CreateObject("Excel.Application")
End If
With objExcel
With .Workbooks.Open(objFile.Path)
With .Worksheets.Item(1)
If StrComp(.Cells(1, 1).Value, "num", vbTextCompare) = 0 Then
With .UsedRange.EntireColumn
.Offset(0, 1).Delete
.AutoFit
End With
Else
WScript.Echo "Can't find [num] in A1 cell in first worksheet in [" & objFile.Name & "] workbook."
End If
End With
.SaveAs objFSO.BuildPath(strDestFolder, objFile.Name)
.Close
End With
End With
Case Else
' Nothing to do
End Select
Next
objExcel.Quit
Set objExcel = Nothing
Else
WScript.Echo "Can't find destination folder [" & strDestFolder & "]."
WScript.Quit 2
End If
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 1
End If
Set objFSO = Nothing
WScript.Quit 0
Но у меня возник вопрос — вот, Вы распечатываете результирующие Рабочие книги. И только? А потом они Вам не требуются, и Вы их удаляете? Если так, то вовсе нет никакой нужды в сохранении Рабочих книг: можно удалить все столбцы, кроме num, подогнать ширину столбца num по содержимому, отправить результат на печать и закрыть Рабочую книгу, никуда не сохраняя :). Как Вам такое? Или же Вы там ещё каким-то хитрым образом подгоняете, масштабируете, соединяете результирующие данные?
Что-то не запускается скрипт. Как его запустить? Дак нам приходит ежедневно по 100 таких файлов. Это ж нужно каждый так открывать удалять печатать и т д
А все . Работает. А вот такой вопрос. А нельзя ли чтобы столбец NUM шел не просто вниз а по всему листу?. ПРи печати хорошая Экономия бумаги получится. То что я вам кинул это самый маленький файл. Так если на печатаь бросать результат получается на 8 листов аж
Что-то не запускается скрипт. Как его запустить? »
Сохранить код в файл с расширением .vbs, указав свои пути к исходному и целевому каталогам. Запустить двойным щелчком.
Дак нам приходит ежедневно по 100 таких файлов. Это ж нужно каждый так открывать удалять печатать и т д »
Так я и предлагаю: если Вы только печатаете результирующие Рабочие книги, и ничего больше — сделать так, чтобы Вам не приходилось каждую исправленную Рабочую книгу открывать, печатать и закрывать. Пробуем, делаем?
romfus, а что с текущим скриптом — заработал он у Вас, або нет?
Заработал да. Я отписался что работает
Давайте. Попробуем »
Пробуйте:
Option Explicit
Dim strSourceFolder
Dim objFSO
Dim objFile
Dim objExcel
If WScript.Arguments.Count = 1 Then
strSourceFolder = WScript.Arguments.Item(0)
Set objExcel = Nothing
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strSourceFolder) Then
For Each objFile In objFSO.GetFolder(strSourceFolder).Files
Select Case LCase(objFSO.GetExtensionName(objFile.Name))
Case "xls", "xlsx"
If objExcel Is Nothing Then
Set objExcel = WScript.CreateObject("Excel.Application")
End If
With objExcel
With .Workbooks.Open(objFile.Path)
With .Worksheets.Item(1)
If StrComp(.Cells(1, 1).Value, "num", vbTextCompare) = 0 Then
With .UsedRange.EntireColumn
.Offset(0, 1).Delete
.AutoFit
End With
.PrintOut
Else
WScript.Echo "Can't find [num] in A1 cell in first worksheet in [" & objFile.Name & "] workbook."
End If
End With
.Close False
End With
End With
Case Else
' Nothing to do
End Select
Next
objExcel.Quit
Set objExcel = Nothing
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 2
End If
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>"
WScript.Quit 1
End If
Set objFSO = Nothing
WScript.Quit 0
Путь к исходной папке указывается параметром скрипта (также можно просто перетащить исходную папку на скрипт в Проводнике).
Usage cscript.exe //nologo "3.vbs" <Source folder> как тут быть?
а все разобрался
Заработал да. Я отписался что работает »
Ясно. Я не увидел то, что Вы дописывали.
А вот такой вопрос. А нельзя ли чтобы столбец NUM шел не просто вниз а по всему листу?. ПРи печати хорошая Экономия бумаги получится. То что я вам кинул это самый маленький файл. Так если на печатаь бросать результат получается на 8 листов аж »
Можно будет попробовать. Сверху вниз, затем слева направо, затем опять сверху вниз, затем опять слева направо, …, затем следующий лист и повторяем то же самое, так?
Usage cscript.exe //nologo "3.vbs" <Source folder> как тут быть?
а все разобрался »
Удобнее всего Вам будет просто перетаскивать папку на скрипт в Проводнике — подхватить папку, перетащить и бросить её на скрипт.
Да да. Я тут разобрался уже
так да »
Тогда давайте, чтоб не заниматься излишней универсализацией (да я и не уверен, что такое возможно в принципе, всё ж это не Microsoft Access), Вы посчитаете, сколько столбцов у Вас, на Вашем принтере, умещаются на одной странице при печати (и, кстати, мы будем вставлять для наглядности по короткому пустому вспомогательному столбцу между основными?) и сколько строк у Вас умещается на одной странице при печати. От этого и будем танцевать.
7 строк по горизонтали и 56 по вертикали
romfus, Вы точно уверены насчёт семи столбцов? У меня токмо шесть помещаются. И — по короткому пустому столбцу между столбцами будем вставлять для наглядности, або нет?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.