|
|
|
| Доброго всем дня! И с праздником! Пытаюсь освоить хотя бы азы экспорта в эксель, вчера наваял что то вроде :
Public Sub Export()
Dim objExcel As Excel.Application
Set objExcel = New Excel.Application
With objExcel
.Visible = True
.Workbooks.Add
.Range("a1") = Forms.Company. [company]
.Range("a1").ColumnWidth = 23.29
End With
End Sub
Вопрос: тут идет ссылка на конкретное значение, а как вывести весь список значений из этого поля?
Заранее спасибо. | |
|
| |
|
|
|
| Допустим, источником формы является таблица "Company" с полем "Company", тогда так:
Dim rs As Object
Set rs = CurrentDb.OpenRecordset("SELECT Company FROM Company")
.Range("a1").CopyFromRecordset rs
|
| |
|
| |
|
|
|
| Огромное спасибо! а не подскажите где тут ошибка? После того как один раз создаёт лист эксель второй раз выдает пустую страницу...надо перезагружать акс
Dim objExcel As Object
Set objExcel = CreateObject("Excel.application")
objExcel.Workbooks.Add
objExcel.Application.Visible = True
With objExcel
ActiveCell.FormulaR1C1 = "Компания"
Range("B1").Select
Columns("B:B").ColumnWidth = 23.29
Range("B1").Select
ActiveCell.FormulaR1C1 = "Название"
Range("B3").Select
End With | |
|
| |
|
|
|
| Не совсем допонимаю к чему все это?
Вот код. Работает на кнопку в форме. В ней подчиненными формами в данном случае сводные таблицы.
If Me.НаборВкладок249.Value = 1 Then
Forms!Обследования![Сводная таблица статистики1].SetFocus
Else
If Me.НаборВкладок249.Value = 2 Then
Forms!Обследования![Сводная таблица2].SetFocus
Else
End If
End If
DoCmd.RunCommand (acCmdPivotTableExportToExcel)
Тут 2 вкладки с разными сводными таблицами. Не суть. Последняя строка переводит то, что на экране в экслель без замечаний. Или у вас шаблон в экселе, а в необходимые места вставляются данные? Если так, то хотелось бы глубже в тему вникнуть. | |
|
| |
|
|
|
| Странно вы пишите ...
Надо хотя бы так:
With objExcel
.ActiveCell.FormulaR1C1 = "Компания"
.Range("B1").Select
.Columns("B:B").ColumnWidth = 23.29
.Range("B1").Select
.ActiveCell.FormulaR1C1 = "Название"
.Range("B3").Select
End With
|
но Range и Columns я бы использовал для объекта Workshheet, а не для Application.
Видимо, если использовать Application, как у вас, то обращение будет к ActiveSheet | |
|
| |
|
|
|
| Попробуйте так:
Dim objExcel As Object, wb As Object, rng As Object
Set objExcel = CreateObject("Excel.application")
objExcel.Visible = True
Set wb = objExcel.Workbooks.Add
Set rng = wb.WorkSheets(1).Range("A1")
rng.Value = "Компания"
With rng.Offset(,1)
.EntireColumn.ColumnWidth = 23.29
.Value = "Название"
End With
Set rng = Nothing
Set wb = Nothing
Set objExcel = Nothing
|
| |
|
| |
|
|
|
| Всем спасибо! А как менять цвет фона, ячейки в экселе? | |
|
| |
|
|
|
| к сожалению не помогает при первой загрузке все цвета как должны быть при закрытии и при втором открытии все цвета теряются...закрываю акс, открываю вновь, при первой загрузке все цвета на месте, при второй пропадают, не пойму почему....
Dim objExcel As Excel.Application
Dim rs As Object
Set rs = CurrentDb.OpenRecordset("SELECT Company FROM Company")
Set objExcel = New Excel.Application
With objExcel
.Visible = True
.Workbooks.Add
.Range("a1").CopyFromRecordset rs
.Range("a1").ColumnWidth = 23.29
.Range("a1").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With | |
|
| |
|
|
|
| .Color = 65535
Замените на .ColorIndex = (а вот с цветовой гаммой точнее с номерами цветов определитесь сами у Excel-я они свои красный 3 а желный вроде 6 и уж не 65535 ) | |
|
| |
|
|
|
| дело в том что он мне в первый раз выдает все как надо, цвет желтый, а во второй раз не выдает... | |
|
| |
|
|
|
| >With Selection.Interior
Будьте внимательнее, Selection это чье свойство? Application? Тогда надо так:
| |
|
| |
|
|
|
| огромное спасибо, все встало на свои места! | |
|
| |
|
|
|
| Скажите пожалуйста, а если я создам шаблон экселевского файла, предположем на диске С:\ и назову отчет1, как написать ссылку на этот объект? | |
|
| |
|
|
|
| я делаю вот так...
Dim jkl As String
jkl = CurrentProject.Path 'считываем путь проекта
Dim dfr As Object
Dim dfg As Object
Set dfg = CreateObject("Excel.Sheet")
Set dfr = dfg.Parent
dfr.Workbooks.Add jkl & "\ШаблонОтчета.xls" 'открываем шаблон
dfr.Visible = False 'True если показать окно Excel, но лучше потом когда всю инфу выгрузишь
dfr.ActiveWindow.WindowState = xlMaximized
'далее dfr. и чего хочешь сделать dfr.cells(1,1)="Всякая ерунда" запишет в ячейку А1 фразу всякая ерунда | |
|
| |
|
|
|
| Спасибо | |
|
| |
|
|
|
| и еще один вопросик есть следующее:
Dim Company As Object
Set Company = CurrentDb.OpenRecordset("SELECT Company,Project FROM Company")
я незнаю как много будет компаний будет, project предположим это какая то сумма, как мне в последней строчке вписать сумму этих значений...
Знаю вот так выводиться сумма, но незнаю на каком значении "В"
.Range("B7") = "=SUM(R[-4]C:R[-1]C)"
пробую Dim nRow
nRow=nRow+1
но что то не так... | |
|
| |
|
|
|
| dim countrow as long
countrow=company.recordcount
вроде так
countrow - количество строк в вашем запросе | |
|
| |
|
|
|
| а есть какие нибудь примеры, что то не получается | |
|
| |
|
|
|
| ну тогда так
dim countrow as long
company.MoveLast
countrow=company.recordcount | |
|
| |
|
39 Кб. |
|
| этой строчкой он вырывает из запроса company последнюю компанию и Project соответственно, а мне нужен весь список, и в последней строчке предположим разместить тот же recordcount пробую так:
Dim countrow As Long
Company.MoveLast
countrow = Company.RecordCount
.Range("B" & countrow) = "20"
на всякий случай прикрепил файл, может я по кривому объясняю... | |
|
| |
|
|
|
| да понятно все это .....
countrow это количество строк в вашем recordset-e т.е. если раньше вы не знали сколько в нем строк то теперь знаете
ни что не мешает Вам вернуться на первую запись Company.MoveFirst
организовать цикл через тот же For Next (количество строк уже известно)
выгружать инфу в Excel построчно например .Range("A" & i)=Company.Column(0) где i переменная цикла
потом перейти на другую запись recordset-а Company.MoveNext
можно заодно подсчитывать сумму
да - посмотрите в хелпе что такое Cells в некоторых случаях гораздо удобнее чем Range (особенно при организации цикла) (если точно то я уже забыл когда Range использовал) | |
|
| |
|
|
|
| Подскажите, что не так ? есть таблица, есть экселевский файл, но в эксель не экспортирует... заранее благодарю.
Dim objXls As Object
Dim rst As Recordset
Dim i As Long
Set rst = CurrentDb.OpenRecordset("Company")
Set objXls = GetObject("C:\Documents and Settings\vasiliy.OMT\Мои документы\ERTE.xls")
objXls.Worksheets("Лист1").Activate
i = 2
Do While Not rst.EOF
objXls.Worksheets("Лист2").Cells(i, 2) = rst![Company1]
objXls.Worksheets("Лист2").Cells(i, 3) = rst![Project]
rst.MoveNext
i = i + 1
Loop
objXls.Worksheets("Лист2").Cells(i, 2).Formula = "=SUM(B2" & i - 1 & ")"
objXls.Worksheets("Лист2").Cells(i, 3).Formula = "=SUM(C2:C" & i - 1 & ")"
rst.Close
Set rst = Nothing
objXls.Application.Workbooks("Книга1.xls").Save
objXls.Application.Quit
Set objXls = Nothing | |
|
| |
|
|
|
| , но в эксель не экспортирует. |
подробнее | |
|
| |
|
|
|
| пытаюсь выгрузить таблицу Company, с полями Company1 и Project в excel, необходимо чтоб в конце поля Project выдавал сумму значений (в excel) так как я не силен в этом прочел на форуме о таком способе но выгрузка не идет... | |
|
| |
|
|
|
| подробнее что не идет, какие сообщения | |
|
| |
|
|
|
| ошибок не каких не выдает, как будто грузит, песочные часы появляются, и все...захлебывается | |
|
| |
|
|
|
| в процессах после этого Excel висит?
Проверьте файл
C:\Documents and Settings\vasiliy.OMT\Мои документы\ERTE.xls
точно есть?
Попробуйте перенести файл
ERTE.xls
куда нибуть в папку с коротким латинским именем например c:/test/ERTE.xls
и выполнить код с таким путем к файлу | |
|
| |
|
|
|
| Excel вообще не грузится, файл точно есть, перенес файл, ничего не изменилось, я думаю где то в написании кода ошибка. | |
|
| |
|
|
|
| после
Set objXls = GetObject("C:\Documents and Settings\vasiliy.OMT\Мои документы\ERTE.xls")
поставьте
objXls.Visible = true
обработчик ошибок есть? нигде resume next не стоит? Попробуйте в отладчике по шагам пройти процедуру и посмотреть все ли выполняется | |
|
| |
|
|
|
| Конечно, не грузится, т.к. Вы используете GetObject, т.е. файл уже должен быть загружен. ;-) | |
|
| |
|
|
|
| я вам в (08.11.2009 в 14:03) посылал код - работает точно | |
|
| |
|
|
|
| я видел, все у меня получилось, большое спасибо, пытаюсь другие методы освоить
А подскажите если в форме имеется подчиненная форма, ее в тот же запрос прописывать нужно? или можно другой записать? например :
dim flightsZap As Object
Set flightsZap = CurrentDb.OpenRecordset("SELECT JS, Flights FROM Companies")
или добавлять к companies?
Dim Companies As Object
Set Companies = CurrentDb.OpenRecordset("SELECT Company1, Project FROM Companies") | |
|
| |
|
|
|
| Это от задумки зависит там ведь левое и правое объединение есть в запросе
тут полная свобода творчества
а на счет GetObject - тоже давно пытался пользоваться - ни чего не получилось и в итоге пользуюсь тем что Вам послал и не забиваю голову
Работает и пускай работает | |
|
| |
|
|
|
| Пытаюсь сделать фильтр в запросе, что то вроде:
Set rs = CurrentDb.OpenRecordset("SELECT Company FROM Company WHERE company = Forms!Company! Company1")
не фурыжит , а в запросе получается, вписываешь в условие отбора Forms!Company! Company1 и все... вопрос почему не получается в vba ? | |
|
| |
|
|
|
|
Set rs = CurrentDb.OpenRecordset("SELECT Company FROM Company WHERE company = " & Forms!Company!Company1 )
|
если Forms!Company! Company1 тестовое, то так
Set rs = CurrentDb.OpenRecordset("SELECT Company FROM Company WHERE company = '" & Forms!Company!Company1 & "'")
|
и еще непонятно почему пробел перед Company1 | |
|
| |
|
|
|
| Спасибо! Пробел я случайно при копировании поставил. | |
|
| |
|
|
|
| Всем доброго дня! Подскажите пожалуйста почему ругается на запрос?
Set Zap = CurrentDb.OpenRecordset("SELECT Company, data FROM CompInf
WHERE data = " & Forms!Otchet![Конец])
номер ошибки 3075, число содержит синтаксическую ошибку в выражении запроса 'data =04.12.200'.
| |
|
| |
|
|
|
| неужели никто не подскажет где косяк? | |
|
| |
|
|
|
|
| Спасибо за ответ, только ту же самую ошибку выдает | |
|
| |
|
|
|
| переделац
StrSQL="SELECT Company, data FROM CompInf WHERE data = " & Forms!Otchet![Конец]
Set Zap = CurrentDb.OpenRecordset(SrtSQL)
и посмотри что пишет тебе в StrSQL
и еще проверь дату чтоб не вышло 30/12/2009 - для акса с его американским форматом это жопка у них месяц/день/год - 30-го месяца не бывает | |
|
| |
|
|
|
| Спасибо, получилось, только вот так:
WHERE Data BETWEEN #" & Format(Forms!Otchet![Na4].Value, "mm-dd-yyyy") & "# AND #" & Format(Forms!Otchet![Kon].Value, "mm-dd-yyyy") & "# | |
|
| |