2014-10-10 5 views
1

Я работаю с несколькими файлами Excel (копирование информации из главного файла в более мелкие более конкретные файлы для отчетов), и у меня возникли проблемы с получением моего главного файла для форматирования файлов области, когда он помещается информация в них. Вот соответствующий код:Формирование листа Excel из другой книги VBA

Dim xl As Excel.Application 
Dim I_workbook As Excel.Workbook 
Dim ws As Excel.Worksheet 
Set xl = CreateObject("Excel.Application") 
Set I_workbook = xl.Workbooks.Open("H:\....") 
Set ws = I_workbook.Sheets("Sheet1") 

'... Enter information into the ws. 
     'This part works so I know I have proper objects and such 



Dim rng As Range 
For Each rng In ws.Range("B2", "B" & (BotRow - TopRow + 2)) 
     rng.Select 
     Selection.NumberFormat = "General" 
     'rng.NumberFormat = "General" 
Next rng 

I_workbook.Save 
xl.Quit 

Я пытаюсь взять все клетки, которые я положил информацию в разделы и отформатировать их как число. Иногда они являются числами и сыновьями, они являются цифрами, за которыми следует письмо. Их источником является текстовое поле в базе данных, поэтому excel читает их как текст, а затем помещает в угол красивый раздражающий зеленый треугольник, который раздражает кого-то высоко, поэтому я сижу ...

Прокомментированная строка rng.NumberFormat = "General" - еще одна попытка мой, который не сработал.

Благодаря

ответ

2

rng.Numberformat должен работать, если нет больше к истории, но на самом деле не нужно тросика, чтобы сделать это:

ws.Range("B2", "B" & (BotRow - TopRow + 2)).Numberformat = "General" 

будет достаточно. Если данные в ячейках являются номерами, хранящимися в виде текста, вы можете использовать примерно следующее:

With ws.Range("B2", "B" & (BotRow - TopRow + 2)) 
    .Numberformat = "General" 
    .Value2 = .Value2 
End With 
+0

Нет кубиков. 'ws.Range (" B2 "," B "& (BotRow - TopRow + 2)). NumberFormat =" General "' Может ли это быть связано с тем, что он вставлен там из ссылки на базу данных? Когда я его открываю, я могу сделать это вручную, используя предупреждение форматирования, но оно не исправляет его, используя ячейки щелчка правой кнопкой мыши -> формат -> номер -> общий. Я чувствую, что если что-то будет работать так. Я попытался записать макрос, когда сделал это, используя предупреждение зеленого треугольника, но ничего не получил. Спасибо – Evan

+0

Код изменит формат ячейки. Если он не изменяет отображаемые данные в ячейке, это совсем другая вещь - это означает, что у вас есть текст. См. Мое редактирование. – Rory

+0

Это сделало, спасибо. Почему изменение значения позволяет переформатировать? – Evan