O PHP é o único recurso que eu conheço que conecta o MySQL com o HTML, e o Excel é o único recurso que o meu irmão Jorge conhece.
Eu ainda não tenho a menor ideia de como fazer o pedido de compra, então decidi usar o PHP para exportar a tabela tbprod, assim:
listagem parcial do produto.php
function exportar() {
$filename = "tbprod.csv";
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Pragma: no-cache');
header('Expires: 0');
$file = fopen('php://output', "w");
fputcsv($file, array('codprod', 'un', 'prod','custo','marg',
'codbar','loc','emb','cf','codforn','estoque','venda','cfop'), ',', '"', "\\");
$result = (new conn)->select("* from tbprod where loc <> 'a24' order by prod");
if ($result && count($result) > 0) {
foreach($result as $row) {
fputcsv($file, (array)$row, ',', '"', "\\");
}
require('menuView.php');
echo "Dados exportados com sucesso para " . $filename;
} else {
echo "Nenhum registro encontrado na tabela tbprod.";
}
fclose($file);
}
Para o meu irmão usar o arquivo tbprod.csv, eu criei a planilha SoFuncionaNoPC.xlms, com o seguinte código VBA
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
' Adicione o código que você deseja executar ao dar duplo clique na célula
If Not Intersect(Target, Me.Range("A1:Z100")) Is Nothing Then
Dim valorProcurado As String
Dim csvFilePath As String
Dim csvFile As Workbook
Dim csvSheet As Worksheet
Dim activeSheet As Worksheet
Dim found As Range
Dim linhaAtual As Long
Dim colunaAtual As Long
' Define o valor a ser procurado
valorProcurado = ActiveCell.Value
linhaAtual = ActiveCell.Row
colunaAtual = ActiveCell.Column
' Caminho relativo para o arquivo CSV (no mesmo diretório da planilha atual)
csvFilePath = ThisWorkbook.Path & "\tbprod.csv"
' Abre o arquivo CSV de forma oculta
Application.ScreenUpdating = False
Set csvFile = Workbooks.Open(csvFilePath)
Set csvSheet = csvFile.Sheets(1)
csvFile.Windows(1).Visible = False
Set activeSheet = ThisWorkbook.activeSheet
' Procura pelo valor na coluna A (primeira coluna)
Set found = csvSheet.Columns(1).Find(What:=valorProcurado, LookIn:=xlValues, LookAt:=xlWhole)
' Se encontrar o valor, copia a linha correspondente para a planilha ativa
If Not found Is Nothing Then
activeSheet.Cells(linhaAtual, colunaAtual + 1).Value = found.Offset(0, 2).Value
Else
MsgBox "Valor " & valorProcurado & " não encontrado no arquivo CSV.", vbExclamation
End If
' Fecha o arquivo CSV
csvFile.Close SaveChanges:=False
Cancel = True ' Cancela a edição padrão de célula ao dar duplo clique
End If
End Sub
Esse código vai no painel do código da planilha ativa.
Por enquanto o programa é bem inútil, mas eu gostei.
O meu irmão vai em uma célula qualquer, digita um valor, e ao dar um duplo clique na célula, o VBA vai até o tbprod.csv e traz a descrição do produto, se ele encontrar e coloca do lado da célula ativa.
Pergunta
Frank K Hosaka
O PHP é o único recurso que eu conheço que conecta o MySQL com o HTML, e o Excel é o único recurso que o meu irmão Jorge conhece.
Eu ainda não tenho a menor ideia de como fazer o pedido de compra, então decidi usar o PHP para exportar a tabela tbprod, assim:
listagem parcial do produto.php function exportar() { $filename = "tbprod.csv"; header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename="' . $filename . '"'); header('Pragma: no-cache'); header('Expires: 0'); $file = fopen('php://output', "w"); fputcsv($file, array('codprod', 'un', 'prod','custo','marg', 'codbar','loc','emb','cf','codforn','estoque','venda','cfop'), ',', '"', "\\"); $result = (new conn)->select("* from tbprod where loc <> 'a24' order by prod"); if ($result && count($result) > 0) { foreach($result as $row) { fputcsv($file, (array)$row, ',', '"', "\\"); } require('menuView.php'); echo "Dados exportados com sucesso para " . $filename; } else { echo "Nenhum registro encontrado na tabela tbprod."; } fclose($file); }
Para o meu irmão usar o arquivo tbprod.csv, eu criei a planilha SoFuncionaNoPC.xlms, com o seguinte código VBA
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ' Adicione o código que você deseja executar ao dar duplo clique na célula If Not Intersect(Target, Me.Range("A1:Z100")) Is Nothing Then Dim valorProcurado As String Dim csvFilePath As String Dim csvFile As Workbook Dim csvSheet As Worksheet Dim activeSheet As Worksheet Dim found As Range Dim linhaAtual As Long Dim colunaAtual As Long ' Define o valor a ser procurado valorProcurado = ActiveCell.Value linhaAtual = ActiveCell.Row colunaAtual = ActiveCell.Column ' Caminho relativo para o arquivo CSV (no mesmo diretório da planilha atual) csvFilePath = ThisWorkbook.Path & "\tbprod.csv" ' Abre o arquivo CSV de forma oculta Application.ScreenUpdating = False Set csvFile = Workbooks.Open(csvFilePath) Set csvSheet = csvFile.Sheets(1) csvFile.Windows(1).Visible = False Set activeSheet = ThisWorkbook.activeSheet ' Procura pelo valor na coluna A (primeira coluna) Set found = csvSheet.Columns(1).Find(What:=valorProcurado, LookIn:=xlValues, LookAt:=xlWhole) ' Se encontrar o valor, copia a linha correspondente para a planilha ativa If Not found Is Nothing Then activeSheet.Cells(linhaAtual, colunaAtual + 1).Value = found.Offset(0, 2).Value Else MsgBox "Valor " & valorProcurado & " não encontrado no arquivo CSV.", vbExclamation End If ' Fecha o arquivo CSV csvFile.Close SaveChanges:=False Cancel = True ' Cancela a edição padrão de célula ao dar duplo clique End If End Sub
Esse código vai no painel do código da planilha ativa.
Por enquanto o programa é bem inútil, mas eu gostei.
O meu irmão vai em uma célula qualquer, digita um valor, e ao dar um duplo clique na célula, o VBA vai até o tbprod.csv e traz a descrição do produto, se ele encontrar e coloca do lado da célula ativa.
Editado por Frank K HosakaLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.