Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por Diego100ges
Posts
#46978
Pessoal, boa tarde.
Estou utilizando um código VBA para salvar dados de uma pasta de trabalho em outra (que uso para banco de dados), o código está funcionando bem, mas percebi um problema, ele não está salvando no lugar correto(que está especificado no código) ele acaba salvando na última aba em que estive na planilha Base(banco de dados citado). Podem revisar meu código e ver se está correto?

Atenciosamente.

Private Sub Lançamento_medições()
Application.ScreenUpdating = False

Dim WP As Workbook 'Pasta atual
Dim WS As Workbook 'Base
Dim WSSheet As Worksheet 'Planilha destino
Dim WPSheet As Worksheet 'Planilha Atual
Dim rngWP As Range 'região com dados
Dim resultado As VbMsgBoxResult 'Msg box


resultado = MsgBox("Tem certeza que deseja prosseguir com esta ação?", vbYesNo, "Tomando uma decisão")
If resultado = vbNo Then
MsgBox "Medições SCDE NÃO FORAM cadastradas"
Exit Sub
End If

Set WP = ActiveWorkbook
Set WPSheet = WP.Sheets("Lançamento de medições SCDE")

WPSheet.Select
Range("LanMedicoes").Select
Selection.Copy
Application.CutCopyMode = False
Selection.Copy

Set WS = Workbooks.Open("Y:\Diego Matos\Base.xlsx")
Set WSSheet = WS.Sheets("Base-Medicoes-SCDE")
Range("a2:g2").Select
Do
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until ActiveCell = ""
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.DisplayAlerts = False

WS.Close savechanges:=True

Application.DisplayAlerts = True

WP.Activate
WP.Sheets("Lançamento de medições SCDE").Select

WPSheet.Range("A1").Select

MsgBox "Medições SCDE cadastradas com sucesso", vbOKOnly

Application.ScreenUpdating = True
ActiveWorkbook.RefreshAll

MsgBox ("A planilha será atualizada")
End Sub
Por babdallas
#46982
Testa isso. Não sei se está funcionando porque você não anexou a pasta de trabalho para testar.
Código: Selecionar todos
Private Sub Lançamento_medições()
    Application.ScreenUpdating = False
    
    Dim WP              As Workbook 'Pasta atual
    Dim WS              As Workbook 'Base
    Dim WSSheet         As Worksheet 'Planilha destino
    Dim WPSheet         As Worksheet 'Planilha Atual
    Dim rngWP           As Range 'região com dados
    Dim resultado       As VbMsgBoxResult 'Msg box
    Dim lngUltLin       As Long
    
    resultado = MsgBox("Tem certeza que deseja prosseguir com esta ação?", vbYesNo, "Tomando uma decisão")
    If resultado = vbNo Then
        VBA.MsgBox "Medições SCDE não foram cadastradas"
        Exit Sub
    End If
    
    Set WP = ThisWorkbook
    Set WPSheet = WP.Sheets("Lançamento de medições SCDE")
    
    Set WS = Workbooks.Open("Y:\Diego Matos\Base.xlsx")
    Set WSSheet = WS.Sheets("Base-Medicoes-SCDE")
    
    lngUltLin = WSSheet.Cells(WSSheet.Rows.Count, 1).End(xlUp).Row
    
    WSSheet.Range("A" & lngUltLin + 1).Resize(WPSheet.Range("LanMedicoes").Rows.Count, _
                                            WPSheet.Range("LanMedicoes").Columns.Count).Value = _
                                                                            WPSheet.Range("LanMedicoes").Value
    Application.DisplayAlerts = False
    
    WS.Close savechanges:=True
    
    Application.DisplayAlerts = True
    
    WP.Activate
    WP.Sheets("Lançamento de medições SCDE").Select
    WPSheet.Range("A1").Select
    
    MsgBox "Medições SCDE cadastradas com sucesso", vbOKOnly
    Application.ScreenUpdating = True
    ThisWorkbook.RefreshAll
End Sub
Por eduardogrigull
Posts
#46983
Coloque: WSSheet.Activate na linha antes de: Range("a2:g2").Select...
Ficaria assim:
Código: Selecionar todos
Set WSSheet = WS.Sheets("Base-Medicoes-SCDE")
WSSheet.Activate
Range("a2:g2").Select
Por Diego100ges
Posts
#46984
babdallas escreveu:Testa isso. Não sei se está funcionando porque você não anexou a pasta de trabalho para testar.
Código: Selecionar todos
Private Sub Lançamento_medições()
    Application.ScreenUpdating = False
    
    Dim WP              As Workbook 'Pasta atual
    Dim WS              As Workbook 'Base
    Dim WSSheet         As Worksheet 'Planilha destino
    Dim WPSheet         As Worksheet 'Planilha Atual
    Dim rngWP           As Range 'região com dados
    Dim resultado       As VbMsgBoxResult 'Msg box
    Dim lngUltLin       As Long
    
    resultado = MsgBox("Tem certeza que deseja prosseguir com esta ação?", vbYesNo, "Tomando uma decisão")
    If resultado = vbNo Then
        VBA.MsgBox "Medições SCDE não foram cadastradas"
        Exit Sub
    End If
    
    Set WP = ThisWorkbook
    Set WPSheet = WP.Sheets("Lançamento de medições SCDE")
    
    Set WS = Workbooks.Open("Y:\Diego Matos\Base.xlsx")
    Set WSSheet = WS.Sheets("Base-Medicoes-SCDE")
    
    lngUltLin = WSSheet.Cells(WSSheet.Rows.Count, 1).End(xlUp).Row
    
    WSSheet.Range("A" & lngUltLin + 1).Resize(WPSheet.Range("LanMedicoes").Rows.Count, _
                                            WPSheet.Range("LanMedicoes").Columns.Count).Value = _
                                                                            WPSheet.Range("LanMedicoes").Value
    Application.DisplayAlerts = False
    
    WS.Close savechanges:=True
    
    Application.DisplayAlerts = True
    
    WP.Activate
    WP.Sheets("Lançamento de medições SCDE").Select
    WPSheet.Range("A1").Select
    
    MsgBox "Medições SCDE cadastradas com sucesso", vbOKOnly
    Application.ScreenUpdating = True
    ThisWorkbook.RefreshAll
End Sub
Funcionou, o código passou a gravar, porém está apresentando um erro desconhecido pra mim

[DataFormat.Error] Valor de célula inválido '#N/A'.

Sabe o que pode ser?
Por Diego100ges
Posts
#46985
eduardogrigull escreveu:Coloque: WSSheet.Activate na linha antes de: Range("a2:g2").Select...
Ficaria assim:
Código: Selecionar todos
Set WSSheet = WS.Sheets("Base-Medicoes-SCDE")
WSSheet.Activate
Range("a2:g2").Select
Também funcionou, gravou no lugar correto, mas passou a apresentar o mesmo erro da solução apresentada pelo amigo ali em cima
[DataFormat.Error] Valor de célula inválido '#N/A'.

Sabe o que pode ser?
Por Diego100ges
Posts
#46986
Prezados encontrei o Erro.

Muito obrigado com a ajuda!
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord